You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ch...@apache.org on 2014/02/10 21:48:11 UTC
git commit: completing registry cpi for experiment - AIRAVATA-1006
Updated Branches:
refs/heads/master c8a68118b -> e4a12c345
completing registry cpi for experiment - AIRAVATA-1006
Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/e4a12c34
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/e4a12c34
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/e4a12c34
Branch: refs/heads/master
Commit: e4a12c3458913f5cca47a8625ca48620ae6f1735
Parents: c8a6811
Author: chathuri <ch...@apache.org>
Authored: Mon Feb 10 15:48:04 2014 -0500
Committer: chathuri <ch...@apache.org>
Committed: Mon Feb 10 15:48:04 2014 -0500
----------------------------------------------------------------------
.../registry/jpa/impl/ExperimentRegistry.java | 28 ++++++--
.../registry/jpa/impl/RegistryImpl.java | 70 +++++++++++++++++++-
.../model/Experiment_Configuration_Data.java | 12 +++-
.../registry/jpa/model/Experiment_Summary.java | 14 +++-
.../resources/ExperimentConfigDataResource.java | 11 +++
.../resources/ExperimentSummaryResource.java | 2 +
.../jpa/ExperimentMetadataResourceTest.java | 12 ++++
7 files changed, 138 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/airavata/blob/e4a12c34/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java
index 5369f90..c88381d 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java
@@ -28,7 +28,6 @@ import org.apache.airavata.persistance.registry.jpa.Resource;
import org.apache.airavata.persistance.registry.jpa.ResourceType;
import org.apache.airavata.persistance.registry.jpa.resources.*;
import org.apache.airavata.persistance.registry.jpa.utils.ThriftDataModelConversion;
-import org.apache.airavata.registry.cpi.DependentDataType;
import org.apache.airavata.registry.cpi.utils.Constants;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -236,7 +235,7 @@ public class ExperimentRegistry {
exConfigData.setNumberOfRetries(qosParams.getNumberofRetries());
exConfigData.save();
}else if (fieldName.equals(Constants.FieldConstants.ConfigurationDataConstants.EXPERIMENT_INPUTS)){
- if (value instanceof HashMap){
+ if (value instanceof Map){
Map<String, String> experimentInputs = (HashMap<String, String>)value;
List<Resource> exInputs = exBasicData.get(ResourceType.EXPERIMENT_INPUT);
int i = 0;
@@ -349,7 +348,7 @@ public class ExperimentRegistry {
try {
if (fieldName.equals(Constants.FieldConstants.BasicMetadataConstants.USER_NAME)){
UserReg userRegistry = new UserReg();
- WorkerResource worker = userRegistry.getSysteUser();
+ WorkerResource worker = userRegistry.getExistingUser(ServerSettings.getSystemUserGateway(), (String)value);
List<Resource> resources = worker.get(ResourceType.EXPERIMENT_METADATA);
for (Resource resource : resources){
ExperimentMetadataResource ex = (ExperimentMetadataResource)resource;
@@ -372,7 +371,7 @@ public class ExperimentRegistry {
gatewayRegistry = new GatewayRegistry();
GatewayResource gateway = gatewayRegistry.getDefaultGateway();
if (fieldName.equals(Constants.FieldConstants.ConfigurationDataConstants.EXPERIMENT_ID)){
- ExperimentMetadataResource exBasicData = (ExperimentMetadataResource) gateway.get(ResourceType.EXPERIMENT_METADATA, (String)value);
+ ExperimentMetadataResource exBasicData = (ExperimentMetadataResource) gateway.get(ResourceType.EXPERIMENT_METADATA, value);
List<Resource> resources = exBasicData.get(ResourceType.EXPERIMENT_CONFIG_DATA);
for (Resource resource : resources){
ExperimentConfigDataResource configDataResource = (ExperimentConfigDataResource)resource;
@@ -501,7 +500,26 @@ public class ExperimentRegistry {
}
}
- public boolean isExist(DependentDataType dataType, Object identifier) {
+ public boolean isExperimentBasicDataExist(String expID) {
+ try{
+ GatewayResource defaultGateway = gatewayRegistry.getDefaultGateway();
+ defaultGateway.isExists(ResourceType.EXPERIMENT_METADATA, expID);
+ return true;
+ } catch (ApplicationSettingsException e) {
+ logger.error("Unable to read airavata-server properties..", e.getMessage());
+ }
+ return false;
+ }
+
+ public boolean isExperimentConfigDataExist(String expID) {
+ try {
+ GatewayResource defaultGateway = gatewayRegistry.getDefaultGateway();
+ ExperimentMetadataResource exBasicData = (ExperimentMetadataResource)defaultGateway.get(ResourceType.EXPERIMENT_METADATA, expID);
+ exBasicData.isExists(ResourceType.EXPERIMENT_CONFIG_DATA, expID);
+ return true;
+ } catch (ApplicationSettingsException e) {
+ logger.error("Unable to read airavata-server properties..", e.getMessage());
+ }
return false;
}
http://git-wip-us.apache.org/repos/asf/airavata/blob/e4a12c34/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/RegistryImpl.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/RegistryImpl.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/RegistryImpl.java
index 9105ac1..d2e661d 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/RegistryImpl.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/RegistryImpl.java
@@ -37,6 +37,16 @@ public class RegistryImpl implements Registry {
private final static Logger logger = LoggerFactory.getLogger(RegistryImpl.class);
ExperimentRegistry experimentRegistry = new ExperimentRegistry();
+ /**
+ * This method is to add an object in to the registry
+ * @param dataType Data type is a predefined type which the programmer should choose according to the object he
+ * is going to save in to registry
+ * @param newObjectToAdd Object which contains the fields that need to be saved in to registry. This object is a
+ * thrift model object. In experiment case this object can be BasicMetadata, ConfigurationData
+ * etc
+ * @return return the identifier to identify the object
+ */
+ @Override
public Object add(TopLevelDataType dataType, Object newObjectToAdd) {
switch (dataType){
case EXPERIMENT_BASIC_DATA:
@@ -47,6 +57,17 @@ public class RegistryImpl implements Registry {
}
}
+ /**
+ * This method is to add an object in to the registry
+ * @param dataType Data type is a predefined type which the programmer should choose according to the object he
+ * is going to save in to registry
+ * @param newObjectToAdd Object which contains the fields that need to be saved in to registry. This object is a
+ * thrift model object. In experiment case this object can be BasicMetadata, ConfigurationData
+ * etc
+ * @param dependentIdentifier Object which contains the identifier if the object that is going to add is not a top
+ * level object in the data model. If it is a top level object, programmer can pass it as
+ * null
+ */
@Override
public void add(DependentDataType dataType, Object newObjectToAdd, Object dependentIdentifier) {
switch (dataType){
@@ -69,6 +90,16 @@ public class RegistryImpl implements Registry {
}
+ /**
+ * This method is to update the whole object in registry
+ * @param dataType Data type is a predefined type which the programmer should choose according to the object he
+ * is going to save in to registry
+ * @param newObjectToUpdate Object which contains the fields that need to be updated in to registry. This object is a
+ * thrift model object. In experiment case this object can be BasicMetadata, ConfigurationData
+ * etc. CPI programmer can only fill necessary fields that need to be updated. He does not
+ * have to fill the whole object. He needs to only fill the mandatory fields and whatever the
+ * other fields that need to be updated.
+ */
@Override
public void update(DataType dataType, Object newObjectToUpdate, Object identifier) {
switch (dataType){
@@ -85,14 +116,26 @@ public class RegistryImpl implements Registry {
}
+ /**
+ * This method is to update a specific field of the data model
+ * @param dataType Data type is a predefined type which the programmer should choose according to the object he
+ * is going to save in to registry
+ * @param identifier Identifier which will uniquely identify the data model. For example, in Experiment_Basic_Type,
+ * identifier will be generated experimentID
+ * @param fieldName Field which need to be updated in the registry. In Experiment_Basic_Type, if you want to update the
+ * description, field will be "description". Field names are defined in
+ * org.apache.airavata.registry.cpi.utils.Constants
+ * @param value Value by which the given field need to be updated. If the field is "description", that field will be
+ * updated by given value
+ */
@Override
- public void update(DataType dataType, Object identifier, String field, Object value) {
+ public void update(DataType dataType, Object identifier, String fieldName, Object value) {
switch (dataType){
case EXPERIMENT_BASIC_DATA:
- experimentRegistry.updateExpBasicMetadataField((String) identifier, field, value);
+ experimentRegistry.updateExpBasicMetadataField((String) identifier, fieldName, value);
break;
case EXPERIMENT_CONFIGURATION_DATA:
- experimentRegistry.updateExpConfigDataField((String) identifier, field, value);
+ experimentRegistry.updateExpConfigDataField((String) identifier, fieldName, value);
break;
default:
logger.error("Unsupported data type...", new UnsupportedOperationException());
@@ -202,6 +245,13 @@ public class RegistryImpl implements Registry {
}
}
+ /**
+ * This method is to remove a item from the registry
+ * @param dataType Data type is a predefined type which the programmer should choose according to the object he
+ * is going to save in to registry
+ * @param identifier Identifier which will uniquely identify the data model. For example, in Experiment_Basic_Type,
+ * identifier will be generated experimentID
+ */
@Override
public void remove(DataType dataType, Object identifier) {
switch (dataType){
@@ -216,8 +266,22 @@ public class RegistryImpl implements Registry {
}
}
+ /**
+ * This method will check whether a given data type which can be identified with the identifier exists or not
+ * @param dataType Data type is a predefined type which the programmer should choose according to the object he
+ * is going to save in to registry
+ * @param identifier Identifier which will uniquely identify the data model. For example, in Experiment_Basic_Type,
+ * identifier will be generated experimentID
+ * @return whether the given data type exists or not
+ */
@Override
public boolean isExist(DataType dataType, Object identifier) {
+ switch (dataType){
+ case EXPERIMENT_BASIC_DATA:
+ return experimentRegistry.isExperimentBasicDataExist((String)identifier);
+ case EXPERIMENT_CONFIGURATION_DATA:
+ return experimentRegistry.isExperimentConfigDataExist((String)identifier);
+ }
return false;
}
}
http://git-wip-us.apache.org/repos/asf/airavata/blob/e4a12c34/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/Experiment_Configuration_Data.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/Experiment_Configuration_Data.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/Experiment_Configuration_Data.java
index dc68cb3..509f8f4 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/Experiment_Configuration_Data.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/Experiment_Configuration_Data.java
@@ -28,7 +28,9 @@ import java.sql.Timestamp;
@Table(name ="EXPERIMENT_CONFIGURATION_DATA")
public class Experiment_Configuration_Data {
@Id
- @ManyToOne(cascade= CascadeType.MERGE)
+ @Column(name = "EXPERIMENT_ID")
+ private String experiment_id;
+ @ManyToOne
@JoinColumn(name = "EXPERIMENT_ID")
private Experiment_Metadata experiment_metadata;
@Column(name = "RESOURCE_HOST_ID")
@@ -301,4 +303,12 @@ public class Experiment_Configuration_Data {
public void setNumber_of_retries(int number_of_retries) {
this.number_of_retries = number_of_retries;
}
+
+ public String getExperiment_id() {
+ return experiment_id;
+ }
+
+ public void setExperiment_id(String experiment_id) {
+ this.experiment_id = experiment_id;
+ }
}
http://git-wip-us.apache.org/repos/asf/airavata/blob/e4a12c34/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/Experiment_Summary.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/Experiment_Summary.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/Experiment_Summary.java
index 1a04a5e..e06cfc8 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/Experiment_Summary.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/Experiment_Summary.java
@@ -28,9 +28,11 @@ import java.sql.Timestamp;
@Entity
@Table(name ="EXPERIMENT_SUMMARY")
public class Experiment_Summary {
-
@Id
- @ManyToOne(cascade= CascadeType.MERGE)
+ @Column(name = "EXPERIMENT_ID")
+ private String experimentID;
+
+ @ManyToOne
@JoinColumn(name = "EXPERIMENT_ID")
private Experiment_Metadata experiment_metadata;
@Column(name = "STATUS")
@@ -61,4 +63,12 @@ public class Experiment_Summary {
public void setLast_update_time(Timestamp last_update_time) {
this.last_update_time = last_update_time;
}
+
+ public String getExperimentID() {
+ return experimentID;
+ }
+
+ public void setExperimentID(String experimentID) {
+ this.experimentID = experimentID;
+ }
}
http://git-wip-us.apache.org/repos/asf/airavata/blob/e4a12c34/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ExperimentConfigDataResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ExperimentConfigDataResource.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ExperimentConfigDataResource.java
index 72b2ef6..07057b8 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ExperimentConfigDataResource.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ExperimentConfigDataResource.java
@@ -36,6 +36,7 @@ import java.util.List;
public class ExperimentConfigDataResource extends AbstractResource {
private static final Logger logger = LoggerFactory.getLogger(ExperimentConfigDataResource.class);
private ExperimentMetadataResource exMetadata;
+ private String expID;
private String resourceHostID;
private int cpuCount;
private int nodeCount;
@@ -64,6 +65,14 @@ public class ExperimentConfigDataResource extends AbstractResource {
private byte[] request;
+ public String getExpID() {
+ return expID;
+ }
+
+ public void setExpID(String expID) {
+ this.expID = expID;
+ }
+
public ExperimentMetadataResource getExMetadata() {
return exMetadata;
}
@@ -316,6 +325,7 @@ public class ExperimentConfigDataResource extends AbstractResource {
exconfig.setExperiment_config_data(request);
Experiment_Metadata metadata = em.find(Experiment_Metadata.class, exMetadata.getExpID());
exconfig.setExperiment_metadata(metadata);
+ exconfig.setExperiment_id(metadata.getExperiment_id());
exconfig.setJob_start_time(jobStartTime);
exconfig.setNode_count(nodeCount);
exconfig.setNumber_of_threads(numberOfThreads);
@@ -345,6 +355,7 @@ public class ExperimentConfigDataResource extends AbstractResource {
existingConfig.setData_reg_url(dataRegURL);
existingConfig.setExperiment_config_data(request);
existingConfig.setExperiment_metadata(metadata);
+ existingConfig.setExperiment_id(metadata.getExperiment_id());
existingConfig.setJob_start_time(jobStartTime);
existingConfig.setNode_count(nodeCount);
existingConfig.setNumber_of_threads(numberOfThreads);
http://git-wip-us.apache.org/repos/asf/airavata/blob/e4a12c34/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ExperimentSummaryResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ExperimentSummaryResource.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ExperimentSummaryResource.java
index 8555006..6e841b9 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ExperimentSummaryResource.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ExperimentSummaryResource.java
@@ -95,11 +95,13 @@ public class ExperimentSummaryResource extends AbstractResource {
exSummary.setStatus(status);
Experiment_Metadata metadata = em.find(Experiment_Metadata.class, experimentMetadataResource.getExpID());
exSummary.setExperiment_metadata(metadata);
+ exSummary.setExperimentID(metadata.getExperiment_id());
if (existingExSummary != null){
existingExSummary.setLast_update_time(lastUpdateTime);
existingExSummary.setStatus(status);
existingExSummary.setExperiment_metadata(metadata);
+ existingExSummary.setExperimentID(metadata.getExperiment_id());
exSummary = em.merge(existingExSummary);
} else {
em.persist(exSummary);
http://git-wip-us.apache.org/repos/asf/airavata/blob/e4a12c34/modules/registry/airavata-jpa-registry/src/test/java/org/apache/airavata/persistance/registry/jpa/ExperimentMetadataResourceTest.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/test/java/org/apache/airavata/persistance/registry/jpa/ExperimentMetadataResourceTest.java b/modules/registry/airavata-jpa-registry/src/test/java/org/apache/airavata/persistance/registry/jpa/ExperimentMetadataResourceTest.java
index 351cc04..a07f981 100644
--- a/modules/registry/airavata-jpa-registry/src/test/java/org/apache/airavata/persistance/registry/jpa/ExperimentMetadataResourceTest.java
+++ b/modules/registry/airavata-jpa-registry/src/test/java/org/apache/airavata/persistance/registry/jpa/ExperimentMetadataResourceTest.java
@@ -49,6 +49,14 @@ public class ExperimentMetadataResourceTest extends AbstractResourceTest {
experimentResource.setShareExp(true);
experimentResource.save();
+ ExperimentConfigDataResource exConfig = (ExperimentConfigDataResource)experimentResource.create(ResourceType.EXPERIMENT_CONFIG_DATA);
+ exConfig.setExpID("testExpID");
+ exConfig.setNodeCount(5);
+ exConfig.setCpuCount(10);
+ exConfig.setApplicationID("testApp");
+ exConfig.setApplicationVersion("testAppVersion");
+ exConfig.save();
+
workflowDataResource = experimentResource.createWorkflowInstanceResource("testWFInstance");
workflowDataResource.setExperimentID("testExpID");
workflowDataResource.setStatus("testStatus");
@@ -68,6 +76,10 @@ public class ExperimentMetadataResourceTest extends AbstractResourceTest {
assertTrue("workflow data resource removed successfully", !experimentResource.isExists(ResourceType.WORKFLOW_DATA, "testWFInstance"));
}
+ public void testGet() throws Exception {
+ assertNotNull("experiment configuration retrieved successfully...", experimentResource.get(ResourceType.EXPERIMENT_CONFIG_DATA, "testExpID"));
+ }
+
@Override
public void tearDown() throws Exception {
super.tearDown();