Updated Branches: refs/heads/master 8ee118864 -> e59e25ec3
more changes to new gfac-cpi and orchestrator usage - AIRAVATA-1011 Project: http://git-wip-us.apache.org/repos/asf/airavata/repo Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/6f604649 Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/6f604649 Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/6f604649 Branch: refs/heads/master Commit: 6f604649e7222308581ac9f3f5d4145f89500389 Parents: 029e604 Author: lahiru <[email protected]> Authored: Wed Feb 12 15:42:15 2014 -0500 Committer: lahiru <[email protected]> Committed: Wed Feb 12 15:42:15 2014 -0500 ---------------------------------------------------------------------- .../airavata/api/server/AiravataServer.java | 1 + .../java/org/apache/airavata/gfac/cpi/GFac.java | 40 +++++++++++++------- .../registry/jpa/impl/AiravataJPARegistry.java | 14 ------- 3 files changed, 28 insertions(+), 27 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/airavata/blob/6f604649/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/AiravataServer.java ---------------------------------------------------------------------- diff --git a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/AiravataServer.java b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/AiravataServer.java index a81bfd6..7a246ee 100644 --- a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/AiravataServer.java +++ b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/AiravataServer.java @@ -40,6 +40,7 @@ public class AiravataServer { //FIXME: Read the port from airavata-server.config file private static final int THRIFT_SERVER_PORT = 8930; + public static void StartAiravataServer(Airavata.Processor<MockAiravataServerHandler> mockAiravataServer) throws AiravataSystemException { try { TServerTransport serverTransport = new TServerSocket(THRIFT_SERVER_PORT); http://git-wip-us.apache.org/repos/asf/airavata/blob/6f604649/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/cpi/GFac.java ---------------------------------------------------------------------- diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/cpi/GFac.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/cpi/GFac.java index c4ea71b..2abef52 100644 --- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/cpi/GFac.java +++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/cpi/GFac.java @@ -37,12 +37,19 @@ import org.apache.airavata.model.experiment.ConfigurationData; import org.apache.airavata.registry.api.AiravataRegistry2; import org.apache.airavata.registry.cpi.DataType; import org.apache.airavata.registry.cpi.Registry; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.io.File; import java.net.URL; import java.util.*; +/** + * This is the GFac CPI class for external usage, this simply have a single method to submit a job to + * the resource, required data for the job has to be stored in registry prior to invoke this object. + */ public class GFac { + private static final Logger log = LoggerFactory.getLogger(GFac.class); private Registry registry; @@ -50,15 +57,28 @@ public class GFac { private AiravataRegistry2 airavataRegistry2; + /** + * Constructor for GFac + * @param registry + * @param airavataAPI + * @param airavataRegistry2 + */ public GFac(Registry registry, AiravataAPI airavataAPI, AiravataRegistry2 airavataRegistry2) { this.registry = registry; this.airavataAPI = airavataAPI; this.airavataRegistry2 = airavataRegistry2; } - + /** + * This is the job launching method outsiders of GFac can use, this will invoke the GFac handler chain and providers + * And update the registry occordingly, so the users can query the database to retrieve status and output from Registry + * + * @param experimentID + * @return + * @throws GFacException + */ public boolean submitJob(String experimentID) throws GFacException { - ConfigurationData configurationData = (ConfigurationData)registry.get(DataType.EXPERIMENT_CONFIGURATION_DATA, experimentID); + ConfigurationData configurationData = (ConfigurationData) registry.get(DataType.EXPERIMENT_CONFIGURATION_DATA, experimentID); String serviceName = configurationData.getApplicationId(); if (serviceName == null) { @@ -77,28 +97,20 @@ public class GFac { ServiceDescription serviceDescription = airavataRegistry2.getServiceDescriptor(serviceName); ApplicationDescription applicationDescription = airavataRegistry2.getApplicationDescriptors(serviceName, hostDescription.getType().getHostName()); - // When we run getInParameters we set the actualParameter object, this has to be fixed - //FIXME: will these class loaders work correctly in Thrift? - //FIXME: gfac-config.xml is only under src/test. URL resource = GFac.class.getClassLoader().getResource("gfac-config.xml"); Properties configurationProperties = ServerSettings.getProperties(); GFacConfiguration gFacConfiguration = GFacConfiguration.create(new File(resource.getPath()), airavataAPI, configurationProperties); JobExecutionContext jobExecutionContext = new JobExecutionContext(gFacConfiguration, serviceName); - //Here we get only the contextheader information sent specific for this node - //Add security context - ApplicationContext applicationContext = new ApplicationContext(); applicationContext.setApplicationDeploymentDescription(applicationDescription); applicationContext.setHostDescription(hostDescription); applicationContext.setServiceDescription(serviceDescription); - jobExecutionContext.setApplicationContext(applicationContext); Map<String, String> experimentInputs = configurationData.getExperimentInputs(); - jobExecutionContext.setInMessageContext(new MessageContext(GFacUtils.getMessageContext(experimentInputs, serviceDescription.getType().getInputParametersArray()))); @@ -107,11 +119,13 @@ public class GFac { jobExecutionContext.setProperty(Constants.PROP_TOPIC, experimentID); jobExecutionContext.setExperimentID(experimentID); - //FIXME: (MEP) GFacAPI.submitJob() throws a GFacException that isn't caught here. You want to catch this before updating the registry. + + GFacAPI gfacAPI1 = new GFacAPI(); gfacAPI1.submitJob(jobExecutionContext); - }catch (Exception e){ - + } catch (Exception e) { + log.error("Error inovoking the job with experiment ID: " + experimentID); + throw new GFacException(e); } return true; } http://git-wip-us.apache.org/repos/asf/airavata/blob/6f604649/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/AiravataJPARegistry.java ---------------------------------------------------------------------- diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/AiravataJPARegistry.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/AiravataJPARegistry.java index 14fb95a..9ec0c43 100644 --- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/AiravataJPARegistry.java +++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/AiravataJPARegistry.java @@ -2642,20 +2642,6 @@ public class AiravataJPARegistry extends AiravataRegistry2{ return acceptedJobIds; } - /** - * TODO: Not fully implemented - * @param experimentID - * @return - * @throws RegistryException - */ - public JobRequest fetchAcceptedJob(String experimentID) throws RegistryException { - GatewayResource gatewayResource = jpa.getGateway(); - OrchestratorDataResource orchestratorResource = (OrchestratorDataResource)gatewayResource.get(ResourceType.ORCHESTRATOR, experimentID); - JobRequest jobRequest = new JobRequest(); - jobRequest.setUserName(orchestratorResource.getUserName()); - jobRequest.setSystemExperimentID(orchestratorResource.getExperimentID()); - return jobRequest; - } public List<String> getAllHangedJobs() throws RegistryException { List<Resource> hangedJobs = ResourceUtils.getOrchestratorDataWithStatus(AiravataJobState.State.UNKNOWN.toString());
