Repository: airavata Updated Branches: refs/heads/master ec9b6fe42 -> 7d391f11a
Refactored code and Fixed Job statues update method in GfacUtils Project: http://git-wip-us.apache.org/repos/asf/airavata/repo Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/0f5ec6f9 Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/0f5ec6f9 Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/0f5ec6f9 Branch: refs/heads/master Commit: 0f5ec6f91c8faac16902b05358c773b377341332 Parents: ea93cc1 Author: shamrath <[email protected]> Authored: Wed May 13 11:06:47 2015 -0400 Committer: shamrath <[email protected]> Committed: Wed May 13 11:06:47 2015 -0400 ---------------------------------------------------------------------- .../airavata/gfac/core/utils/GFacUtils.java | 660 +------------------ .../gsissh/provider/impl/GSISSHProvider.java | 13 +- .../gfac/local/provider/impl/LocalProvider.java | 4 +- .../gfac/ssh/provider/impl/SSHProvider.java | 61 +- 4 files changed, 23 insertions(+), 715 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/airavata/blob/0f5ec6f9/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/utils/GFacUtils.java ---------------------------------------------------------------------- diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/utils/GFacUtils.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/utils/GFacUtils.java index 4cd850d..599b1ce 100644 --- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/utils/GFacUtils.java +++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/utils/GFacUtils.java @@ -26,6 +26,7 @@ import org.apache.aiaravata.application.catalog.data.impl.AppCatalogFactory; import org.apache.airavata.common.exception.ApplicationSettingsException; import org.apache.airavata.common.utils.AiravataZKUtils; import org.apache.airavata.common.utils.DBUtil; +import org.apache.airavata.common.utils.MonitorPublisher; import org.apache.airavata.common.utils.ServerSettings; import org.apache.airavata.credential.store.store.CredentialReader; import org.apache.airavata.credential.store.store.impl.CredentialReaderImpl; @@ -40,6 +41,8 @@ import org.apache.airavata.gfac.core.states.GfacHandlerState; import org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType; import org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType; import org.apache.airavata.model.appcatalog.computeresource.*; +import org.apache.airavata.model.messaging.event.JobIdentifier; +import org.apache.airavata.model.messaging.event.JobStatusChangeRequestEvent; import org.apache.airavata.model.workspace.experiment.*; import org.apache.airavata.persistance.registry.jpa.impl.RegistryFactory; import org.apache.airavata.registry.cpi.ChildDataType; @@ -186,587 +189,15 @@ public class GFacUtils { return buf.toString(); } -// public static ActualParameter getInputActualParameter(Parameter parameter, -// DataObjectType element) { -// ActualParameter actualParameter = new ActualParameter(); -// if ("String".equals(parameter.getParameterType().getName())) { -// actualParameter = new ActualParameter(StringParameterType.type); -// if (!"".equals(element.getValue())) { -// ((StringParameterType) actualParameter.getType()) -// .setValue(element.getValue()); -// } else { -// ((StringParameterType) actualParameter.getType()).setValue(""); -// } -// } else if ("Double".equals(parameter.getParameterType().getName())) { -// actualParameter = new ActualParameter(DoubleParameterType.type); -// if (!"".equals(element.getValue())) { -// ((DoubleParameterType) actualParameter.getType()) -// .setValue(new Double(element.getValue())); -// } -// } else if ("Integer".equals(parameter.getParameterType().getName())) { -// actualParameter = new ActualParameter(IntegerParameterType.type); -// if (!"".equals(element.getValue())) { -// ((IntegerParameterType) actualParameter.getType()) -// .setValue(new Integer(element.getValue())); -// } -// } else if ("Float".equals(parameter.getParameterType().getName())) { -// actualParameter = new ActualParameter(FloatParameterType.type); -// if (!"".equals(element.getValue())) { -// ((FloatParameterType) actualParameter.getType()) -// .setValue(new Float(element.getValue())); -// } -// } else if ("Boolean".equals(parameter.getParameterType().getName())) { -// actualParameter = new ActualParameter(BooleanParameterType.type); -// if (!"".equals(element.getValue())) { -// ((BooleanParameterType) actualParameter.getType()) -// .setValue(new Boolean(element.getValue())); -// } -// } else if ("File".equals(parameter.getParameterType().getName())) { -// actualParameter = new ActualParameter(FileParameterType.type); -// if (!"".equals(element.getValue())) { -// ((FileParameterType) actualParameter.getType()) -// .setValue(element.getValue()); -// } -// } else if ("URI".equals(parameter.getParameterType().getName())) { -// actualParameter = new ActualParameter(URIParameterType.type); -// if (!"".equals(element.getValue())) { -// ((URIParameterType) actualParameter.getType()).setValue(element -// .getValue()); -// } else { -// ((URIParameterType) actualParameter.getType()).setValue(""); -// } -// -// } else if ("StdOut".equals(parameter.getParameterType().getName())) { -// actualParameter = new ActualParameter(StdOutParameterType.type); -// if (!"".equals(element.getValue())) { -// ((StdOutParameterType) actualParameter.getType()) -// .setValue(element.getValue()); -// } else { -// ((StdOutParameterType) actualParameter.getType()).setValue(""); -// } -// -// } else if ("StdErr".equals(parameter.getParameterType().getName())) { -// actualParameter = new ActualParameter(StdErrParameterType.type); -// if (!"".equals(element.getValue())) { -// ((StdErrParameterType) actualParameter.getType()) -// .setValue(element.getValue()); -// } else { -// ((StdErrParameterType) actualParameter.getType()).setValue(""); -// } -// -// } -// return actualParameter; -// } - -// public static ActualParameter getInputActualParameter(Parameter parameter, -// OMElement element) { -// OMElement innerelement = null; -// ActualParameter actualParameter = new ActualParameter(); -// if ("String".equals(parameter.getParameterType().getName())) { -// actualParameter = new ActualParameter(StringParameterType.type); -// if (!"".equals(element.getText())) { -// ((StringParameterType) actualParameter.getType()) -// .setValue(element.getText()); -// } else if (element.getChildrenWithLocalName("value").hasNext()) { -// innerelement = (OMElement) element.getChildrenWithLocalName( -// "value").next(); -// ((StringParameterType) actualParameter.getType()) -// .setValue(innerelement.getText()); -// } else { -// ((StringParameterType) actualParameter.getType()).setValue(""); -// } -// } else if ("Double".equals(parameter.getParameterType().getName())) { -// actualParameter = new ActualParameter(DoubleParameterType.type); -// if (!"".equals(element.getText())) { -// ((DoubleParameterType) actualParameter.getType()) -// .setValue(new Double(innerelement.getText())); -// } else { -// innerelement = (OMElement) element.getChildrenWithLocalName( -// "value").next(); -// ((DoubleParameterType) actualParameter.getType()) -// .setValue(new Double(innerelement.getText())); -// } -// } else if ("Integer".equals(parameter.getParameterType().getName())) { -// actualParameter = new ActualParameter(IntegerParameterType.type); -// if (!"".equals(element.getText())) { -// ((IntegerParameterType) actualParameter.getType()) -// .setValue(new Integer(element.getText())); -// } else { -// innerelement = (OMElement) element.getChildrenWithLocalName( -// "value").next(); -// ((IntegerParameterType) actualParameter.getType()) -// .setValue(new Integer(innerelement.getText())); -// } -// } else if ("Float".equals(parameter.getParameterType().getName())) { -// actualParameter = new ActualParameter(FloatParameterType.type); -// if (!"".equals(element.getText())) { -// ((FloatParameterType) actualParameter.getType()) -// .setValue(new Float(element.getText())); -// } else { -// innerelement = (OMElement) element.getChildrenWithLocalName( -// "value").next(); -// ((FloatParameterType) actualParameter.getType()) -// .setValue(new Float(innerelement.getText())); -// } -// } else if ("Boolean".equals(parameter.getParameterType().getName())) { -// actualParameter = new ActualParameter(BooleanParameterType.type); -// if (!"".equals(element.getText())) { -// ((BooleanParameterType) actualParameter.getType()) -// .setValue(new Boolean(element.getText())); -// } else { -// innerelement = (OMElement) element.getChildrenWithLocalName( -// "value").next(); -// ((BooleanParameterType) actualParameter.getType()) -// .setValue(Boolean.parseBoolean(innerelement.getText())); -// } -// } else if ("File".equals(parameter.getParameterType().getName())) { -// actualParameter = new ActualParameter(FileParameterType.type); -// if (!"".equals(element.getText())) { -// ((FileParameterType) actualParameter.getType()) -// .setValue(element.getText()); -// } else { -// innerelement = (OMElement) element.getChildrenWithLocalName( -// "value").next(); -// ((FileParameterType) actualParameter.getType()) -// .setValue(innerelement.getText()); -// } -// } else if ("URI".equals(parameter.getParameterType().getName())) { -// actualParameter = new ActualParameter(URIParameterType.type); -// if (!"".equals(element.getText())) { -// ((URIParameterType) actualParameter.getType()).setValue(element -// .getText()); -// } else if (element.getChildrenWithLocalName("value").hasNext()) { -// innerelement = (OMElement) element.getChildrenWithLocalName( -// "value").next(); -// System.out.println(actualParameter.getType().toString()); -// log.debug(actualParameter.getType().toString()); -// ((URIParameterType) actualParameter.getType()) -// .setValue(innerelement.getText()); -// } else { -// ((URIParameterType) actualParameter.getType()).setValue(""); -// } -// } else if ("StringArray".equals(parameter.getParameterType().getName())) { -// actualParameter = new ActualParameter(StringArrayType.type); -// Iterator value = element.getChildrenWithLocalName("value"); -// int i = 0; -// if (!"".equals(element.getText())) { -// String[] list = StringUtil.getElementsFromString(element -// .getText()); -// for (String arrayValue : list) { -// ((StringArrayType) actualParameter.getType()).insertValue( -// i++, arrayValue); -// } -// } else { -// while (value.hasNext()) { -// innerelement = (OMElement) value.next(); -// ((StringArrayType) actualParameter.getType()).insertValue( -// i++, innerelement.getText()); -// } -// } -// } else if ("DoubleArray".equals(parameter.getParameterType().getName())) { -// actualParameter = new ActualParameter(DoubleArrayType.type); -// Iterator value = element.getChildrenWithLocalName("value"); -// int i = 0; -// if (!"".equals(element.getText())) { -// String[] list = StringUtil.getElementsFromString(element -// .getText()); -// for (String arrayValue : list) { -// ((DoubleArrayType) actualParameter.getType()).insertValue( -// i++, new Double(arrayValue)); -// } -// } else { -// while (value.hasNext()) { -// innerelement = (OMElement) value.next(); -// ((DoubleArrayType) actualParameter.getType()).insertValue( -// i++, new Double(innerelement.getText())); -// } -// } -// -// } else if ("IntegerArray" -// .equals(parameter.getParameterType().getName())) { -// actualParameter = new ActualParameter(IntegerArrayType.type); -// Iterator value = element.getChildrenWithLocalName("value"); -// int i = 0; -// if (!"".equals(element.getText())) { -// String[] list = StringUtil.getElementsFromString(element -// .getText()); -// for (String arrayValue : list) { -// ((IntegerArrayType) actualParameter.getType()).insertValue( -// i++, new Integer(arrayValue)); -// } -// } else { -// while (value.hasNext()) { -// innerelement = (OMElement) value.next(); -// ((IntegerArrayType) actualParameter.getType()).insertValue( -// i++, new Integer(innerelement.getText())); -// } -// } -// } else if ("FloatArray".equals(parameter.getParameterType().getName())) { -// actualParameter = new ActualParameter(FloatArrayType.type); -// Iterator value = element.getChildrenWithLocalName("value"); -// int i = 0; -// if (!"".equals(element.getText())) { -// String[] list = StringUtil.getElementsFromString(element -// .getText()); -// for (String arrayValue : list) { -// ((FloatArrayType) actualParameter.getType()).insertValue( -// i++, new Float(arrayValue)); -// } -// } else { -// -// while (value.hasNext()) { -// innerelement = (OMElement) value.next(); -// ((FloatArrayType) actualParameter.getType()).insertValue( -// i++, new Float(innerelement.getText())); -// } -// } -// } else if ("BooleanArray" -// .equals(parameter.getParameterType().getName())) { -// actualParameter = new ActualParameter(BooleanArrayType.type); -// Iterator value = element.getChildrenWithLocalName("value"); -// int i = 0; -// if (!"".equals(element.getText())) { -// String[] list = StringUtil.getElementsFromString(element -// .getText()); -// for (String arrayValue : list) { -// ((BooleanArrayType) actualParameter.getType()).insertValue( -// i++, new Boolean(arrayValue)); -// } -// } else { -// -// while (value.hasNext()) { -// innerelement = (OMElement) value.next(); -// ((BooleanArrayType) actualParameter.getType()).insertValue( -// i++, new Boolean(innerelement.getText())); -// } -// } -// } else if ("FileArray".equals(parameter.getParameterType().getName())) { -// actualParameter = new ActualParameter(FileArrayType.type); -// Iterator value = element.getChildrenWithLocalName("value"); -// int i = 0; -// if (!"".equals(element.getText())) { -// String[] list = StringUtil.getElementsFromString(element -// .getText()); -// for (String arrayValue : list) { -// ((FileArrayType) actualParameter.getType()).insertValue( -// i++, arrayValue); -// } -// } else { -// -// while (value.hasNext()) { -// innerelement = (OMElement) value.next(); -// ((FileArrayType) actualParameter.getType()).insertValue( -// i++, innerelement.getText()); -// } -// } -// } else if ("URIArray".equals(parameter.getParameterType().getName())) { -// actualParameter = new ActualParameter(URIArrayType.type); -// Iterator value = element.getChildrenWithLocalName("value"); -// int i = 0; -// if (!"".equals(element.getText())) { -// String[] list = StringUtil.getElementsFromString(element -// .getText()); -// for (String arrayValue : list) { -// ((URIArrayType) actualParameter.getType()).insertValue(i++, -// arrayValue); -// } -// } else { -// -// while (value.hasNext()) { -// innerelement = (OMElement) value.next(); -// ((URIArrayType) actualParameter.getType()).insertValue(i++, -// innerelement.getText()); -// } -// } -// } -// return actualParameter; -// } - -// public static ActualParameter getInputActualParameter(Parameter parameter, -// String inputVal) throws GFacException { -// OMElement innerelement = null; -// ActualParameter actualParameter = new ActualParameter(); -// if ("String".equals(parameter.getParameterType().getName())) { -// actualParameter = new ActualParameter(StringParameterType.type); -// ((StringParameterType) actualParameter.getType()) -// .setValue(inputVal); -// } else if ("Double".equals(parameter.getParameterType().getName())) { -// actualParameter = new ActualParameter(DoubleParameterType.type); -// ((DoubleParameterType) actualParameter.getType()) -// .setValue(new Double(inputVal)); -// } else if ("Integer".equals(parameter.getParameterType().getName())) { -// actualParameter = new ActualParameter(IntegerParameterType.type); -// ((IntegerParameterType) actualParameter.getType()) -// .setValue(new Integer(inputVal)); -// } else if ("Float".equals(parameter.getParameterType().getName())) { -// actualParameter = new ActualParameter(FloatParameterType.type); -// ((FloatParameterType) actualParameter.getType()) -// .setValue(new Float(inputVal)); -// } else if ("Boolean".equals(parameter.getParameterType().getName())) { -// actualParameter = new ActualParameter(BooleanParameterType.type); -// ((BooleanParameterType) actualParameter.getType()) -// .setValue(new Boolean(inputVal)); -// } else if ("File".equals(parameter.getParameterType().getName())) { -// actualParameter = new ActualParameter(FileParameterType.type); -// ((FileParameterType) actualParameter.getType()).setValue(inputVal); -// } else if ("URI".equals(parameter.getParameterType().getName())) { -// actualParameter = new ActualParameter(URIParameterType.type); -// ((URIParameterType) actualParameter.getType()).setValue(inputVal); -// } else if ("StringArray".equals(parameter.getParameterType().getName())) { -// actualParameter = new ActualParameter(StringArrayType.type); -// Iterator iterator = Arrays.asList( -// StringUtil.getElementsFromString(inputVal)).iterator(); -// int i = 0; -// while (iterator.hasNext()) { -// innerelement = (OMElement) iterator.next(); -// ((StringArrayType) actualParameter.getType()).insertValue(i++, -// innerelement.getText()); -// } -// } else if ("DoubleArray".equals(parameter.getParameterType().getName())) { -// actualParameter = new ActualParameter(DoubleArrayType.type); -// Iterator value = Arrays.asList( -// StringUtil.getElementsFromString(inputVal)).iterator(); -// int i = 0; -// while (value.hasNext()) { -// innerelement = (OMElement) value.next(); -// ((DoubleArrayType) actualParameter.getType()).insertValue(i++, -// new Double(innerelement.getText())); -// } -// } else if ("IntegerArray" -// .equals(parameter.getParameterType().getName())) { -// actualParameter = new ActualParameter(IntegerArrayType.type); -// Iterator value = Arrays.asList( -// StringUtil.getElementsFromString(inputVal)).iterator(); -// int i = 0; -// while (value.hasNext()) { -// innerelement = (OMElement) value.next(); -// ((IntegerArrayType) actualParameter.getType()).insertValue(i++, -// new Integer(innerelement.getText())); -// } -// } else if ("FloatArray".equals(parameter.getParameterType().getName())) { -// actualParameter = new ActualParameter(FloatArrayType.type); -// Iterator value = Arrays.asList( -// StringUtil.getElementsFromString(inputVal)).iterator(); -// int i = 0; -// while (value.hasNext()) { -// innerelement = (OMElement) value.next(); -// ((FloatArrayType) actualParameter.getType()).insertValue(i++, -// new Float(innerelement.getText())); -// } -// } else if ("BooleanArray" -// .equals(parameter.getParameterType().getName())) { -// actualParameter = new ActualParameter(BooleanArrayType.type); -// Iterator value = Arrays.asList( -// StringUtil.getElementsFromString(inputVal)).iterator(); -// int i = 0; -// while (value.hasNext()) { -// innerelement = (OMElement) value.next(); -// ((BooleanArrayType) actualParameter.getType()).insertValue(i++, -// new Boolean(innerelement.getText())); -// } -// } else if ("FileArray".equals(parameter.getParameterType().getName())) { -// actualParameter = new ActualParameter(FileArrayType.type); -// Iterator value = Arrays.asList( -// StringUtil.getElementsFromString(inputVal)).iterator(); -// int i = 0; -// while (value.hasNext()) { -// innerelement = (OMElement) value.next(); -// ((FileArrayType) actualParameter.getType()).insertValue(i++, -// innerelement.getText()); -// } -// } else if ("URIArray".equals(parameter.getParameterType().getName())) { -// actualParameter = new ActualParameter(URIArrayType.type); -// Iterator value = Arrays.asList( -// StringUtil.getElementsFromString(inputVal)).iterator(); -// int i = 0; -// while (value.hasNext()) { -// innerelement = (OMElement) value.next(); -// ((URIArrayType) actualParameter.getType()).insertValue(i++, -// innerelement.getText()); -// } -// } else { -// throw new GFacException( -// "Input parameters are not configured properly "); -// } -// return actualParameter; -// } - -// public static ApplicationJob createApplicationJob( -// JobExecutionContext jobExecutionContext) { -// ApplicationJob appJob = new ApplicationJob(); -// appJob.setExperimentId((String) jobExecutionContext -// .getProperty(Constants.PROP_TOPIC)); -// appJob.setWorkflowExecutionId(appJob.getExperimentId()); -// appJob.setNodeId((String) jobExecutionContext -// .getProperty(Constants.PROP_WORKFLOW_NODE_ID)); -// appJob.setServiceDescriptionId(jobExecutionContext -// .getApplicationContext().getServiceDescription().getType() -// .getName()); -// appJob.setHostDescriptionId(jobExecutionContext.getApplicationContext() -// .getHostDescription().getType().getHostName()); -// appJob.setApplicationDescriptionId(jobExecutionContext -// .getApplicationContext().getApplicationDeploymentDescription() -// .getType().getApplicationName().getStringValue()); -// return appJob; -// } - -// public static void updateApplicationJobStatusUpdateTime( -// JobExecutionContext context, String jobId, Date statusUpdateTime) { -// AiravataAPI airavataAPI = context.getGFacConfiguration() -// .getAiravataAPI(); -// try { -// airavataAPI.getProvenanceManager() -// .updateApplicationJobStatusUpdateTime(jobId, -// statusUpdateTime); -// } catch (AiravataAPIInvocationException e) { -// log.error("Error in updating application job status time " -// + statusUpdateTime.toString() + " for job Id " + jobId -// + "!!!", e); -// } -// } -// -// public static void updateApplicationJobStatus(JobExecutionContext context, -// String jobId, ApplicationJobStatus status, Date statusUpdateTime) { -// AiravataAPI airavataAPI = context.getGFacConfiguration() -// .getAiravataAPI(); -// try { -// airavataAPI.getProvenanceManager().updateApplicationJobStatus( -// jobId, status, statusUpdateTime); -// } catch (AiravataAPIInvocationException e) { -// log.error( -// "Error in updating application job status " -// + status.toString() + " for job Id " + jobId -// + "!!!", e); -// } -// } - -// /** -// * Gets the job ids given experiment id. -// * -// * @param context -// * The job execution context. -// * @param experimentId -// * The experiment id. -// * @return List of job ids relevant to given experiment id. -// */ -// public static List<ApplicationJob> getJobIds(JobExecutionContext context, -// String experimentId) { -// -// AiravataAPI airavataAPI = context.getGFacConfiguration() -// .getAiravataAPI(); -// try { -// return airavataAPI.getProvenanceManager().getApplicationJobs( -// experimentId, null, null); -// } catch (AiravataAPIInvocationException e) { -// log.error("Error retrieving application jobs for experiment id " -// + experimentId, e); -// } -// -// return new ArrayList<ApplicationJob>(0); -// } - -// /** -// * Gets the job ids given experiment id and workflow id. -// * -// * @param context -// * The job execution context. -// * @param experimentId -// * The experiment id. -// * @param workflowId -// * The workflow id -// * @return List of job ids relevant to given experiment id and workflow id. -// */ -// public static List<ApplicationJob> getJobIds(JobExecutionContext context, -// String experimentId, String workflowId) { -// -// AiravataAPI airavataAPI = context.getGFacConfiguration() -// .getAiravataAPI(); -// try { -// return airavataAPI.getProvenanceManager().getApplicationJobs( -// experimentId, workflowId, null); -// } catch (AiravataAPIInvocationException e) { -// log.error("Error retrieving application jobs for experiment id " -// + experimentId, " workflow id " + workflowId, e); -// } -// -// return new ArrayList<ApplicationJob>(0); -// } - -// /** -// * Gets the job ids given experiment id and workflow id. -// * -// * @param context -// * The job execution context. -// * @param experimentId -// * The experiment id. -// * @param workflowId -// * The workflow id -// * @return List of job ids relevant to given experiment id and workflow id. -// */ -// public static List<ApplicationJob> getJobIds(JobExecutionContext context, -// String experimentId, String workflowId, String nodeId) { -// -// AiravataAPI airavataAPI = context.getGFacConfiguration() -// .getAiravataAPI(); -// try { -// return airavataAPI.getProvenanceManager().getApplicationJobs( -// experimentId, workflowId, nodeId); -// } catch (AiravataAPIInvocationException e) { -// log.error("Error retrieving application jobs for experiment id " -// + experimentId, " workflow id " + workflowId, e); -// } -// -// return new ArrayList<ApplicationJob>(0); -// } - - /* - * public static RequestData getRequestData(Properties - * configurationProperties) { - * - * RequestData requestData = new RequestData(); - * - * requestData.setMyProxyServerUrl(configurationProperties.getProperty(Constants - * .MYPROXY_SERVER)); - * requestData.setMyProxyUserName(configurationProperties. - * getProperty(Constants.MYPROXY_USER)); - * requestData.setMyProxyPassword(configurationProperties - * .getProperty(Constants.MYPROXY_PASS)); - * - * int lifeTime; String sLife = - * configurationProperties.getProperty(Constants.MYPROXY_LIFE); if (sLife != - * null) { lifeTime = Integer.parseInt(sLife); - * requestData.setMyProxyLifeTime(lifeTime); } else { - * log.info("The configuration does not specify a default life time"); } - * - * - * - * } - */ - -// public static void recordApplicationJob(JobExecutionContext context, -// ApplicationJob job) { -// AiravataAPI airavataAPI = context.getGFacConfiguration() -// .getAiravataAPI(); -// try { -// airavataAPI.getProvenanceManager().addApplicationJob(job); -// } catch (AiravataAPIInvocationException e) { -// log.error( -// "Error in persisting application job data for application job " -// + job.getJobId() + "!!!", e); -// } -// } - public static void saveJobStatus(JobExecutionContext jobExecutionContext, - JobDetails details, JobState state) throws GFacException { + JobDetails details, JobState state, MonitorPublisher monitorPublisher) throws GFacException { try { - Registry registry = jobExecutionContext.getRegistry(); - JobStatus status = new JobStatus(); - status.setJobState(state); - details.setJobStatus(status); - registry.add(ChildDataType.JOB_DETAIL, details, - new CompositeIdentifier(jobExecutionContext.getTaskData() - .getTaskID(), details.getJobID())); - } catch (Exception e) { + JobIdentifier identifier = new JobIdentifier(details.getJobID(), jobExecutionContext.getTaskData().getTaskID(), + jobExecutionContext.getWorkflowNodeDetails().getNodeInstanceId(), jobExecutionContext.getExperimentID(), + jobExecutionContext.getGatewayID()); + JobStatusChangeRequestEvent jobStatusChangeRequestEvent = new JobStatusChangeRequestEvent(state, identifier); + monitorPublisher.publish(jobStatusChangeRequestEvent); + } catch (Exception e) { throw new GFacException("Error persisting job status" + e.getLocalizedMessage(), e); } @@ -810,42 +241,6 @@ public class GFacUtils { } } -// public static Map<String, Object> getInMessageContext( -// List<DataObjectType> experimentData, Parameter[] parameters) -// throws GFacException { -// HashMap<String, Object> stringObjectHashMap = new HashMap<String, Object>(); -// Map<String, DataObjectType> map = new HashMap<String, DataObjectType>(); -// for (DataObjectType objectType : experimentData) { -// map.put(objectType.getKey(), objectType); -// } -// for (int i = 0; i < parameters.length; i++) { -// DataObjectType input = map.get(parameters[i].getParameterName()); -// if (input != null) { -// DataType t = DataType.STRING; -// String type = parameters[i].getParameterType().getType().toString().toUpperCase(); -// if (type.equals("STRING")){ -// t=DataType.STRING; -// }else if (type.equals("INTEGER")){ -// t=DataType.INTEGER; -// }else if (type.equals("FLOAT")){ -// //FIXME -// t=DataType.INTEGER; -// }else if (type.equals("URI")){ -// t=DataType.URI; -// } -// input.setType(t); -// stringObjectHashMap -// .put(parameters[i].getParameterName(), GFacUtils -// .getInputActualParameter(parameters[i], input)); -// } else { -// throw new GFacException( -// "Error finding the parameter: parameter Name" -// + parameters[i].getParameterName()); -// } -// } -// return stringObjectHashMap; -// } - public static Map<String, Object> getInputParamMap(List<InputDataObjectType> experimentData) throws GFacException { Map<String, Object> map = new HashMap<String, Object>(); for (InputDataObjectType objectType : experimentData) { @@ -853,41 +248,6 @@ public class GFacUtils { } return map; } -// -// public static Map<String, Object> getOutMessageContext( -// List<DataObjectType> experimentData, Parameter[] parameters) -// throws GFacException { -// HashMap<String, Object> stringObjectHashMap = new HashMap<String, Object>(); -// Map<String, DataObjectType> map = new HashMap<String, DataObjectType>(); -// for (DataObjectType objectType : experimentData) { -// map.put(objectType.getKey(), objectType); -// } -// for (int i = 0; i < parameters.length; i++) { -// DataObjectType output = map.get(parameters[i].getParameterName()); -// if (output==null){ -// output=new DataObjectType(); -// output.setKey(parameters[i].getParameterName()); -// output.setValue(""); -// String type = parameters[i].getParameterType().getType().toString().toUpperCase(); -// DataType t = DataType.STRING; -// if (type.equals("STRING")){ -// t=DataType.STRING; -// }else if (type.equals("INTEGER")){ -// t=DataType.INTEGER; -// }else if (type.equals("FLOAT")){ -// //FIXME -// t=DataType.INTEGER; -// }else if (type.equals("URI")){ -// t=DataType.URI; -// } -// output.setType(t); -// } -// stringObjectHashMap -// .put(parameters[i].getParameterName(), GFacUtils -// .getInputActualParameter(parameters[i], output)); -// } -// return stringObjectHashMap; -// } public static Map<String, Object> getOuputParamMap(List<OutputDataObjectType> experimentData) throws GFacException { Map<String, Object> map = new HashMap<String, Object>(); http://git-wip-us.apache.org/repos/asf/airavata/blob/0f5ec6f9/modules/gfac/gfac-gsissh/src/main/java/org/apache/airavata/gfac/gsissh/provider/impl/GSISSHProvider.java ---------------------------------------------------------------------- diff --git a/modules/gfac/gfac-gsissh/src/main/java/org/apache/airavata/gfac/gsissh/provider/impl/GSISSHProvider.java b/modules/gfac/gfac-gsissh/src/main/java/org/apache/airavata/gfac/gsissh/provider/impl/GSISSHProvider.java index 32b3f93..b41ab75 100644 --- a/modules/gfac/gfac-gsissh/src/main/java/org/apache/airavata/gfac/gsissh/provider/impl/GSISSHProvider.java +++ b/modules/gfac/gfac-gsissh/src/main/java/org/apache/airavata/gfac/gsissh/provider/impl/GSISSHProvider.java @@ -20,7 +20,6 @@ */ package org.apache.airavata.gfac.gsissh.provider.impl; -import org.airavata.appcatalog.cpi.AppCatalog; import org.airavata.appcatalog.cpi.AppCatalogException; import org.apache.airavata.common.exception.AiravataException; import org.apache.airavata.common.exception.ApplicationSettingsException; @@ -114,10 +113,10 @@ public class GSISSHProvider extends AbstractProvider { jobExecutionContext.setJobDetails(jobDetails); if (jobID == null) { jobDetails.setJobID("none"); - GFacUtils.saveJobStatus(jobExecutionContext, jobDetails, JobState.FAILED); + GFacUtils.saveJobStatus(jobExecutionContext, jobDetails, JobState.FAILED, monitorPublisher); } else { jobDetails.setJobID(jobID.split("\\.")[0]); - GFacUtils.saveJobStatus(jobExecutionContext, jobDetails, JobState.SUBMITTED); + GFacUtils.saveJobStatus(jobExecutionContext, jobDetails, JobState.SUBMITTED, monitorPublisher); } data.append(",jobId=").append(jobDetails.getJobID()); @@ -129,7 +128,7 @@ public class GSISSHProvider extends AbstractProvider { String error = "Error submitting the job to host " + computeResourceDescription.getHostName() + " message: " + e.getMessage(); log.error(error); jobDetails.setJobID("none"); - GFacUtils.saveJobStatus(jobExecutionContext, jobDetails, JobState.FAILED); + GFacUtils.saveJobStatus(jobExecutionContext, jobDetails, JobState.FAILED, monitorPublisher); StringWriter errors = new StringWriter(); e.printStackTrace(new PrintWriter(errors)); GFacUtils.saveErrorDetails(jobExecutionContext, errors.toString(), CorrectiveAction.CONTACT_SUPPORT, ErrorCategory.AIRAVATA_INTERNAL_ERROR); @@ -208,20 +207,20 @@ public class GSISSHProvider extends AbstractProvider { log.error("No Job Id is set, so cannot perform the cancel operation !!!"); return; } - GFacUtils.saveJobStatus(jobExecutionContext, jobDetails, JobState.CANCELED); + GFacUtils.saveJobStatus(jobExecutionContext, jobDetails, JobState.CANCELED, monitorPublisher); // we know this host is type GsiSSHHostType } catch (SSHApiException e) { String error = "Error submitting the job to host " + jobExecutionContext.getHostName() + " message: " + e.getMessage(); log.error(error); jobDetails.setJobID("none"); - GFacUtils.saveJobStatus(jobExecutionContext, jobDetails, JobState.FAILED); + GFacUtils.saveJobStatus(jobExecutionContext, jobDetails, JobState.FAILED, monitorPublisher); GFacUtils.saveErrorDetails(jobExecutionContext, e.getCause().toString(), CorrectiveAction.CONTACT_SUPPORT, ErrorCategory.AIRAVATA_INTERNAL_ERROR); throw new GFacProviderException(error, e); } catch (Exception e) { String error = "Error submitting the job to host " + jobExecutionContext.getHostName() + " message: " + e.getMessage(); log.error(error); jobDetails.setJobID("none"); - GFacUtils.saveJobStatus(jobExecutionContext, jobDetails, JobState.FAILED); + GFacUtils.saveJobStatus(jobExecutionContext, jobDetails, JobState.FAILED, monitorPublisher); GFacUtils.saveErrorDetails(jobExecutionContext, e.getCause().toString(), CorrectiveAction.CONTACT_SUPPORT, ErrorCategory.AIRAVATA_INTERNAL_ERROR); throw new GFacProviderException(error, e); } http://git-wip-us.apache.org/repos/asf/airavata/blob/0f5ec6f9/modules/gfac/gfac-local/src/main/java/org/apache/airavata/gfac/local/provider/impl/LocalProvider.java ---------------------------------------------------------------------- diff --git a/modules/gfac/gfac-local/src/main/java/org/apache/airavata/gfac/local/provider/impl/LocalProvider.java b/modules/gfac/gfac-local/src/main/java/org/apache/airavata/gfac/local/provider/impl/LocalProvider.java index 0bdf190..6d84cf2 100644 --- a/modules/gfac/gfac-local/src/main/java/org/apache/airavata/gfac/local/provider/impl/LocalProvider.java +++ b/modules/gfac/gfac-local/src/main/java/org/apache/airavata/gfac/local/provider/impl/LocalProvider.java @@ -23,7 +23,6 @@ package org.apache.airavata.gfac.local.provider.impl; import java.io.File; import java.io.IOException; import java.util.ArrayList; -import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.Map; @@ -36,7 +35,6 @@ import org.apache.airavata.gfac.core.context.JobExecutionContext; import org.apache.airavata.gfac.core.notification.events.StartExecutionEvent; import org.apache.airavata.gfac.core.provider.AbstractProvider; import org.apache.airavata.gfac.core.provider.GFacProviderException; -import org.apache.airavata.gfac.core.provider.utils.ProviderUtils; import org.apache.airavata.gfac.core.utils.GFacUtils; import org.apache.airavata.gfac.core.utils.OutputUtils; import org.apache.airavata.gfac.local.utils.InputStreamToFileWriter; @@ -138,7 +136,7 @@ public class LocalProvider extends AbstractProvider { jobDetails.setJobDescription(jobExecutionContext.getApplicationContext() .getApplicationDeploymentDescription().getAppDeploymentDescription()); jobExecutionContext.setJobDetails(jobDetails); - GFacUtils.saveJobStatus(jobExecutionContext,jobDetails, JobState.SETUP); + GFacUtils.saveJobStatus(jobExecutionContext,jobDetails, JobState.SETUP, monitorPublisher); // running cmd Process process = builder.start(); http://git-wip-us.apache.org/repos/asf/airavata/blob/0f5ec6f9/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/provider/impl/SSHProvider.java ---------------------------------------------------------------------- diff --git a/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/provider/impl/SSHProvider.java b/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/provider/impl/SSHProvider.java index ca24502..1807339 100644 --- a/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/provider/impl/SSHProvider.java +++ b/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/provider/impl/SSHProvider.java @@ -103,7 +103,7 @@ public class SSHProvider extends AbstractProvider { JobDescriptor jobDescriptor = GFACSSHUtils.createJobDescriptor(jobExecutionContext, cluster); details.setJobDescription(jobDescriptor.toXML()); - GFacUtils.saveJobStatus(jobExecutionContext, details, JobState.SETUP); + GFacUtils.saveJobStatus(jobExecutionContext, details, JobState.SETUP, monitorPublisher); log.info(remoteFile); File runscript = createShellScript(jobExecutionContext); cluster.scpTo(remoteFile, runscript.getAbsolutePath()); @@ -127,18 +127,11 @@ public class SSHProvider extends AbstractProvider { */ String executable = jobExecutionContext.getWorkingDir() + File.separatorChar + Constants.EXECUTABLE_NAME; details.setJobDescription(executable); - -// GFacUtils.updateJobStatus(details, JobState.SUBMITTED); RawCommandInfo rawCommandInfo = new RawCommandInfo("/bin/chmod 755 " + executable + "; " + executable); - StandardOutReader jobIDReaderCommandOutput = new StandardOutReader(); - CommandExecutor.executeCommand(rawCommandInfo, cluster.getSession(), jobIDReaderCommandOutput); String stdOutputString = getOutputifAvailable(jobIDReaderCommandOutput, "Error submitting job to resource"); - log.info("stdout=" + stdOutputString); - -// GFacUtils.updateJobStatus(details, JobState.COMPLETE); } catch (Exception e) { throw new GFacProviderException(e.getMessage(), e); } @@ -167,7 +160,7 @@ public class SSHProvider extends AbstractProvider { String jobID = cluster.submitBatchJob(jobDescriptor); if (jobID != null) { jobDetails.setJobID(jobID); - GFacUtils.saveJobStatus(jobExecutionContext, jobDetails, JobState.SUBMITTED); + GFacUtils.saveJobStatus(jobExecutionContext, jobDetails, JobState.SUBMITTED, monitorPublisher); } jobExecutionContext.setJobDetails(jobDetails); String verifyJobId = verifyJobSubmission(cluster, jobDetails); @@ -177,7 +170,7 @@ public class SSHProvider extends AbstractProvider { jobID = verifyJobId; jobDetails.setJobID(jobID); } - GFacUtils.saveJobStatus(jobExecutionContext, jobDetails, JobState.QUEUED); + GFacUtils.saveJobStatus(jobExecutionContext, jobDetails, JobState.QUEUED, monitorPublisher); } if (jobID == null) { log.error("Couldn't find remote jobId for JobName:" + jobDetails.getJobName() + ", ExperimentId:" + jobExecutionContext.getExperimentID()); @@ -191,14 +184,14 @@ public class SSHProvider extends AbstractProvider { String error = "Error submitting the job to host " + jobExecutionContext.getHostName() + " message: " + e.getMessage(); log.error(error); jobDetails.setJobID("none"); - GFacUtils.saveJobStatus(jobExecutionContext, jobDetails, JobState.FAILED); + GFacUtils.saveJobStatus(jobExecutionContext, jobDetails, JobState.FAILED, monitorPublisher); GFacUtils.saveErrorDetails(jobExecutionContext, error, CorrectiveAction.CONTACT_SUPPORT, ErrorCategory.AIRAVATA_INTERNAL_ERROR); throw new GFacProviderException(error, e); } catch (Exception e) { String error = "Error submitting the job to host " + jobExecutionContext.getHostName() + " message: " + e.getMessage(); log.error(error); jobDetails.setJobID("none"); - GFacUtils.saveJobStatus(jobExecutionContext, jobDetails, JobState.FAILED); + GFacUtils.saveJobStatus(jobExecutionContext, jobDetails, JobState.FAILED, monitorPublisher); GFacUtils.saveErrorDetails(jobExecutionContext, error, CorrectiveAction.CONTACT_SUPPORT, ErrorCategory.AIRAVATA_INTERNAL_ERROR); throw new GFacProviderException(error, e); } finally { @@ -227,7 +220,6 @@ public class SSHProvider extends AbstractProvider { } - public void cancelJob(JobExecutionContext jobExecutionContext) throws GFacProviderException, GFacException { JobDetails jobDetails = jobExecutionContext.getJobDetails(); StringBuffer data = new StringBuffer(); @@ -249,7 +241,7 @@ public class SSHProvider extends AbstractProvider { try { if (jobDetails.getJobID() != null) { cluster.cancelJob(jobDetails.getJobID()); - GFacUtils.saveJobStatus(jobExecutionContext, jobDetails, JobState.CANCELED); + GFacUtils.saveJobStatus(jobExecutionContext, jobDetails, JobState.CANCELED, monitorPublisher); } else { log.error("No Job Id is set, so cannot perform the cancel operation !!!"); throw new GFacProviderException("Cancel request failed to cancel job as JobId is null in Job Execution Context"); @@ -273,42 +265,6 @@ public class SSHProvider extends AbstractProvider { } } -// public void removeFromMonitorHandlers(JobExecutionContext jobExecutionContext, GsisshHostType host, String jobID) throws GFacHandlerException { -// List<ThreadedHandler> daemonHandlers = BetterGfacImpl.getDaemonHandlers(); -// if (daemonHandlers == null) { -// daemonHandlers = BetterGfacImpl.getDaemonHandlers(); -// } -// ThreadedHandler pullMonitorHandler = null; -// ThreadedHandler pushMonitorHandler = null; -// String monitorMode = host.getMonitorMode(); -// for (ThreadedHandler threadedHandler : daemonHandlers) { -// if ("org.apache.airavata.gfac.monitor.handlers.GridPullMonitorHandler".equals(threadedHandler.getClass().getName())) { -// pullMonitorHandler = threadedHandler; -// if ("".equals(monitorMode) || monitorMode == null || org.apache.airavata.common.utils.Constants.PULL.equals(monitorMode)) { -// jobExecutionContext.setProperty("cancel","true"); -// pullMonitorHandler.invoke(jobExecutionContext); -// } else { -// log.error("Currently we only support Pull and Push monitoring and monitorMode should be PULL" + -// " to handle by the GridPullMonitorHandler"); -// } -// } else if ("org.apache.airavata.gfac.monitor.handlers.GridPushMonitorHandler".equals(threadedHandler.getClass().getName())) { -// pushMonitorHandler = threadedHandler; -// if ("".equals(monitorMode) || monitorMode == null || org.apache.airavata.common.utils.Constants.PUSH.equals(monitorMode)) { -// log.info("Job is launched successfully now parsing it to monitoring in push mode, JobID Returned: " + jobID); -// pushMonitorHandler.invoke(jobExecutionContext); -// } else { -// log.error("Currently we only support Pull and Push monitoring and monitorMode should be PUSH" + -// " to handle by the GridPushMonitorHandler"); -// } -// } -// // have to handle the GridPushMonitorHandler logic -// } -// if (pullMonitorHandler == null && pushMonitorHandler == null && ExecutionMode.ASYNCHRONOUS.equals(jobExecutionContext.getGFacConfiguration().getExecutionMode())) { -// log.error("No Daemon handler is configured in gfac-config.xml, either pull or push, so monitoring will not invoked" + -// ", execution is configured as asynchronous, so Outhandler will not be invoked"); -// } -// } - private File createShellScript(JobExecutionContext context) throws IOException { String uniqueDir = jobExecutionContext.getApplicationName() + System.currentTimeMillis() + new Random().nextLong(); @@ -344,11 +300,6 @@ public class SSHProvider extends AbstractProvider { String value = inputParamType.getValue(); cmd.append(value); cmd.append(SPACE); -// String[] values = ((URIArrayType) actualParameter.getType()).getValueArray(); -// for (String value : values) { -// cmd.append(value); -// cmd.append(SPACE); -// } } else { String paramValue = inputParamType.getValue(); cmd.append(paramValue);
