blob: 578bacfbe7267b433ee221051b34d37a843e5ea8 [file] [log] [blame]
/*
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*/
function ContextHeader (){
var userIdentifier;
var soa_service_epr = new SOAServiceEPR();
var workflow_monitoring_context = new WorkflowMonitoringContext();
var workflow_scheduling_context = new WorkflowSchedulingContext();
var workflow_output_data_handling = new WorkflowOutputDataHandling();
var security_context = new SecurityContext();
this.getUserIdentifier = function (){
return userIdentifier;
};
this.setUserIdentifier = function (param){
userIdentifier = param;
};
this.getSOAServiceEPR = function (){
return soa_service_epr;
};
this.setSOAServiceEPR = function (param){
if(param instanceof SOAServiceEPR){
soa_service_epr = param;
}
};
this.getWorkflowMonitoringContext = function (){
return workflow_monitoring_context;
};
this.setWorkflowMonitoringContext = function (param){
if(param instanceof WorkflowMonitoringContext){
workflow_monitoring_context = param;
}
};
this.getWorkflowSchedulingContext = function (){
return workflow_scheduling_context;
};
this.setWorkflowSchedulingContext = function (param){
if(param instanceof WorkflowSchedulingContext){
workflow_scheduling_context = param;
}
};
this.getWorkflowOutputDataHandling = function (){
return workflow_output_data_handling;
};
this.setWorkflowOutputDataHandling = function (param){
if( param instanceof WorkflowOutputDataHandling) {
workflow_output_data_handling = param;
}
};
this.getSecurityContext = function () {
return security_context;
};
this.setSecurityContext = function (param) {
if(param instanceof SecurityContext){
security_context = param;
}
};
}
/*
function UserIdentifier (){
var user_identifier;
this.setIdentifier = function (identifier) {
user_identifier = identifier;
}
this.getIdentifier = function (){
return user_identifier;
}
}*/
function SOAServiceEPR (){
var gfacURL
var registryURL;
var resourceSchedulerURL;
var hostDescriptor;
this.getGfacURL = function (){
return gfacURL;
};
this.setGfacURL = function (url){
gfacURL = url;
};
this.getRegistryURL = function (){
return registryURL;
};
this.setRegistryURL = function (regURL){
registryURL = regURL;
};
this.getResorceSchedulerURL = function (){
return resourceSchedulerURL;
};
this.setResourceSchedulerURL = function (resURL) {
resourceSchedulerURL = resURL;
};
this.getHostDescriptor = function (){
return hostDescriptor;
};
this.setHostDescriptor = function (hostDes){
hostDescriptor = hostDes;
};
}
function WorkflowMonitoringContext(){
var experimentId,
workflowInstanceId,
workflowTemplateId,
workflowNodeId,
workflowTimeStep,
serviceInstanceId,
serviceReplicaId,
eventPublishEPR,
notificationTopic,
errorPublishEPR,
msgBoxEPR;
this.getExperimentId = function (){
return experimentId;
};
this.setExperimentId = function (exId){
experimentId = exId;
};
this.getWorkflowInstanceId = function (){
return workflowInstanceId;
};
this.setWorkflowInstanceId = function (wfId){
workflowInstanceId = wfId;
};
this.getWorkflowTemplateId = function (){
return workflowTemplateId;
};
this.setWorkflowTemplateId = function (wfTemplateId){
workflowTemplateId = wfTemplateId;
};
this.getWorkflowNodeId = function (){
return workflowNodeId;
};
this.setWorkflowNodeId = function (wfNodeId){
workflowNodeId = wfNodeId;
};
this.getWorkflowTimeStep = function (){
return workflowTimeStep;
};
this.setWorkflowTimeStep = function (wts){
workflowTimeStep = wts;
};
this.getServiceInstanceId = function (){
return serviceInstanceId;
};
this.setServiceInstanceId = function (serInsId){
serviceInstanceId = serInsId;
};
this.getServiceReplicaId = function (){
return serviceReplicaId;
};
this.setServiceReplicaId = function (serRepId){
serviceReplicaId = serRepId;
};
this.getEventPublishEPR = function (){
return eventPublishEPR;
};
this.setEventPublishEPR = function (eventPubEPR){
eventPublishEPR = eventPubEPR;
};
this.getNotificationTopic = function (){
return notificationTopic;
};
this.setNotificationTopic = function (notTopic){
notificationTopic = notTopic;
};
this.getErrorPublishEPR = function (){
return errorPublishEPR;
};
this.setErrorPublishEPR = function (errorPubEPR){
errorPublishEPR = errorPubEPR;
};
this.getMsgBoxEPR = function (){
return msgBoxEPR;
};
this.setMsgBoxEPR = function (msgBoxEpr){
msgBoxEPR = msgBoxEpr;
};
}
function WorkflowSchedulingContext (){
var appSchedulingContexts = [];
var nameValuePairs = [];
this.getApplicationSchedulingContexts = function (){
return appSchedulingContexts;
};
this.addApplicationSchedulingContext = function (appScheContext){
if(appScheContext instanceof ApplicationSchedulingContext) {
appSchedulingContexts.push(appScheContext);
}else{
// TODO handle this.
}
};
this.getNameValuePairs = function (){
return nameValuePairs;
};
this.addNameValuePair = function (nvPair) {
if(nvPair instanceof NameValuePair) {
nameValuePairs.push(nvPair)
}else{
// TODO handle this.
}
};
}
function WorkflowOutputDataHandling(){
var appOutputDataHandles = [];
this.getApplicationOutputDataHandles = function (){
return appOutputDataHandles;
};
this.addApplicationOutputDataHandle = function (appOutputDataContext){
if(appOutputDataContext instanceof ApplicationOutputDataContext) {
appOutputDataHandles.push(appOutputDataContext);
}else{
// TODO handle this.
}
};
}
function SecurityContext(){
var gridProxy,
gridMyProxyRepo = new GridProxyRepository(),
sshAuthentication = new SSHAuthentication(),
credentialManagementService = new CredentialManagementService(),
amazonWebservice = new AmazonWebservice();
this.getGridProxy = function (){
return gridProxy;
};
this.setGridProxy = function (param){
gridProxy = param;
};
this.getGridMyProxyRepo = function (){
return gridMyProxyRepo;
};
this.setGridMyProxyRepo = function (param){
if(param instanceof GridProxyRepository){
gridMyProxyRepo = param;
}
};
this.getSSHAuthentication = function (){
return sshAuthentication;
};
this.setSSHAuthentication = function (param){
if(param instanceof SSHAuthentication){
sshAuthentication = param;
}
};
this.getCredentialManagementService = function (){
return credentialManagementService;
};
this.setCredentialManagementService = function (param){
if(param instanceof CredentialManagementService){
credentialManagementService = param;
}
};
this.getAmazonWebservice = function (){
return amazonWebservice;
};
this.setAmazonWebservice = function (param){
if(param instanceof AmazonWebservice) {
amazonWebservice = param;
}
};
}
function ApplicationSchedulingContext(){
var workflowNodeId,
serviceId,
hostName,
wsgramPreferred,
gatekeeperEPR,
jobManager,
cpuCount,
nodeCount,
queueName,
maxWallTime;
this.getWorkflowNodeId = function (){
return workflowNodeId;
};
this.setWorkflowNodeId = function (param){
workflowNodeId = param;
};
this.getServiceId = function (){
return serviceId;
};
this.setServiceId = function (param){
serviceId = param;
};
this.getHostName = function (){
return hostName;
};
this.setHostName = function (param){
hostName = param;
};
this.getWsgramPreferred = function (){
return wsgramPreferred;
};
this.setWsgramPreferred = function (param){
wsgramPreferred = param;
};
this.getGatekeeperEPR = function (){
return gatekeeperEPR;
};
this.setGatekeeperEPR = function (param){
gatekeeperEPR = param;
};
this.getJobManager = function (){
return jobManager;
};
this.setJobManager = function (param){
jobManager = param;
};
this.getCpuCount = function (){
return cpuCount;
};
this.setCpuCount = function (param){
cpuCount = param;
};
this.getNodeCount = function (){
return nodeCount;
};
this.setNodeCount = function (param){
nodeCount = param;
};
this.getQueueName = function (){
return queueName
};
this.setQueueName = function (param){
queueName = param;
};
this.getMaxWallTime = function (){
return maxWallTime;
};
this.setMaxWallTime = function (param){
maxWallTime = param;
};
}
function NameValuePair (){
var workflowNodeId,
name,
value,
description;
this.getWorkflowNodeId = function (){
return workflowNodeId;
};
this.setWorkflowNodeId = function (param){
workflowNodeId = param;
};
this.getName = function (){
return name;
};
this.setName = function (param){
name = param;
};
this.getValue = function (){
return value;
};
this.setValue = function (param){
value = param;
};
this.getDescription = function (){
return description;
};
this.setDescription = function (param){
description = param;
};
}
function ApplicationOutputDataContext () {
var nodeId,
dataRegistryURL,
outputDataDirectory,
dataPersistence;
this.getNodeId = function (){
return nodeId;
};
this.setNodeId = function (param){
nodeId = param;
};
this.getDataRegistryURL = function (){
return dataRegistryURL;
};
this.setDataRegistryURL = function (param){
dataRegistryURL = param;
};
this.getOutputDataDirectory = function (){
return outputDataDirectory;
};
this.setOutputDataDirectory = function (param){
outputDataDirectory = param;
};
this.getDataPersistence = function (){
return dataPersistence;
};
this.setDataPersistence = function (param){
dataPersistence = param;
};
}
function GridProxyRepository (){
var myproxyServer,
username,
password,
lifeTimeInHours;
this.getMyproxyServer = function (){
return myproxyServer;
};
this.setMyproxyServer = function (param){
myproxyServer = param;
};
this.getUsername = function (){
return username;
};
this.setUsername = function (param){
username = param;
};
this.getPassword = function (){
return password;
};
this.setPassword = function (param){
password = param;
};
this.getLifeTimeInHours = function (){
return lifeTimeInHours;
};
this.setLifeTimeInHours = function (param){
lifeTimeInHours = param;
};
}
function SSHAuthentication(){
var accessKeyId,
secretAccessKey;
this.getAccessKeyId = function (){
return accessKeyId;
};
this.setAccessKeyId = function (param){
accessKeyId = param;
};
this.getSecretAccessKey = function (){
return secretAccessKey;
};
this.setSecretAccessKey = function (param){
secretAccessKey = param;
};
}
function CredentialManagementService(){
var tokenId,
portalUser;
this.getTokenId = function (){
return tokenId;
};
this.setTokenId = function (param){
tokenId = param;
};
this.getPortalUser = function (){
return portalUser;
};
this.setPortalUser = function (param){
portalUser = param;
};
}
function AmazonWebservice (){
var accessKeyId,
secretAccessKey,
amiId,
instanceId,
instanceType,
username;
this.getAccessKeyId = function (){
return accessKeyId;
};
this.setAccessKeyId = function (param){
accessKeyId = param;
};
this.getSecretAccessKey = function (){
return secretAccessKey;
};
this.setSecretAccessKey = function (param){
secretAccessKey = param;
};
this.getAmiId = function (){
return amiId;
};
this.setAmiId = function (param){
amiId = param;
};
this.getInstanceId = function (){
return instanceId;
};
this.setInstanceId = function (param){
instanceId = param;
};
this.getInstanceType = function (){
return instanceType;
};
this.setInstanceType = function (param){
instanceType = param;
};
this.getUsername = function (){
return username;
};
this.setUsername = function (param){
username = param;
};
}
function WorkflowContextHeader (){
this.getContextHeader_JSON = function (contextHeader){
if(contextHeader instanceof ContextHeader) {
var json_contextHeader = {"context-header" :{
"user-identifier" : contextHeader.getUserIdentifier(),
"soa-service-eprs": getSOAServiceEPR_JSON(contextHeader.getSOAServiceEPR()),
"workflow-monitoring-context": getWorkflowMonitoringContext_JSON(contextHeader.getWorkflowMonitoringContext()),
"workflow-scheduling-context": getWorkflowSchedulingContext_JSON(contextHeader.getWorkflowSchedulingContext()),
"workflow-output-data-handling": getWorkflowOutputDataHandling_JSON(contextHeader.getWorkflowOutputDataHandling()),
"security-context": getSecurityContext_JSON(contextHeader.getSecurityContext())
}};
return JSON.stringify(json_contextHeader);
}
};
var getSOAServiceEPR_JSON = function (soaServiceEPR){
if(soaServiceEPR instanceof SOAServiceEPR){
return {"gfac-url": soaServiceEPR.getGfacURL(),
"registry-url": soaServiceEPR.getRegistryURL(),
"resource-scheduler-url": soaServiceEPR.getResorceSchedulerURL(),
"hostDescriptor": soaServiceEPR.getHostDescriptor()
};
}
};
var getWorkflowMonitoringContext_JSON = function (wfMonitoringContext){
if(wfMonitoringContext instanceof WorkflowMonitoringContext) {
return {"experiment-id" :wfMonitoringContext.getExperimentId(),
"workflow-instance-id": wfMonitoringContext.getWorkflowInstanceId(),
"workflow-template-id": wfMonitoringContext.getWorkflowTemplateId(),
"workflow-node-id": wfMonitoringContext.getWorkflowNodeId(),
"workflow-time-step": wfMonitoringContext.getWorkflowTimeStep(),
"service-instance-id": wfMonitoringContext.getServiceInstanceId(),
"service-replica-id": wfMonitoringContext.getServiceReplicaId(),
"event-publish-epr": wfMonitoringContext.getEventPublishEPR(),
"notification-topic": wfMonitoringContext.getNotificationTopic(),
"error-publish-epr": wfMonitoringContext.getErrorPublishEPR(),
"msg-box-epr": wfMonitoringContext.getMsgBoxEPR()
};
}
};
var getWorkflowSchedulingContext_JSON = function(wfSchedulingContext){
if(wfSchedulingContext instanceof WorkflowSchedulingContext) {
var applicationArray = getApplicationSchedulingContexts_JSON(wfSchedulingContext.getApplicationSchedulingContexts());
var nameValueArray = getNameValuePairs_JSON(wfSchedulingContext.getNameValuePairs());
var test = {"application-scheduling-context": eval(applicationArray),
"nameValuePairType":eval(nameValueArray)
};
return (test);
}
};
var getWorkflowOutputDataHandling_JSON = function (wfoDataHandling){
if(wfoDataHandling instanceof WorkflowOutputDataHandling) {
return {"application-output-data-handling": eval(getApplicationOutputDataHandlings_JSON(wfoDataHandling.getApplicationOutputDataHandles()))}
}
};
var getSecurityContext_JSON = function (secContext){
if(secContext instanceof SecurityContext) {
return {
"grid-proxy": secContext.getGridProxy(),
"grid-myproxy-repository":{
"myproxy-server": secContext.getGridMyProxyRepo().getMyproxyServer(),
"username": secContext.getGridMyProxyRepo().getUsername(),
"password": secContext.getGridMyProxyRepo().getPassword(),
"life-time-inhours": secContext.getGridMyProxyRepo().getLifeTimeInHours()
},
"ssh-authentication":{
"access-key-id": secContext.getSSHAuthentication().getAccessKeyId(),
"secret-access-key": secContext.getSSHAuthentication().getSecretAccessKey()
},
"credential-management-service": {
"token_id": secContext.getCredentialManagementService().getTokenId(),
"portal-user": secContext.getCredentialManagementService().getPortalUser()
},
"amazon-webservices": {
"access-key-id": secContext.getAmazonWebservice().getAccessKeyId(),
"secret-access-key": secContext.getAmazonWebservice().getSecretAccessKey(),
"ami-id": secContext.getAmazonWebservice().getAmiId(),
"instance-id": secContext.getAmazonWebservice().getInstanceId(),
"instance-type": secContext.getAmazonWebservice().getInstanceType(),
"username": secContext.getAmazonWebservice().getUsername()
}
}
}
};
var getApplicationSchedulingContexts_JSON = function (appContexts){
var buffer =[];
if(appContexts){
for(var i=0; i < appContexts.length; i++) {
buffer.push(eval(getApplicationScheduleContext_JSON(appContexts[i])))
}
}
var j = buffer;
return j;
};
var getApplicationScheduleContext_JSON = function (appContext){
if(appContext instanceof ApplicationSchedulingContext){
return {
"@workflow-node-id": appContext.getWorkflowNodeId(),
"@service-id": appContext.getServiceId(),
"@host-name": appContext.getHostName(),
"@wsgram-preferred": appContext.getWsgramPreferred(),
"@gatekeeper-epr": appContext.getGatekeeperEPR(),
"@job-manager": appContext.getJobManager(),
"@cpu-count": appContext.getCpuCount(),
"@node-count": appContext.getNodeCount(),
"@queue-name": appContext.getQueueName(),
"@max-wall-time": appContext.getMaxWallTime()
};
}
};
var getNameValuePairs_JSON = function (nameValuePairs){
var buffer=[];
if(nameValuePairs){
for(var i=0; i < nameValuePairs.length; i++) {
buffer.push(eval(getNameValuePair_JSON(nameValuePairs[i])))
}
}
return buffer;
};
var getNameValuePair_JSON = function (nameValue){
if(nameValue instanceof NameValuePair) {
return {
"@workflow-node-id": nameValue.getWorkflowNodeId(),
"@name": nameValue.getName(),
"@value": nameValue.getValue(),
"@description": nameValue.getDescription()
}
}
};
var getApplicationOutputDataHandlings_JSON = function (appOutputDataHandlings){
var buffer =[];
if(appOutputDataHandlings){
for(var i =0 ; i < appOutputDataHandlings.length; i ++) {
buffer.push(eval(getApplicationOutputData_JSON(appOutputDataHandlings[i])))
}
}
return buffer;
};
var getApplicationOutputData_JSON = function (appOutputData){
if(appOutputData instanceof ApplicationOutputDataContext) {
return {
"node-id": appOutputData.getNodeId(),
"data-registry-url": appOutputData.getDataRegistryURL(),
"output-data-directory": appOutputData.getOutputDataDirectory(),
"data-persistance": appOutputData.getDataPersistence()
}
}
};
}
function JsonSchemaTest (){
var contextHeader = new ContextHeader();
contextHeader.setUserIdentifier("testIdentifier");
var soa = new SOAServiceEPR();
soa.setGfacURL("http://localhost/gfac");
soa.setRegistryURL("http://localhost/reg");
soa.setResourceSchedulerURL("http://localhost/resource");
soa.setHostDescriptor("sampleHost");
contextHeader.setSOAServiceEPR(soa);
var wfMonitor = new WorkflowMonitoringContext();
wfMonitor.setExperimentId("unique124");
wfMonitor.setWorkflowInstanceId("inst123");
wfMonitor.setWorkflowTemplateId("template123");
wfMonitor.setWorkflowNodeId("node123");
wfMonitor.setWorkflowTimeStep(123);
wfMonitor.setServiceInstanceId("serInst123");
wfMonitor.setServiceReplicaId("serRep123");
wfMonitor.setEventPublishEPR("http://localhost/eventpub");
wfMonitor.setNotificationTopic("notificationTopic");
wfMonitor.setErrorPublishEPR("http://localhost/errorPubEpr");
wfMonitor.setMsgBoxEPR("http://localhost/msg/box");
contextHeader.setWorkflowMonitoringContext(wfMonitor);
var wfScheduler = new WorkflowSchedulingContext();
var appSchduler1 = new ApplicationSchedulingContext();
appSchduler1.setWorkflowNodeId("wfNodeId123");
appSchduler1.setServiceId("appService123");
appSchduler1.setHostName("host1");
appSchduler1.setWsgramPreferred(true);
appSchduler1.setGatekeeperEPR("http://localhost/gatekeeper");
appSchduler1.setJobManager("shamJM");
appSchduler1.setCpuCount(12);
appSchduler1.setNodeCount(3);
appSchduler1.setQueueName("queue1");
appSchduler1.setMaxWallTime(321);
wfScheduler.addApplicationSchedulingContext(appSchduler1);
var nameValue_1 = new NameValuePair();
nameValue_1.setWorkflowNodeId("node123");
nameValue_1.setName("John");
nameValue_1.setValue("carter");
nameValue_1.setDescription("Simple description");
var nameValue_2 = new NameValuePair();
nameValue_2.setWorkflowNodeId("node1234");
nameValue_2.setName("John2");
nameValue_2.setValue("carter2");
nameValue_2.setDescription("Simple description");
wfScheduler.addNameValuePair(nameValue_1);
wfScheduler.addNameValuePair(nameValue_2);
contextHeader.setWorkflowSchedulingContext(wfScheduler);
var wfOutput = new WorkflowOutputDataHandling();
var appOutput = new ApplicationOutputDataContext();
appOutput.setNodeId("node123");
appOutput.setDataRegistryURL("http://localhost/data/reg");
appOutput.setOutputDataDirectory("/home/user/Desktop");
appOutput.setDataPersistence(false);
wfOutput.addApplicationOutputDataHandle(appOutput);
contextHeader.setWorkflowOutputDataHandling(wfOutput);
var secCon = new SecurityContext();
secCon.setGridProxy("sample.proxy.com");
var gridRepo = new GridProxyRepository();
gridRepo.setMyproxyServer("my.sample.proxy.com");
gridRepo.setUsername("grid");
gridRepo.setPassword("grid123");
gridRepo.setLifeTimeInHours(34);
secCon.setGridMyProxyRepo(gridRepo);
var sshAuth = new SSHAuthentication();
sshAuth.setAccessKeyId("sshActionkey");
sshAuth.setSecretAccessKey("sectretSSHKey");
secCon.setSSHAuthentication(sshAuth);
var credMan = new CredentialManagementService();
credMan.setTokenId("credToken");
credMan.setPortalUser("Smith");
secCon.setCredentialManagementService(credMan);
var amazon = new AmazonWebservice();
amazon.setAccessKeyId("amazonKeyId");
amazon.setSecretAccessKey("amozonSecretKey");
amazon.setAmiId("amozonAMI");
amazon.setInstanceId("amIns123");
amazon.setInstanceType("amzInsType");
amazon.setUsername("amazonUser");
secCon.setAmazonWebservice(amazon);
contextHeader.setSecurityContext(secCon);
var wfch = new WorkflowContextHeader();
var jsonData = wfch.getContextHeader_JSON(contextHeader);
console.log(jsonData);
// var schema = tv4.getSchema('#/js/model/workflow_execution_context.json');
// var valid = t4.validate(jsonData, schema);
// alert(valid);
}