You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ra...@apache.org on 2014/01/22 21:28:29 UTC
svn commit: r1560501 - in /airavata/trunk/modules:
orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/
orchestrator/orchestrator-core/src/main/resources/
orchestrator/orchestrator-core/src/test/java/org/apache/airavata/o...
Author: raminder
Date: Wed Jan 22 20:28:29 2014
New Revision: 1560501
URL: http://svn.apache.org/r1560501
Log:
did refectoring of orchestrator data and executor
Added:
airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/AbstractOrchestrator.java
airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/SimpleOrchestratorImpl.java
airavata/trunk/modules/orchestrator/orchestrator-core/src/main/resources/gateway.properties
airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/Orchestrator.java
- copied, changed from r1560407, airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/Orchestrator_Data.java
Removed:
airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/Orchestrator_Data.java
Modified:
airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/ExperimentRequest.java
airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/HangedJobWorker.java
airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/PullBasedOrchestrator.java
airavata/trunk/modules/orchestrator/orchestrator-core/src/main/resources/orchestrator.properties
airavata/trunk/modules/orchestrator/orchestrator-core/src/test/java/org/apache/airavata/orchestrator/core/AbstractOrchestratorTest.java
airavata/trunk/modules/orchestrator/orchestrator-core/src/test/java/org/apache/airavata/orchestrator/core/SimpleOrchestratorTest.java
airavata/trunk/modules/orchestrator/orchestrator-core/src/test/java/org/apache/airavata/orchestrator/core/TestWithStoredDescriptors.java
airavata/trunk/modules/orchestrator/orchestrator-core/src/test/resources/data-derby.sql
airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/ResourceType.java
airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/ResourceUtils.java
airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/AiravataJPARegistry.java
airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/AbstractResource.java
airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/GatewayResource.java
airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/OrchestratorDataResource.java
airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/Utils.java
airavata/trunk/modules/registry/airavata-jpa-registry/src/main/resources/META-INF/persistence.xml
airavata/trunk/modules/registry/airavata-jpa-registry/src/main/resources/data-derby.sql
airavata/trunk/modules/registry/airavata-jpa-registry/src/main/resources/data-mysql.sql
airavata/trunk/modules/registry/airavata-jpa-registry/src/test/java/org/apache/airavata/persistance/registry/jpa/OrchestratorDataResourceTest.java
airavata/trunk/modules/registry/airavata-jpa-registry/src/test/resources/data-derby.sql
Added: airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/AbstractOrchestrator.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/AbstractOrchestrator.java?rev=1560501&view=auto
==============================================================================
--- airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/AbstractOrchestrator.java (added)
+++ airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/AbstractOrchestrator.java Wed Jan 22 20:28:29 2014
@@ -0,0 +1,173 @@
+/*
+ *
+ * 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.
+ *
+*/
+package org.apache.airavata.orchestrator.core;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Set;
+import java.util.UUID;
+import java.util.concurrent.Executors;
+
+import org.apache.airavata.client.AiravataAPIFactory;
+import org.apache.airavata.client.api.AiravataAPI;
+import org.apache.airavata.client.api.exception.AiravataAPIInvocationException;
+import org.apache.airavata.common.exception.AiravataConfigurationException;
+import org.apache.airavata.common.exception.ApplicationSettingsException;
+import org.apache.airavata.common.utils.ServerSettings;
+import org.apache.airavata.orchestrator.core.context.OrchestratorContext;
+import org.apache.airavata.orchestrator.core.exception.OrchestratorException;
+import org.apache.airavata.orchestrator.core.gfac.GFACInstance;
+import org.apache.airavata.orchestrator.core.job.JobSubmitter;
+import org.apache.airavata.orchestrator.core.utils.OrchestratorUtils;
+import org.apache.airavata.registry.api.AiravataRegistry2;
+import org.apache.airavata.registry.api.AiravataRegistryFactory;
+import org.apache.airavata.registry.api.AiravataUser;
+import org.apache.airavata.registry.api.Gateway;
+import org.apache.airavata.registry.api.exception.RegistryException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public abstract class AbstractOrchestrator implements Orchestrator{
+ private final static Logger logger = LoggerFactory.getLogger(AbstractOrchestrator.class);
+ protected AiravataRegistry2 airavataRegistry;
+ protected AiravataAPI airavataAPI;
+ protected OrchestratorContext orchestratorContext;
+ protected OrchestratorConfiguration orchestratorConfiguration;
+
+ private String registryURL;
+ private String gatewayName;
+ private String airavataUserName;
+
+ public String getRegistryURL() {
+ return registryURL;
+ }
+
+ public void setRegistryURL(String registryURL) {
+ this.registryURL = registryURL;
+ }
+
+ public String getGatewayName() {
+ return gatewayName;
+ }
+
+ public void setGatewayName(String gatewayName) {
+ this.gatewayName = gatewayName;
+ }
+ public String getAiravataUserName() {
+ return airavataUserName;
+ }
+
+ public void setAiravataUserName(String airavataUserName) {
+ this.airavataUserName = airavataUserName;
+ }
+ public boolean initialize() throws OrchestratorException {
+ try {
+ /* Initializing the OrchestratorConfiguration object */
+ orchestratorConfiguration = OrchestratorUtils.loadOrchestratorConfiguration();
+ setGatewayProperties();
+ /* initializing the Orchestratorcontext object */
+ airavataRegistry = AiravataRegistryFactory.getRegistry(new Gateway(getGatewayName()), new AiravataUser(getAiravataUserName()));
+ // todo move this code to gfac service mode Jobsubmitter,
+ // todo this is ugly, SHOULD fix these isEmbedded mode code from Orchestrator
+ if (!orchestratorConfiguration.isEmbeddedMode()) {
+ Map<String, Integer> gfacNodeList = airavataRegistry.getGFACNodeList();
+ if (gfacNodeList.size() == 0) {
+ String error = "No GFAC instances available in the system, Can't initialize Orchestrator";
+ logger.error(error);
+ throw new OrchestratorException(error);
+ }
+ Set<String> uriList = gfacNodeList.keySet();
+ Iterator<String> iterator = uriList.iterator();
+ List<GFACInstance> gfacInstanceList = new ArrayList<GFACInstance>();
+ while (iterator.hasNext()) {
+ String uri = iterator.next();
+ Integer integer = gfacNodeList.get(uri);
+ gfacInstanceList.add(new GFACInstance(uri, integer));
+ }
+ }
+ orchestratorContext = new OrchestratorContext();
+ orchestratorContext.setOrchestratorConfiguration(orchestratorConfiguration);
+ orchestratorConfiguration.setAiravataAPI(getAiravataAPI());
+ orchestratorContext.setRegistry(airavataRegistry);
+ } catch (RegistryException e) {
+ logger.error("Failed to initializing Orchestrator");
+ OrchestratorException orchestratorException = new OrchestratorException(e);
+ throw orchestratorException;
+ } catch (AiravataConfigurationException e) {
+ logger.error("Failed to initializing Orchestrator");
+ OrchestratorException orchestratorException = new OrchestratorException(e);
+ throw orchestratorException;
+ } catch (IOException e) {
+ logger.error("Failed to initializing Orchestrator - Error parsing orchestrator.properties");
+ OrchestratorException orchestratorException = new OrchestratorException(e);
+ throw orchestratorException;
+ }
+ return true;
+ }
+
+ //get the registry URL and the credentials from the property file
+ protected void setGatewayProperties() {
+ InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("gateway.properties");
+ Properties properties = new Properties();
+ try {
+ properties.load(inputStream);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
+ setAiravataUserName(properties.getProperty("airavata.server.user"));
+ setGatewayName(properties.getProperty("gateway.name"));
+ setRegistryURL(properties.getProperty("airavata.server.url"));
+ }
+ //todo decide whether to return an error or do what
+ //FIXME: (MEP) as posted on dev list, I think this should return a JobRequest with the experimentID set. This would simplify some of the validation in EmbeddedGFACJobSubmitter's launcGfacWithJobRequest--just throw the job away if the JobRequest is incomplete or malformed.
+ public String createExperiment(ExperimentRequest request) throws OrchestratorException {
+ //todo use a consistent method to create the experiment ID
+ //FIXME: (MEP) Should you trust the user to do this? What if the same experimentID is sent twice by the same gateway?
+ String experimentID = request.getUserExperimentID();
+ if(experimentID == null){
+ experimentID = UUID.randomUUID().toString();
+ }
+ try {
+ airavataRegistry.storeExperiment(request.getSubmitterUserName(), experimentID, request.getApplicationName(), request.getJobRequest());
+ } catch (RegistryException e) {
+ //todo put more meaningful error message
+ logger.error("Failed to create experiment for the request from " + request.getSubmitterUserName());
+ throw new OrchestratorException(e);
+ }
+ return experimentID;
+ }
+ private AiravataAPI getAiravataAPI() {
+ if (airavataAPI == null) {
+ try {
+ airavataAPI = AiravataAPIFactory.getAPI(getGatewayName(), getAiravataUserName());
+ } catch (AiravataAPIInvocationException e) {
+ logger.error("Unable to create Airavata API", e);
+ }
+ }
+ return airavataAPI;
+ }
+}
Modified: airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/ExperimentRequest.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/ExperimentRequest.java?rev=1560501&r1=1560500&r2=1560501&view=diff
==============================================================================
--- airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/ExperimentRequest.java (original)
+++ airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/ExperimentRequest.java Wed Jan 22 20:28:29 2014
@@ -23,12 +23,12 @@ package org.apache.airavata.orchestrator
/**
* This is the initial experiment Creation request
- * This is simple compair to JobRequest object in registry-api
+ * This is simple compare to JobRequest object in registry-api
* This contains user specified userExperimentID
*/
public class ExperimentRequest {
- private String userName;
+ private String submitterUserName;
private String userExperimentID;
@@ -46,12 +46,12 @@ public class ExperimentRequest {
this.userExperimentID = userExperimentID;
}
- public String getUserName() {
- return userName;
+ public String getSubmitterUserName() {
+ return submitterUserName;
}
- public void setUserName(String userName) {
- this.userName = userName;
+ public void setSubmitterUserName(String submitterUserName) {
+ this.submitterUserName = submitterUserName;
}
public String getSystemExperimentID() {
Modified: airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/HangedJobWorker.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/HangedJobWorker.java?rev=1560501&r1=1560500&r2=1560501&view=diff
==============================================================================
--- airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/HangedJobWorker.java (original)
+++ airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/HangedJobWorker.java Wed Jan 22 20:28:29 2014
@@ -20,16 +20,15 @@
*/
package org.apache.airavata.orchestrator.core;
+import java.util.List;
+
import org.apache.airavata.orchestrator.core.context.OrchestratorContext;
import org.apache.airavata.orchestrator.core.exception.OrchestratorException;
import org.apache.airavata.orchestrator.core.gfac.GFACInstance;
import org.apache.airavata.orchestrator.core.job.JobSubmitter;
-import org.apache.airavata.registry.api.exception.RegistryException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.util.List;
-
/**
* this worker is handling hanged jobs and invoke the submitter
* after finding hanged jobs
Modified: airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/PullBasedOrchestrator.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/PullBasedOrchestrator.java?rev=1560501&r1=1560500&r2=1560501&view=diff
==============================================================================
--- airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/PullBasedOrchestrator.java (original)
+++ airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/PullBasedOrchestrator.java Wed Jan 22 20:28:29 2014
@@ -26,7 +26,6 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
-import java.util.UUID;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@@ -42,7 +41,6 @@ import org.apache.airavata.orchestrator.
import org.apache.airavata.orchestrator.core.gfac.GFACInstance;
import org.apache.airavata.orchestrator.core.job.JobSubmitter;
import org.apache.airavata.orchestrator.core.utils.OrchestratorUtils;
-import org.apache.airavata.registry.api.AiravataRegistry2;
import org.apache.airavata.registry.api.AiravataRegistryFactory;
import org.apache.airavata.registry.api.AiravataUser;
import org.apache.airavata.registry.api.Gateway;
@@ -51,51 +49,16 @@ import org.apache.airavata.registry.api.
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class PullBasedOrchestrator implements Orchestrator {
+public class PullBasedOrchestrator extends AbstractOrchestrator {
private final static Logger logger = LoggerFactory.getLogger(PullBasedOrchestrator.class);
-
- private OrchestratorContext orchestratorContext;
-
- private AiravataRegistry2 airavataRegistry;
-
private ExecutorService executor;
- private AiravataAPI airavataAPI;
// this is going to be null unless the thread count is 0
private JobSubmitter jobSubmitter = null;
public boolean initialize() throws OrchestratorException {
- try {
- /* Initializing the OrchestratorConfiguration object */
- OrchestratorConfiguration orchestratorConfiguration = OrchestratorUtils.loadOrchestratorConfiguration();
-
- /* initializing the Orchestratorcontext object */
- airavataRegistry = AiravataRegistryFactory.getRegistry(new Gateway("default"), new AiravataUser("admin"));
- // todo move this code to gfac service mode Jobsubmitter,
- // todo this is ugly, SHOULD fix these isEmbedded mode code from Orchestrator
- if (!orchestratorConfiguration.isEmbeddedMode()) {
- Map<String, Integer> gfacNodeList = airavataRegistry.getGFACNodeList();
- if (gfacNodeList.size() == 0) {
- String error = "No GFAC instances available in the system, Can't initialize Orchestrator";
- logger.error(error);
- throw new OrchestratorException(error);
- }
- Set<String> uriList = gfacNodeList.keySet();
- Iterator<String> iterator = uriList.iterator();
- List<GFACInstance> gfacInstanceList = new ArrayList<GFACInstance>();
- while (iterator.hasNext()) {
- String uri = iterator.next();
- Integer integer = gfacNodeList.get(uri);
- gfacInstanceList.add(new GFACInstance(uri, integer));
- }
- }
- orchestratorContext = new OrchestratorContext();
- orchestratorContext.setOrchestratorConfiguration(orchestratorConfiguration);
- orchestratorConfiguration.setAiravataAPI(getAiravataAPI());
- orchestratorContext.setRegistry(airavataRegistry);
- /* Starting submitter thread pool */
-
+ super.initialize();
// we have a thread to run normal new jobs except to monitor hanged jobs
if (orchestratorConfiguration.getThreadPoolSize() != 0) {
executor = Executors.newFixedThreadPool(orchestratorConfiguration.getThreadPoolSize() + 1);
@@ -113,19 +76,6 @@ public class PullBasedOrchestrator imple
throw new OrchestratorException(error, e);
}
}
- } catch (RegistryException e) {
- logger.error("Failed to initializing Orchestrator");
- OrchestratorException orchestratorException = new OrchestratorException(e);
- throw orchestratorException;
- } catch (AiravataConfigurationException e) {
- logger.error("Failed to initializing Orchestrator");
- OrchestratorException orchestratorException = new OrchestratorException(e);
- throw orchestratorException;
- } catch (IOException e) {
- logger.error("Failed to initializing Orchestrator - Error parsing orchestrator.properties");
- OrchestratorException orchestratorException = new OrchestratorException(e);
- throw orchestratorException;
- }
return true;
}
@@ -135,26 +85,7 @@ public class PullBasedOrchestrator imple
}
- //todo decide whether to return an error or do what
- //FIXME: (MEP) as posted on dev list, I think this should return a JobRequest with the experimentID set. This would simplify some of the validation in EmbeddedGFACJobSubmitter's launcGfacWithJobRequest--just throw the job away if the JobRequest is incomplete or malformed.
- public String createExperiment(ExperimentRequest request) throws OrchestratorException {
- //todo use a consistent method to create the experiment ID
- //FIXME: (MEP) Should you trust the user to do this? What if the same experimentID is sent twice by the same gateway?
- String experimentID = request.getUserExperimentID();
- if(experimentID == null){
- experimentID = UUID.randomUUID().toString();
- }
- try {
- airavataRegistry.storeExperiment(request.getUserName(), experimentID, request.getApplicationName(), request.getJobRequest());
- } catch (RegistryException e) {
- //todo put more meaningful error message
- logger.error("Failed to create experiment for the request from " + request.getUserName());
- throw new OrchestratorException(e);
- }
- return experimentID;
- }
-
- public boolean launchExperiment(JobRequest request) throws OrchestratorException {
+ public boolean launchExperiment(JobRequest request) throws OrchestratorException {
// validate the jobRequest first
if (!OrchestratorUtils.validateJobRequest(request)) {
logger.error("Invalid Job request sent, Experiment creation failed");
@@ -244,19 +175,4 @@ public class PullBasedOrchestrator imple
}
return true;
}
-
- private AiravataAPI getAiravataAPI() {
- if (airavataAPI == null) {
- try {
- String systemUserName = ServerSettings.getSystemUser();
- String gateway = ServerSettings.getSystemUserGateway();
- airavataAPI = AiravataAPIFactory.getAPI(gateway, systemUserName);
- } catch (ApplicationSettingsException e) {
- logger.error("Unable to read the properties file", e);
- } catch (AiravataAPIInvocationException e) {
- logger.error("Unable to create Airavata API", e);
- }
- }
- return airavataAPI;
- }
}
Added: airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/SimpleOrchestratorImpl.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/SimpleOrchestratorImpl.java?rev=1560501&view=auto
==============================================================================
--- airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/SimpleOrchestratorImpl.java (added)
+++ airavata/trunk/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/SimpleOrchestratorImpl.java Wed Jan 22 20:28:29 2014
@@ -0,0 +1,58 @@
+/*
+ *
+ * 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.
+ *
+*/
+package org.apache.airavata.orchestrator.core;
+
+import org.apache.airavata.orchestrator.core.exception.OrchestratorException;
+import org.apache.airavata.registry.api.JobRequest;
+
+public class SimpleOrchestratorImpl extends AbstractOrchestrator{
+
+ @Override
+ public boolean initialize() throws OrchestratorException {
+ super.initialize();
+ return false;
+ }
+
+ @Override
+ public boolean launchExperiment(JobRequest request) throws OrchestratorException {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public boolean cancelExperiment(String experimentID) throws OrchestratorException {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public void startJobSubmitter() throws OrchestratorException {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void shutdown() throws OrchestratorException {
+ // TODO Auto-generated method stub
+
+ }
+
+}
Added: airavata/trunk/modules/orchestrator/orchestrator-core/src/main/resources/gateway.properties
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/orchestrator/orchestrator-core/src/main/resources/gateway.properties?rev=1560501&view=auto
==============================================================================
--- airavata/trunk/modules/orchestrator/orchestrator-core/src/main/resources/gateway.properties (added)
+++ airavata/trunk/modules/orchestrator/orchestrator-core/src/main/resources/gateway.properties Wed Jan 22 20:28:29 2014
@@ -0,0 +1,23 @@
+#
+#
+# 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.
+#
+
+airavata.server.url=http://localhost:8080/airavata/services/registry
+airavata.server.user=admin
+gateway.name=default
Modified: airavata/trunk/modules/orchestrator/orchestrator-core/src/main/resources/orchestrator.properties
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/orchestrator/orchestrator-core/src/main/resources/orchestrator.properties?rev=1560501&r1=1560500&r2=1560501&view=diff
==============================================================================
--- airavata/trunk/modules/orchestrator/orchestrator-core/src/main/resources/orchestrator.properties (original)
+++ airavata/trunk/modules/orchestrator/orchestrator-core/src/main/resources/orchestrator.properties Wed Jan 22 20:28:29 2014
@@ -1,3 +1,22 @@
+#
+#
+# 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.
+#
job.submitter=org.apache.airavata.orchestrator.core.impl.EmbeddedGFACJobSubmitter
submitter.interval=10000
threadpool.size=10
Modified: airavata/trunk/modules/orchestrator/orchestrator-core/src/test/java/org/apache/airavata/orchestrator/core/AbstractOrchestratorTest.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/orchestrator/orchestrator-core/src/test/java/org/apache/airavata/orchestrator/core/AbstractOrchestratorTest.java?rev=1560501&r1=1560500&r2=1560501&view=diff
==============================================================================
--- airavata/trunk/modules/orchestrator/orchestrator-core/src/test/java/org/apache/airavata/orchestrator/core/AbstractOrchestratorTest.java (original)
+++ airavata/trunk/modules/orchestrator/orchestrator-core/src/test/java/org/apache/airavata/orchestrator/core/AbstractOrchestratorTest.java Wed Jan 22 20:28:29 2014
@@ -42,7 +42,7 @@ public class AbstractOrchestratorTest ex
gatewayResource = (GatewayResource) ResourceUtils.getGateway("default");
workerResource = (WorkerResource) ResourceUtils.getWorker(gatewayResource.getGatewayName(), "admin");
userResource = (UserResource) gatewayResource.create(ResourceType.USER);
- orchestratorDataResource = (OrchestratorDataResource) gatewayResource.create(ResourceType.ORCHESTRATOR_DATA);
+ orchestratorDataResource = (OrchestratorDataResource) gatewayResource.create(ResourceType.ORCHESTRATOR);
userResource.setUserName("admin");
userResource.setPassword("admin");
}
Modified: airavata/trunk/modules/orchestrator/orchestrator-core/src/test/java/org/apache/airavata/orchestrator/core/SimpleOrchestratorTest.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/orchestrator/orchestrator-core/src/test/java/org/apache/airavata/orchestrator/core/SimpleOrchestratorTest.java?rev=1560501&r1=1560500&r2=1560501&view=diff
==============================================================================
--- airavata/trunk/modules/orchestrator/orchestrator-core/src/test/java/org/apache/airavata/orchestrator/core/SimpleOrchestratorTest.java (original)
+++ airavata/trunk/modules/orchestrator/orchestrator-core/src/test/java/org/apache/airavata/orchestrator/core/SimpleOrchestratorTest.java Wed Jan 22 20:28:29 2014
@@ -61,7 +61,7 @@ public class SimpleOrchestratorTest exte
public void noUserIDTest() throws Exception {
ExperimentRequest experimentRequest = new ExperimentRequest();
//experimentRequest.setUserExperimentID("test-" + UUID.randomUUID().toString());
- experimentRequest.setUserName("orchestrator");
+ experimentRequest.setSubmitterUserName("orchestrator");
String systemExpID = orchestrator.createExperiment(experimentRequest);
@@ -81,7 +81,7 @@ public class SimpleOrchestratorTest exte
public void userIDTest() throws Exception {
ExperimentRequest experimentRequest = new ExperimentRequest();
experimentRequest.setUserExperimentID("test-" + UUID.randomUUID().toString());
- experimentRequest.setUserName("orchestrator");
+ experimentRequest.setSubmitterUserName("orchestrator");
String systemExpID = orchestrator.createExperiment(experimentRequest);
Modified: airavata/trunk/modules/orchestrator/orchestrator-core/src/test/java/org/apache/airavata/orchestrator/core/TestWithStoredDescriptors.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/orchestrator/orchestrator-core/src/test/java/org/apache/airavata/orchestrator/core/TestWithStoredDescriptors.java?rev=1560501&r1=1560500&r2=1560501&view=diff
==============================================================================
--- airavata/trunk/modules/orchestrator/orchestrator-core/src/test/java/org/apache/airavata/orchestrator/core/TestWithStoredDescriptors.java (original)
+++ airavata/trunk/modules/orchestrator/orchestrator-core/src/test/java/org/apache/airavata/orchestrator/core/TestWithStoredDescriptors.java Wed Jan 22 20:28:29 2014
@@ -119,7 +119,7 @@ public class TestWithStoredDescriptors e
public void noDescriptorTest() throws Exception {
ExperimentRequest experimentRequest = new ExperimentRequest();
experimentRequest.setUserExperimentID("test-" + UUID.randomUUID().toString());
- experimentRequest.setUserName("orchestrator");
+ experimentRequest.setSubmitterUserName("orchestrator");
String systemExpID = orchestrator.createExperiment(experimentRequest);
Modified: airavata/trunk/modules/orchestrator/orchestrator-core/src/test/resources/data-derby.sql
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/orchestrator/orchestrator-core/src/test/resources/data-derby.sql?rev=1560501&r1=1560500&r2=1560501&view=diff
==============================================================================
--- airavata/trunk/modules/orchestrator/orchestrator-core/src/test/resources/data-derby.sql (original)
+++ airavata/trunk/modules/orchestrator/orchestrator-core/src/test/resources/data-derby.sql Wed Jan 22 20:28:29 2014
@@ -265,7 +265,7 @@ CREATE TABLE Execution_Error
FOREIGN KEY (experiment_ID) REFERENCES Experiment_Data(experiment_ID) ON DELETE CASCADE
);
-create table Orchestrator_Data
+create table Orchestrator
(
experiment_ID varchar(255) NOT NULL,
username varchar(255),
@@ -274,7 +274,9 @@ create table Orchestrator_Data
gfacEPR varchar(255),
applicationName varchar(255),
jobRequest CLOB,
- PRIMARY KEY (experiment_ID)
+ submitted_time TIMESTAMP DEFAULT '0000-00-00 00:00:00',
+ status_update_time TIMESTAMP DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (experiment_ID)
);
Modified: airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/ResourceType.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/ResourceType.java?rev=1560501&r1=1560500&r2=1560501&view=diff
==============================================================================
--- airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/ResourceType.java (original)
+++ airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/ResourceType.java Wed Jan 22 20:28:29 2014
@@ -40,6 +40,6 @@ public enum ResourceType {
EXECUTION_ERROR,
GFAC_JOB_DATA,
GFAC_JOB_STATUS,
- ORCHESTRATOR_DATA
+ ORCHESTRATOR
}
Modified: airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/ResourceUtils.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/ResourceUtils.java?rev=1560501&r1=1560500&r2=1560501&view=diff
==============================================================================
--- airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/ResourceUtils.java (original)
+++ airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/ResourceUtils.java Wed Jan 22 20:28:29 2014
@@ -315,15 +315,15 @@ public class ResourceUtils {
List<Resource> resourceList = new ArrayList<Resource>();
EntityManager em = ResourceUtils.getEntityManager();
em.getTransaction().begin();
- QueryGenerator generator = new QueryGenerator(AbstractResource.ORCHESTRATORDATA);
+ QueryGenerator generator = new QueryGenerator(AbstractResource.ORCHESTRATOR);
generator.setParameter(AbstractResource.OrchestratorDataConstants.STATUS, status);
Query q = generator.selectQuery(em);
List<?> results = q.getResultList();
if (results.size() != 0) {
for (Object result : results) {
- Orchestrator_Data orchestratorData = (Orchestrator_Data) result;
+ Orchestrator orchestratorData = (Orchestrator) result;
OrchestratorDataResource orchestratorDataResource = (OrchestratorDataResource)
- Utils.getResource(ResourceType.ORCHESTRATOR_DATA, orchestratorData);
+ Utils.getResource(ResourceType.ORCHESTRATOR, orchestratorData);
resourceList.add(orchestratorDataResource);
}
}
Modified: airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/AiravataJPARegistry.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/AiravataJPARegistry.java?rev=1560501&r1=1560500&r2=1560501&view=diff
==============================================================================
--- airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/AiravataJPARegistry.java (original)
+++ airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/AiravataJPARegistry.java Wed Jan 22 20:28:29 2014
@@ -2611,7 +2611,7 @@ public class AiravataJPARegistry extends
public AiravataJobState getState(String experimentID) throws RegistryException {
GatewayResource gateway = jpa.getGateway();
- OrchestratorDataResource resource = (OrchestratorDataResource)gateway.get(ResourceType.ORCHESTRATOR_DATA, experimentID);
+ OrchestratorDataResource resource = (OrchestratorDataResource)gateway.get(ResourceType.ORCHESTRATOR, experimentID);
AiravataJobState airavataJobState = new AiravataJobState();
airavataJobState.setJobState(AiravataJobState.State.valueOf(resource.getStatus()));
return airavataJobState;
@@ -2645,7 +2645,7 @@ public class AiravataJPARegistry extends
*/
public JobRequest fetchAcceptedJob(String experimentID) throws RegistryException {
GatewayResource gatewayResource = jpa.getGateway();
- OrchestratorDataResource orchestratorResource = (OrchestratorDataResource)gatewayResource.get(ResourceType.ORCHESTRATOR_DATA, experimentID);
+ OrchestratorDataResource orchestratorResource = (OrchestratorDataResource)gatewayResource.get(ResourceType.ORCHESTRATOR, experimentID);
JobRequest jobRequest = new JobRequest();
jobRequest.setUserName(orchestratorResource.getUserName());
jobRequest.setSystemExperimentID(orchestratorResource.getExperimentID());
@@ -2670,7 +2670,7 @@ public class AiravataJPARegistry extends
public boolean resetHangedJob(String experimentID) throws RegistryException {
try {
GatewayResource gatewayResource = jpa.getGateway();
- OrchestratorDataResource orchestratorResource = (OrchestratorDataResource)gatewayResource.get(ResourceType.ORCHESTRATOR_DATA, experimentID);
+ OrchestratorDataResource orchestratorResource = (OrchestratorDataResource)gatewayResource.get(ResourceType.ORCHESTRATOR, experimentID);
orchestratorResource.setStatus(AiravataJobState.State.SUBMITTED.toString());
orchestratorResource.save();
return true;
Copied: airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/Orchestrator.java (from r1560407, airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/Orchestrator_Data.java)
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/Orchestrator.java?p2=airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/Orchestrator.java&p1=airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/Orchestrator_Data.java&r1=1560407&r2=1560501&rev=1560501&view=diff
==============================================================================
--- airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/Orchestrator_Data.java (original)
+++ airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/Orchestrator.java Wed Jan 22 20:28:29 2014
@@ -1,5 +1,27 @@
+/*
+ *
+ * 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.
+ *
+*/
package org.apache.airavata.persistance.registry.jpa.model;
+import java.sql.Timestamp;
+
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@@ -7,8 +29,8 @@ import javax.persistence.Lob;
import javax.persistence.Table;
@Entity
-@Table(name = "Orchestrator_Data")
-public class Orchestrator_Data {
+@Table(name = "Orchestrator")
+public class Orchestrator {
@Id
private String experiment_ID;
@@ -19,6 +41,8 @@ public class Orchestrator_Data {
private String applicationName;
@Lob
private String jobRequest;
+ private Timestamp submitted_time;
+ private Timestamp status_update_time;
public String getExperiment_ID() {
return experiment_ID;
@@ -63,6 +87,18 @@ public class Orchestrator_Data {
public void setJobRequest(String jobRequest) {
this.jobRequest = jobRequest;
}
+ public Timestamp getSubmittedTime() {
+ return submitted_time;
+ }
+ public void setSubmittedTime(Timestamp submitted_time) {
+ this.submitted_time = submitted_time;
+ }
+ public Timestamp getStatusUpdateTime() {
+ return status_update_time;
+ }
+ public void setStatusUpdateTime(Timestamp status_update_time) {
+ this.status_update_time = status_update_time;
+ }
}
Modified: airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/AbstractResource.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/AbstractResource.java?rev=1560501&r1=1560500&r2=1560501&view=diff
==============================================================================
--- airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/AbstractResource.java (original)
+++ airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/AbstractResource.java Wed Jan 22 20:28:29 2014
@@ -45,7 +45,7 @@ public abstract class AbstractResource i
public static final String EXECUTION_ERROR = "Execution_Error";
public static final String GFAC_JOB_DATA = "GFac_Job_Data";
public static final String GFAC_JOB_STATUS = "GFac_Job_Status";
- public static final String ORCHESTRATORDATA = "Orchestrator_Data";
+ public static final String ORCHESTRATOR = "Orchestrator";
// Gateway Table
public final class GatewayConstants {
Modified: airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/GatewayResource.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/GatewayResource.java?rev=1560501&r1=1560500&r2=1560501&view=diff
==============================================================================
--- airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/GatewayResource.java (original)
+++ airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/GatewayResource.java Wed Jan 22 20:28:29 2014
@@ -132,7 +132,7 @@ public class GatewayResource extends Abs
WorkerResource workerResource = new WorkerResource();
workerResource.setGateway(this);
return workerResource;
- case ORCHESTRATOR_DATA:
+ case ORCHESTRATOR:
OrchestratorDataResource orchestratorDataResource = new OrchestratorDataResource();
orchestratorDataResource.setGateway(this);
return orchestratorDataResource;
@@ -194,8 +194,8 @@ public class GatewayResource extends Abs
q = generator.deleteQuery(em);
q.executeUpdate();
break;
- case ORCHESTRATOR_DATA:
- generator = new QueryGenerator(ORCHESTRATORDATA);
+ case ORCHESTRATOR:
+ generator = new QueryGenerator(ORCHESTRATOR);
generator.setParameter(OrchestratorDataConstants.EXPERIMENT_ID, name);
q = generator.deleteQuery(em);
q.executeUpdate();
@@ -287,13 +287,13 @@ public class GatewayResource extends Abs
em.getTransaction().commit();
em.close();
return applicationDescriptorResource;
- case ORCHESTRATOR_DATA:
- generator = new QueryGenerator(ORCHESTRATORDATA);
+ case ORCHESTRATOR:
+ generator = new QueryGenerator(ORCHESTRATOR);
generator.setParameter(OrchestratorDataConstants.EXPERIMENT_ID, name);
q = generator.selectQuery(em);
- Orchestrator_Data orchData = (Orchestrator_Data) q.getSingleResult();
+ Orchestrator orchData = (Orchestrator) q.getSingleResult();
OrchestratorDataResource orchestratorDataResource =
- (OrchestratorDataResource)Utils.getResource(ResourceType.ORCHESTRATOR_DATA, orchData);
+ (OrchestratorDataResource)Utils.getResource(ResourceType.ORCHESTRATOR, orchData);
em.getTransaction().commit();
em.close();
return orchestratorDataResource;
@@ -429,13 +429,13 @@ public class GatewayResource extends Abs
resourceList.add(userResource);
}
break;
- case ORCHESTRATOR_DATA:
- generator = new QueryGenerator(ORCHESTRATORDATA);
+ case ORCHESTRATOR:
+ generator = new QueryGenerator(ORCHESTRATOR);
q = generator.selectQuery(em);
for (Object o : q.getResultList()) {
- Orchestrator_Data orchData = (Orchestrator_Data) o;
+ Orchestrator orchData = (Orchestrator) o;
OrchestratorDataResource orchestratorDataResource =
- (OrchestratorDataResource)Utils.getResource(ResourceType.ORCHESTRATOR_DATA, orchData);
+ (OrchestratorDataResource)Utils.getResource(ResourceType.ORCHESTRATOR, orchData);
resourceList.add(orchestratorDataResource);
}
break;
@@ -516,6 +516,11 @@ public class GatewayResource extends Abs
Experiment existingExp = em.find(Experiment.class, name.toString());
em.close();
return existingExp != null;
+ case ORCHESTRATOR:
+ em = ResourceUtils.getEntityManager();
+ Orchestrator existingOrchestrator = em.find(Orchestrator.class, name.toString());
+ em.close();
+ return existingOrchestrator != null;
default:
logger.error("Unsupported resource type for gateway resource.", new IllegalArgumentException());
throw new IllegalArgumentException("Unsupported resource type for gateway resource.");
@@ -772,7 +777,7 @@ public class GatewayResource extends Abs
}
public OrchestratorDataResource createOrchestratorData(String experimentID){
- OrchestratorDataResource dataResource = (OrchestratorDataResource)create(ResourceType.ORCHESTRATOR_DATA);
+ OrchestratorDataResource dataResource = (OrchestratorDataResource)create(ResourceType.ORCHESTRATOR);
dataResource.setExperimentID(experimentID);
return dataResource;
}
Modified: airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/OrchestratorDataResource.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/OrchestratorDataResource.java?rev=1560501&r1=1560500&r2=1560501&view=diff
==============================================================================
--- airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/OrchestratorDataResource.java (original)
+++ airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/OrchestratorDataResource.java Wed Jan 22 20:28:29 2014
@@ -1,17 +1,34 @@
+/*
+ *
+ * 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.
+ *
+*/
package org.apache.airavata.persistance.registry.jpa.resources;
-import java.util.ArrayList;
+import java.sql.Timestamp;
import java.util.List;
import javax.persistence.EntityManager;
-import javax.persistence.Query;
import org.apache.airavata.persistance.registry.jpa.Resource;
import org.apache.airavata.persistance.registry.jpa.ResourceType;
import org.apache.airavata.persistance.registry.jpa.ResourceUtils;
-import org.apache.airavata.persistance.registry.jpa.model.Experiment;
-import org.apache.airavata.persistance.registry.jpa.model.Orchestrator_Data;
-import org.apache.airavata.persistance.registry.jpa.utils.QueryGenerator;
+import org.apache.airavata.persistance.registry.jpa.model.Orchestrator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -26,6 +43,8 @@ public class OrchestratorDataResource ex
private String gfacEPR;
private String jobRequest;
private GatewayResource gateway;
+ private Timestamp submittedTime;
+ private Timestamp statusUpdateTime;
public String getExperimentID() {
return experimentID;
@@ -91,6 +110,22 @@ public class OrchestratorDataResource ex
this.gateway = gateway;
}
+ public Timestamp getSubmittedTime() {
+ return submittedTime;
+ }
+
+ public void setSubmittedTime(Timestamp submittedTime) {
+ this.submittedTime = submittedTime;
+ }
+
+ public Timestamp getStatusUpdateTime() {
+ return statusUpdateTime;
+ }
+
+ public void setStatusUpdateTime(Timestamp statusUpdateTime) {
+ this.statusUpdateTime = statusUpdateTime;
+ }
+
@Override
public Resource create(ResourceType type) {
log.error("Unsupported resource type for orchestrator resource.", new IllegalArgumentException());
@@ -118,30 +153,34 @@ public class OrchestratorDataResource ex
@Override
public void save() {
EntityManager em = ResourceUtils.getEntityManager();
- Orchestrator_Data existingOrchestratorData = em.find(Orchestrator_Data.class,
+ Orchestrator existingOrchestrator = em.find(Orchestrator.class,
experimentID);
em.close();
em = ResourceUtils.getEntityManager();
em.getTransaction().begin();
- Orchestrator_Data orchestratorData = new Orchestrator_Data();
- orchestratorData.setExperiment_ID(experimentID);
- orchestratorData.setUserName(userName);
- orchestratorData.setGfacEPR(gfacEPR);
- orchestratorData.setState(state);
- orchestratorData.setStatus(status);
- orchestratorData.setApplicationName(applicationName);
- orchestratorData.setJobRequest(jobRequest);
- if (existingOrchestratorData != null) {
- existingOrchestratorData.setExperiment_ID(experimentID);
- existingOrchestratorData.setUserName(userName);
- existingOrchestratorData.setState(state);
- existingOrchestratorData.setStatus(status);
- existingOrchestratorData.setGfacEPR(gfacEPR);
- existingOrchestratorData.setApplicationName(applicationName);
- existingOrchestratorData.setJobRequest(jobRequest);
- orchestratorData = em.merge(existingOrchestratorData);
+ Orchestrator orchestrator = new Orchestrator();
+ orchestrator.setExperiment_ID(experimentID);
+ orchestrator.setUserName(userName);
+ orchestrator.setGfacEPR(gfacEPR);
+ orchestrator.setState(state);
+ orchestrator.setStatus(status);
+ orchestrator.setApplicationName(applicationName);
+ orchestrator.setJobRequest(jobRequest);
+ orchestrator.setSubmittedTime(submittedTime);
+ orchestrator.setStatusUpdateTime(statusUpdateTime);
+ if (existingOrchestrator != null) {
+ existingOrchestrator.setExperiment_ID(experimentID);
+ existingOrchestrator.setUserName(userName);
+ existingOrchestrator.setState(state);
+ existingOrchestrator.setStatus(status);
+ existingOrchestrator.setGfacEPR(gfacEPR);
+ existingOrchestrator.setApplicationName(applicationName);
+ existingOrchestrator.setJobRequest(jobRequest);
+ existingOrchestrator.setSubmittedTime(submittedTime);
+ existingOrchestrator.setStatusUpdateTime(statusUpdateTime);
+ orchestrator = em.merge(existingOrchestrator);
} else {
- em.persist(orchestratorData);
+ em.persist(orchestrator);
}
em.getTransaction().commit();
em.close();
Modified: airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/Utils.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/Utils.java?rev=1560501&r1=1560500&r2=1560501&view=diff
==============================================================================
--- airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/Utils.java (original)
+++ airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/Utils.java Wed Jan 22 20:28:29 2014
@@ -331,9 +331,9 @@ public class Utils {
logger.error("Object should be a GFac Job Status type.", new IllegalArgumentException());
throw new IllegalArgumentException("Object should be a GFac Job Status.");
}
- case ORCHESTRATOR_DATA:
- if(o instanceof Orchestrator_Data){
- return createOrchestratorData((Orchestrator_Data)o);
+ case ORCHESTRATOR:
+ if(o instanceof Orchestrator){
+ return createOrchestratorData((Orchestrator)o);
}else{
logger.error("Object should be orchestrator data.", new IllegalArgumentException());
throw new IllegalArgumentException("Object should be orchestrator data.");
@@ -652,7 +652,7 @@ public class Utils {
return gFacJobStatusResource;
}
- private static Resource createOrchestratorData(Orchestrator_Data data){
+ private static Resource createOrchestratorData(Orchestrator data){
OrchestratorDataResource dataResource = new OrchestratorDataResource();
dataResource.setExperimentID(data.getExperiment_ID());
dataResource.setUserName(data.getUserName());
@@ -660,6 +660,8 @@ public class Utils {
dataResource.setStatus(data.getStatus());
dataResource.setGfacEPR(data.getGfacEPR());
dataResource.setJobRequest(data.getJobRequest());
+ dataResource.setSubmittedTime(data.getSubmittedTime());
+ dataResource.setStatusUpdateTime(data.getStatusUpdateTime());
return dataResource;
}
// public static byte[] getByteArray(String content){
Modified: airavata/trunk/modules/registry/airavata-jpa-registry/src/main/resources/META-INF/persistence.xml
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/resources/META-INF/persistence.xml?rev=1560501&r1=1560500&r2=1560501&view=diff
==============================================================================
--- airavata/trunk/modules/registry/airavata-jpa-registry/src/main/resources/META-INF/persistence.xml (original)
+++ airavata/trunk/modules/registry/airavata-jpa-registry/src/main/resources/META-INF/persistence.xml Wed Jan 22 20:28:29 2014
@@ -42,7 +42,7 @@
<class>org.apache.airavata.persistance.registry.jpa.model.Execution_Error</class>
<class>org.apache.airavata.persistance.registry.jpa.model.GFac_Job_Data</class>
<class>org.apache.airavata.persistance.registry.jpa.model.GFac_Job_Status</class>
- <class>org.apache.airavata.persistance.registry.jpa.model.Orchestrator_Data</class>
+ <class>org.apache.airavata.persistance.registry.jpa.model.Orchestrator</class>
<!--properties>
<property name="openjpa.ConnectionURL"
value="jdbc:mysql://localhost:3306/persitant_data" />
Modified: airavata/trunk/modules/registry/airavata-jpa-registry/src/main/resources/data-derby.sql
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/resources/data-derby.sql?rev=1560501&r1=1560500&r2=1560501&view=diff
==============================================================================
--- airavata/trunk/modules/registry/airavata-jpa-registry/src/main/resources/data-derby.sql (original)
+++ airavata/trunk/modules/registry/airavata-jpa-registry/src/main/resources/data-derby.sql Wed Jan 22 20:28:29 2014
@@ -265,7 +265,7 @@ CREATE TABLE Execution_Error
FOREIGN KEY (experiment_ID) REFERENCES Experiment_Data(experiment_ID) ON DELETE CASCADE
);
-create table Orchestrator_Data
+create table Orchestrator
(
experiment_ID varchar(255) NOT NULL,
username varchar(255),
@@ -274,6 +274,8 @@ create table Orchestrator_Data
gfacEPR varchar(255),
applicationName varchar(255),
jobRequest CLOB,
+ submitted_time TIMESTAMP DEFAULT '0000-00-00 00:00:00',
+ status_update_time TIMESTAMP DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (experiment_ID)
);
Modified: airavata/trunk/modules/registry/airavata-jpa-registry/src/main/resources/data-mysql.sql
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/resources/data-mysql.sql?rev=1560501&r1=1560500&r2=1560501&view=diff
==============================================================================
--- airavata/trunk/modules/registry/airavata-jpa-registry/src/main/resources/data-mysql.sql (original)
+++ airavata/trunk/modules/registry/airavata-jpa-registry/src/main/resources/data-mysql.sql Wed Jan 22 20:28:29 2014
@@ -262,7 +262,7 @@ CREATE TABLE Execution_Error
FOREIGN KEY (experiment_ID) REFERENCES Experiment_Data(experiment_ID) ON DELETE CASCADE
);
-create table Orchestrator_Data
+create table Orchestrator
(
experiment_ID varchar(255) NOT NULL,
username varchar(255),
@@ -271,7 +271,9 @@ create table Orchestrator_Data
gfacEPR varchar(255),
applicationName varchar(255),
jobRequest LONGTEXT,
- PRIMARY KEY (experiment_ID)
+ submitted_time TIMESTAMP DEFAULT now(),
+ status_update_time TIMESTAMP DEFAULT now() on update now(),
+ PRIMARY KEY (experiment_ID)
);
Modified: airavata/trunk/modules/registry/airavata-jpa-registry/src/test/java/org/apache/airavata/persistance/registry/jpa/OrchestratorDataResourceTest.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/registry/airavata-jpa-registry/src/test/java/org/apache/airavata/persistance/registry/jpa/OrchestratorDataResourceTest.java?rev=1560501&r1=1560500&r2=1560501&view=diff
==============================================================================
--- airavata/trunk/modules/registry/airavata-jpa-registry/src/test/java/org/apache/airavata/persistance/registry/jpa/OrchestratorDataResourceTest.java (original)
+++ airavata/trunk/modules/registry/airavata-jpa-registry/src/test/java/org/apache/airavata/persistance/registry/jpa/OrchestratorDataResourceTest.java Wed Jan 22 20:28:29 2014
@@ -16,7 +16,7 @@ public class OrchestratorDataResourceTes
public void setUp() throws Exception {
super.setUp();
gatewayResource = super.getGatewayResource();
- dataResource = (OrchestratorDataResource) gatewayResource.create(ResourceType.ORCHESTRATOR_DATA);
+ dataResource = (OrchestratorDataResource) gatewayResource.create(ResourceType.ORCHESTRATOR);
}
@@ -27,7 +27,7 @@ public class OrchestratorDataResourceTes
dataResource.save();
assertNotNull("Orchestrator data resource created successfully", dataResource);
// Get saved data
- assertNotNull("Orchestrator data resource get successfully", gatewayResource.get(ResourceType.ORCHESTRATOR_DATA, experimentID));
+ assertNotNull("Orchestrator data resource get successfully", gatewayResource.get(ResourceType.ORCHESTRATOR, experimentID));
}
@Override
Modified: airavata/trunk/modules/registry/airavata-jpa-registry/src/test/resources/data-derby.sql
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/registry/airavata-jpa-registry/src/test/resources/data-derby.sql?rev=1560501&r1=1560500&r2=1560501&view=diff
==============================================================================
--- airavata/trunk/modules/registry/airavata-jpa-registry/src/test/resources/data-derby.sql (original)
+++ airavata/trunk/modules/registry/airavata-jpa-registry/src/test/resources/data-derby.sql Wed Jan 22 20:28:29 2014
@@ -266,7 +266,7 @@ CREATE TABLE Execution_Error
FOREIGN KEY (experiment_ID) REFERENCES Experiment_Data(experiment_ID) ON DELETE CASCADE
);
-create table Orchestrator_Data
+create table Orchestrator
(
experiment_ID varchar(255) NOT NULL,
username varchar(255),
@@ -275,7 +275,9 @@ create table Orchestrator_Data
gfacEPR varchar(255),
applicationName varchar(255),
jobRequest CLOB,
- PRIMARY KEY (experiment_ID)
+ submitted_time TIMESTAMP DEFAULT '0000-00-00 00:00:00',
+ status_update_time TIMESTAMP DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (experiment_ID)
);
-- CREATE TABLE openjpa_sequence_table
-- (