Author: amilaj
Date: Fri Dec 21 23:04:23 2012
New Revision: 1425176
URL: http://svn.apache.org/viewvc?rev=1425176&view=rev
Log:
Fixing AIRAVATA-683
Added:
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/DescriptorRecordAlreadyExistsException.java
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/builder/
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/builder/DescriptorBuilder.java
Modified:
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/AiravataClient.java
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/AiravataAPI.java
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/ApplicationManager.java
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/ApplicationManagerImpl.java
airavata/trunk/modules/integration-tests/src/test/java/org/apache/airavata/integration/BaseCaseIT.java
Modified:
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/AiravataClient.java
URL:
http://svn.apache.org/viewvc/airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/AiravataClient.java?rev=1425176&r1=1425175&r2=1425176&view=diff
==============================================================================
---
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/AiravataClient.java
(original)
+++
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/AiravataClient.java
Fri Dec 21 23:04:23 2012
@@ -56,6 +56,7 @@ import org.apache.airavata.client.api.Ex
import org.apache.airavata.client.api.ProvenanceManager;
import org.apache.airavata.client.api.UserManager;
import org.apache.airavata.client.api.WorkflowManager;
+import org.apache.airavata.client.api.builder.DescriptorBuilder;
import org.apache.airavata.client.impl.AiravataManagerImpl;
import org.apache.airavata.client.impl.ApplicationManagerImpl;
import org.apache.airavata.client.impl.ExecutionManagerImpl;
@@ -1014,7 +1015,12 @@ public class AiravataClient extends Obse
return API_VERSION;
}
- public void setCurrentUser(String currentUser) {
+ @Override
+ public DescriptorBuilder getDescriptorBuilder() {
+ return new DescriptorBuilder();
+ }
+
+ public void setCurrentUser(String currentUser) {
this.currentUser = currentUser;
}
Modified:
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/AiravataAPI.java
URL:
http://svn.apache.org/viewvc/airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/AiravataAPI.java?rev=1425176&r1=1425175&r2=1425176&view=diff
==============================================================================
---
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/AiravataAPI.java
(original)
+++
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/AiravataAPI.java
Fri Dec 21 23:04:23 2012
@@ -21,6 +21,7 @@
package org.apache.airavata.client.api;
+import org.apache.airavata.client.api.builder.DescriptorBuilder;
import org.apache.airavata.common.utils.Version;
@@ -77,4 +78,11 @@ public interface AiravataAPI {
*/
public Version getVersion();
+ /**
+ * Gets the DescriptorBuilder. DescriptorBuilder is a helper class to
create various descriptors.
+ * E.g :- Build HostDescriptors, ServiceDescriptors etc ...
+ * @return DescriptorBuilder.
+ */
+ public DescriptorBuilder getDescriptorBuilder();
+
}
\ No newline at end of file
Modified:
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/ApplicationManager.java
URL:
http://svn.apache.org/viewvc/airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/ApplicationManager.java?rev=1425176&r1=1425175&r2=1425176&view=diff
==============================================================================
---
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/ApplicationManager.java
(original)
+++
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/ApplicationManager.java
Fri Dec 21 23:04:23 2012
@@ -27,7 +27,6 @@ import java.util.Map;
import org.apache.airavata.commons.gfac.type.ApplicationDeploymentDescription;
import org.apache.airavata.commons.gfac.type.HostDescription;
import org.apache.airavata.commons.gfac.type.ServiceDescription;
-import org.apache.airavata.registry.api.exception.RegistryException;
public interface ApplicationManager {
//Service descriptors
@@ -49,13 +48,36 @@ public interface ApplicationManager {
/**
* Save service description on registry
- * @param service
- * @return
- * @throws AiravataAPIInvocationException
+ * @param service Service description information to update.
+ * @return The service descriptor name.
+ * @deprecated Deprecated since 0.6 release. User {@see
#addServiceDescription} and {@see #updateServiceDescription}
+ * methods instead.
+ * @throws AiravataAPIInvocationException If an error occurred while
updating service descriptor.
*/
+ @Deprecated
public String saveServiceDescription(ServiceDescription service)throws
AiravataAPIInvocationException;
/**
+ * Adds a new Service descriptor to the system. If service descriptor
already exists in the system
+ * this will throw {@see DescriptorRecordAlreadyExistsException}. If you
want to update an existing
+ * service descriptor use {@see #updateServiceDescription}.
+ * @param serviceDescription The service descriptor.
+ * @throws AiravataAPIInvocationException If an error occurred while
adding service description.
+ * @throws DescriptorRecordAlreadyExistsException If service descriptor
already exists in the system.
+ */
+ public void addServiceDescription(ServiceDescription
serviceDescription)throws AiravataAPIInvocationException,
+ DescriptorRecordAlreadyExistsException;
+
+ /**
+ * Updates the service descriptor.
+ * @param serviceDescription Service description information to update.
+ * @throws AiravataAPIInvocationException If an error occurred while
updating service description.
+ */
+ public void updateServiceDescription(ServiceDescription
serviceDescription)throws AiravataAPIInvocationException;
+
+
+
+ /**
* Delete service description from the registry
* @param serviceName
* @throws AiravataAPIInvocationException
@@ -83,14 +105,44 @@ public interface ApplicationManager {
/**
* Save deployment description on registry for a given service for a host
- * @param serviceId
- * @param hostId
- * @param app
- * @return
- * @throws AiravataAPIInvocationException
+ * @param serviceId The service descriptor id.
+ * @param hostId The host descriptor id.
+ * @param app The application deployment descriptor.
+ * @return The application deployment descriptor name.
+ * @deprecated Deprecated since 0.6 release. Please use {@see
#addDeploymentDescription} and
+ * {@see #updateDeploymentDescription}.
+ * @throws AiravataAPIInvocationException If an error occurred while
adding application deployment descriptor.
*/
+ @Deprecated
public String saveDeploymentDescription(String serviceId, String hostId,
ApplicationDeploymentDescription app)throws AiravataAPIInvocationException;
+
+ /**
+ * Adds a new deployment description associating with given service
description and given host description. If
+ * an association already exists this will throw {@see
DescriptorRecordAlreadyExistsException} exception. If you
+ * want to update an existing deployment descriptor use {@see
#updateDeploymentDescription}.
+ * @param serviceDescription The service description to associate. Should
be saved before passing to this method.
+ * @param hostDescription The host description to associate, should have
been saved before calling this method.
+ * @param applicationDeploymentDescription The application descriptor to
save.
+ * @throws AiravataAPIInvocationException If an error occurred while
saving application descriptor.
+ * @throws DescriptorRecordAlreadyExistsException If deployment descriptor
already exists in the system.
+ */
+ public void addDeploymentDescription(ServiceDescription
serviceDescription, HostDescription hostDescription,
+ ApplicationDeploymentDescription
applicationDeploymentDescription)
+ throws AiravataAPIInvocationException,
DescriptorRecordAlreadyExistsException;
+
+ /**
+ * Adds a new deployment description associating with given service
description and given host description. If
+ * an association already exists this will throw {@see
DescriptorRecordAlreadyExistsException} exception.
+ * @param serviceDescription The service description to associate. Should
be saved before passing to this method.
+ * @param hostDescription The host description to associate, should have
been saved before calling this method.
+ * @param applicationDeploymentDescription The application descriptor to
save.
+ * @throws AiravataAPIInvocationException If an error occurred while
saving application descriptor.
+ */
+ public void updateDeploymentDescription(ServiceDescription
serviceDescription, HostDescription hostDescription,
+ ApplicationDeploymentDescription
applicationDeploymentDescription)
+ throws AiravataAPIInvocationException;
+
/**
* Retrieve list of registered deployment descriptions of the given regex
service name & regex host name
* @param serviceName
@@ -153,12 +205,35 @@ public interface ApplicationManager {
/**
* Save host description on registry
- * @param host
- * @return
- * @throws AiravataAPIInvocationException
+ * @param host The host descriptor object to update in the database.
+ * @deprecated Deprecated since 0.6 release. Please use {@see
#addHostDescription} and {@see #updateHostDescription}
+ * @throws AiravataAPIInvocationException If an error occurred while
saving the host description.
*/
+ @Deprecated
public String saveHostDescription(HostDescription host)throws
AiravataAPIInvocationException;
+
+ /**
+ * Adds a new host descriptor object. If adding host descriptor already
exists in the system this will throw
+ * DescriptorRecordAlreadyExistsException. If user wants to update an
existing host descriptor use
+ * {@see #updateHostDescription(HostDescription host)} method.
+ * @param host The host descriptor object to save in the database.
+ * @throws AiravataAPIInvocationException If an error occurred while
saving the host description.
+ * @throws DescriptorRecordAlreadyExistsException If host descriptor
object already exists in the system.
+ */
+ public void addHostDescription (HostDescription host) throws
AiravataAPIInvocationException,
+ DescriptorRecordAlreadyExistsException;
+
+
+ /**
+ * Updates an existing host descriptor. If you are not sure whether
descriptor already exists try using
+ * {@see #addHostDescription} and catch {@see
DescriptorRecordAlreadyExistsException}. If caught use this method
+ * to update the record.
+ * @param host The host descriptor object to update in the database.
+ * @throws AiravataAPIInvocationException If an error occurred while
saving the host description.
+ */
+ public void updateHostDescription(HostDescription host)throws
AiravataAPIInvocationException;
+
/**
* Retrieve a list of registered hsot descriptions of the given regex host
name
* @param regExName
Added:
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/DescriptorRecordAlreadyExistsException.java
URL:
http://svn.apache.org/viewvc/airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/DescriptorRecordAlreadyExistsException.java?rev=1425176&view=auto
==============================================================================
---
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/DescriptorRecordAlreadyExistsException.java
(added)
+++
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/DescriptorRecordAlreadyExistsException.java
Fri Dec 21 23:04:23 2012
@@ -0,0 +1,21 @@
+package org.apache.airavata.client.api;
+
+/**
+ * If a saving descriptor already found in the system this exception will be
thrown.
+ */
+public class DescriptorRecordAlreadyExistsException extends Exception {
+
+ private static final long serialVersionUID = 1231L;
+
+ public DescriptorRecordAlreadyExistsException(Throwable e) {
+ super(e);
+ }
+ public DescriptorRecordAlreadyExistsException(String message) {
+ super(message, null);
+ }
+
+ public DescriptorRecordAlreadyExistsException(String message, Throwable e)
{
+ super(message, e);
+ }
+
+}
Added:
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/builder/DescriptorBuilder.java
URL:
http://svn.apache.org/viewvc/airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/builder/DescriptorBuilder.java?rev=1425176&view=auto
==============================================================================
---
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/builder/DescriptorBuilder.java
(added)
+++
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/builder/DescriptorBuilder.java
Fri Dec 21 23:04:23 2012
@@ -0,0 +1,187 @@
+package org.apache.airavata.client.api.builder;
+
+import org.apache.airavata.client.api.AiravataAPIInvocationException;
+import org.apache.airavata.commons.gfac.type.ApplicationDeploymentDescription;
+import org.apache.airavata.commons.gfac.type.HostDescription;
+import org.apache.airavata.commons.gfac.type.ServiceDescription;
+import org.apache.airavata.schemas.gfac.*;
+import org.apache.xmlbeans.SchemaType;
+
+import java.util.List;
+
+/**
+ * This class provides set of utility methods to create descriptors. Following
descriptors are
+ * included.
+ * <ol>
+ * <li>HostDescription -
org.apache.airavata.commons.gfac.type.HostDescription</li>
+ * </ol>
+ */
+public class DescriptorBuilder {
+
+ private static final String IP_ADDRESS_VALIDATION_STRING
+ =
"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$";
+
+ private static final String HOST_NAME_VALIDATION_STRING
+ =
"^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9])$";
+
+
+ /**
+ * Builds a host descriptor object. Host descriptor gives information
about application
+ * hosted machine.
+ * @param type The host type. Following types are available at the moment.
+ * <ol>
+ * <li>org.apache.airavata.schemas.gfac.GlobusHostType</li>
+ * <li>org.apache.airavata.schemas.gfac.Ec2HostType</li>
+ * <li>org.apache.airavata.schemas.gfac.GsisshHostType</li>
+ * <li>org.apache.airavata.schemas.gfac.UnicoreHostType</li>
+ * </ol>
+ * @param hostName An unique id given to hosted machine. This could be any
name. But should be unique across the
+ * workflow.
+ * @param hostAddress This is the IP address where application is running.
This should be a valid IP address or
+ * valid host name.
+ * @return The org.apache.airavata.commons.gfac.type.HostDescription
object.
+ * @throws AiravataAPIInvocationException If provided host address does
not comply with IP address format or
+ * host name format.
+ */
+ public HostDescription buildHostDescription (HostDescriptionType type,
String hostName, String hostAddress)
+ throws AiravataAPIInvocationException{
+
+ return buildHostDescription(type.schemaType(), hostName, hostAddress);
+
+ }
+
+ /**
+ * Builds a host descriptor object. Host descriptor gives information
about application
+ * hosted machine.
+ * @param schemaType The host type as per the schema. All available schema
types are listed
+ * in org.apache.xmlbeans.SchemaType
+ * @param hostName An unique id given to hosted machine. This could be any
name. But should be unique across the
+ * workflow.
+ * @param hostAddress This is the IP address where application is running.
This should be a valid IP address or
+ * valid host name.
+ * @return The org.apache.airavata.commons.gfac.type.HostDescription
object.
+ * @throws AiravataAPIInvocationException If provided host address does
not comply with IP address format or
+ * host name format.
+ */
+ public HostDescription buildHostDescription (SchemaType schemaType, String
hostName, String hostAddress)
+ throws AiravataAPIInvocationException{
+
+ if (!validateHostAddress(hostAddress)) {
+ throw new AiravataAPIInvocationException("Invalid host address.
Host address should be " +
+ "either an IP address or a valid host name.");
+ }
+
+ HostDescription hostDescription = new HostDescription(schemaType);
+ hostDescription.getType().setHostName(hostName);
+ hostDescription.getType().setHostAddress(hostAddress);
+
+ return hostDescription;
+
+ }
+
+ /**
+ * Create an input parameter.
+ * @param parameterName The input parameter name.
+ * @param parameterDescription A short description about the input
parameter.
+ * @param parameterDataType Input parameter type. E.g :- String, Integer
etc ..
+ * All possible types are define in DataType.Enum
class.
+ * E.g :- DataType.String
+ * @see org.apache.airavata.schemas.gfac.DataType.Enum
+ * @return Encapsulating InputParameterType object.
+ */
+ public InputParameterType buildInputParameterType (String parameterName,
String parameterDescription,
+ DataType.Enum
parameterDataType) {
+
+ InputParameterType parameter =
InputParameterType.Factory.newInstance();
+ parameter.setParameterName(parameterName);
+ parameter.setParameterDescription(parameterDescription);
+
+ ParameterType parameterType = parameter.addNewParameterType();
+ parameterType.setType(parameterDataType);
+ parameterType.setName(parameterDataType.toString());
+
+ return parameter;
+
+ }
+
+ /**
+ * Create an input parameter.
+ * @param parameterName The input parameter name.
+ * @param parameterDescription A short description about the input
parameter.
+ * @param parameterDataType Input parameter type. E.g :- String, Integer
etc ..
+ * All possible types are define in DataType.Enum
class.
+ * E.g :- DataType.String
+ * @see org.apache.airavata.schemas.gfac.DataType.Enum
+ * @return Encapsulating InputParameterType object.
+ */
+ public OutputParameterType buildOutputParameterType (String parameterName,
String parameterDescription,
+ DataType.Enum
parameterDataType) {
+
+ OutputParameterType parameter =
OutputParameterType.Factory.newInstance();
+ parameter.setParameterName(parameterName);
+ parameter.setParameterDescription(parameterDescription);
+
+ ParameterType parameterType = parameter.addNewParameterType();
+ parameterType.setType(parameterDataType);
+ parameterType.setName(parameterDataType.toString());
+
+ return parameter;
+
+ }
+
+ /**
+ * Creates a ServiceDescription object. This includes information about
the service. Mainly we
+ * are focusing on following details about the service.
+ * <ol>
+ * <li>A name for service</li>
+ * <li>A short description about the service</li>
+ * <li>A what are input data types</li>
+ * <li>A what are output data types</li>
+ * </ol>
+ * @param serviceName Name of the service.
+ * @param description A short description about the service.
+ * @param inputParameterTypes Input parameter types.
+ * @param outputParameterTypes Output parameter types.
+ * @return A ServiceDescription object with above information encapsulated.
+ */
+ public ServiceDescription buildServiceDescription (String serviceName,
String description,
+
List<InputParameterType> inputParameterTypes,
+
List<OutputParameterType> outputParameterTypes) {
+
+ ServiceDescription serviceDescription = new ServiceDescription();
+ serviceDescription.getType().setName(serviceName);
+ serviceDescription.getType().setDescription(description);
+
+
+ serviceDescription.getType().
+ setInputParametersArray(inputParameterTypes.toArray(
+ new InputParameterType[inputParameterTypes.size()]));
+ serviceDescription.getType().
+ setOutputParametersArray(outputParameterTypes.toArray(
+ new OutputParameterType[outputParameterTypes.size()]));
+
+ return serviceDescription;
+
+ }
+
+ public ApplicationDeploymentDescription
buildApplicationDeploymentDescription (String applicationName,
+
String executablePath,
+
String workingDirectory) {
+
+ ApplicationDeploymentDescription applicationDeploymentDescription =
new ApplicationDeploymentDescription();
+ ApplicationDeploymentDescriptionType
applicationDeploymentDescriptionType
+ = applicationDeploymentDescription.getType();
+
applicationDeploymentDescriptionType.addNewApplicationName().setStringValue(applicationName);
+
applicationDeploymentDescriptionType.setExecutableLocation(executablePath);
+
applicationDeploymentDescriptionType.setScratchWorkingDirectory(workingDirectory);
+
+ return applicationDeploymentDescription;
+
+ }
+
+
+
+ private boolean validateHostAddress(String hostAddress) {
+ return hostAddress.matches(IP_ADDRESS_VALIDATION_STRING) ||
hostAddress.matches(HOST_NAME_VALIDATION_STRING);
+ }
+}
Modified:
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/ApplicationManagerImpl.java
URL:
http://svn.apache.org/viewvc/airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/ApplicationManagerImpl.java?rev=1425176&r1=1425175&r2=1425176&view=diff
==============================================================================
---
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/ApplicationManagerImpl.java
(original)
+++
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/ApplicationManagerImpl.java
Fri Dec 21 23:04:23 2012
@@ -29,10 +29,14 @@ import java.util.Map;
import org.apache.airavata.client.AiravataClient;
import org.apache.airavata.client.api.AiravataAPIInvocationException;
import org.apache.airavata.client.api.ApplicationManager;
+import org.apache.airavata.client.api.DescriptorRecordAlreadyExistsException;
+import org.apache.airavata.common.exception.AiravataConfigurationException;
import org.apache.airavata.commons.gfac.type.ApplicationDeploymentDescription;
import org.apache.airavata.commons.gfac.type.HostDescription;
import org.apache.airavata.commons.gfac.type.ServiceDescription;
+import org.apache.airavata.registry.api.exception.RegistryException;
import
org.apache.airavata.registry.api.exception.UnimplementedRegistryOperationException;
+import
org.apache.airavata.registry.api.exception.gateway.DescriptorAlreadyExistsException;
public class ApplicationManagerImpl implements ApplicationManager {
private AiravataClient client;
@@ -81,7 +85,43 @@ public class ApplicationManagerImpl impl
}
}
- @Override
+ @Override
+ public void addServiceDescription(ServiceDescription serviceDescription)
throws AiravataAPIInvocationException,
+ DescriptorRecordAlreadyExistsException {
+ try {
+
getClient().getRegistryClient().addServiceDescriptor(serviceDescription);
+ } catch (DescriptorAlreadyExistsException e) {
+ throw new DescriptorRecordAlreadyExistsException("Service
descriptor "
+ + serviceDescription.getType().getName()
+ + " already exists.", e);
+ } catch (RegistryException e) {
+ throw new AiravataAPIInvocationException("An internal error
occurred while trying to add service descriptor"
+ + serviceDescription.getType().getName(),
+ e);
+ } catch (AiravataConfigurationException e) {
+ throw new AiravataAPIInvocationException("Error retrieving
registry controller. " +
+ "An error occurred while trying to " +
+ "add service descriptor" +
serviceDescription.getType().getName(), e);
+ }
+ }
+
+ @Override
+ public void updateServiceDescription(ServiceDescription
serviceDescription) throws AiravataAPIInvocationException {
+ try {
+
getClient().getRegistryClient().updateServiceDescriptor(serviceDescription);
+ } catch (RegistryException e) {
+ throw new AiravataAPIInvocationException("An internal error
occurred while trying to add service descriptor"
+ + serviceDescription.getType().getName(),
+ e);
+ } catch (AiravataConfigurationException e) {
+ throw new AiravataAPIInvocationException("Error retrieving
registry controller. " +
+ "An error occurred while trying to " +
+ "add service descriptor" +
serviceDescription.getType().getName(), e);
+ }
+ }
+
+
+ @Override
public void deleteServiceDescription(String serviceId)
throws AiravataAPIInvocationException {
try {
@@ -125,7 +165,66 @@ public class ApplicationManagerImpl impl
}
}
- @Override
+
+ @Override
+ public void addDeploymentDescription(ServiceDescription
serviceDescription, HostDescription hostDescription,
+ ApplicationDeploymentDescription
applicationDeploymentDescription)
+ throws AiravataAPIInvocationException,
DescriptorRecordAlreadyExistsException {
+
+ try {
+
getClient().getRegistryClient().addApplicationDescriptor(serviceDescription.getType().getName(),
+ hostDescription.getType().getHostName(),
applicationDeploymentDescription);
+ } catch (DescriptorAlreadyExistsException e) {
+ throw new DescriptorRecordAlreadyExistsException("Application
descriptor " +
+
applicationDeploymentDescription.getType().getApplicationName().getStringValue()
+ + " already associated to host " +
hostDescription.getType().getHostName()
+ + " and service " +
serviceDescription.getType().getName(), e);
+ } catch (RegistryException e) {
+
+ throw new AiravataAPIInvocationException("An internal error
occurred while trying to add " +
+ "application descriptor " +
+
applicationDeploymentDescription.getType().getApplicationName().getStringValue()
+ + " associated to host " +
hostDescription.getType().getHostName()
+ + " and service " +
serviceDescription.getType().getName(), e);
+
+ } catch (AiravataConfigurationException e) {
+
+ throw new AiravataAPIInvocationException("Error retrieving
registry controller. " +
+ "An error occurred while trying to add application
descriptor " +
+
applicationDeploymentDescription.getType().getApplicationName().getStringValue()
+ + " associated to host " +
hostDescription.getType().getHostName()
+ + " and service " +
serviceDescription.getType().getName(), e);
+ }
+
+ }
+
+ @Override
+ public void updateDeploymentDescription(ServiceDescription
serviceDescription, HostDescription hostDescription,
+ ApplicationDeploymentDescription
applicationDeploymentDescription)
+ throws AiravataAPIInvocationException {
+ try {
+
getClient().getRegistryClient().updateApplicationDescriptor(serviceDescription.getType().getName(),
+ hostDescription.getType().getHostName(),
applicationDeploymentDescription);
+ } catch (RegistryException e) {
+
+ throw new AiravataAPIInvocationException("An internal error
occurred while trying to add " +
+ "application descriptor " +
+
applicationDeploymentDescription.getType().getApplicationName().getStringValue()
+ + " associated to host " +
hostDescription.getType().getHostName()
+ + " and service " +
serviceDescription.getType().getName(), e);
+
+ } catch (AiravataConfigurationException e) {
+
+ throw new AiravataAPIInvocationException("Error retrieving
registry controller. " +
+ "An error occurred while trying to add application
descriptor " +
+
applicationDeploymentDescription.getType().getApplicationName().getStringValue()
+ + " associated to host " +
hostDescription.getType().getHostName()
+ + " and service " +
serviceDescription.getType().getName(), e);
+ }
+ }
+
+
+ @Override
public List<ApplicationDeploymentDescription>
searchDeploymentDescription(
String serviceName, String hostName)
throws AiravataAPIInvocationException {
@@ -212,7 +311,44 @@ public class ApplicationManagerImpl impl
}
}
- @Override
+ @Override
+ public void addHostDescription(HostDescription host) throws
AiravataAPIInvocationException,
+ DescriptorRecordAlreadyExistsException {
+
+ try {
+ getClient().getRegistryClient().addHostDescriptor(host);
+ } catch (DescriptorAlreadyExistsException e) {
+ throw new DescriptorRecordAlreadyExistsException("Host descriptor
" + host.getType().getHostName()
+ + " already exists.", e);
+ } catch (RegistryException e) {
+ throw new AiravataAPIInvocationException("An internal error
occurred while trying to add host descriptor"
+ + host.getType().getHostName(),
+ e);
+ } catch (AiravataConfigurationException e) {
+ throw new AiravataAPIInvocationException("Error retrieving
registry controller. " +
+ "An error occurred while trying to " +
+ "add host descriptor" + host.getType().getHostName(), e);
+ }
+
+ }
+
+ @Override
+ public void updateHostDescription(HostDescription host) throws
AiravataAPIInvocationException {
+ try {
+ getClient().getRegistryClient().updateHostDescriptor(host);
+ } catch (RegistryException e) {
+ throw new AiravataAPIInvocationException("An internal error
occurred while trying to add host descriptor"
+ + host.getType().getHostName(),
+ e);
+ } catch (AiravataConfigurationException e) {
+ throw new AiravataAPIInvocationException("Error retrieving
registry controller. " +
+ "An error occurred while trying to " +
+ "add host descriptor" + host.getType().getHostName(), e);
+ }
+ }
+
+
+ @Override
public List<HostDescription> searchHostDescription(String regExName)
throws AiravataAPIInvocationException {
throw new AiravataAPIInvocationException(new
UnimplementedRegistryOperationException());
Modified:
airavata/trunk/modules/integration-tests/src/test/java/org/apache/airavata/integration/BaseCaseIT.java
URL:
http://svn.apache.org/viewvc/airavata/trunk/modules/integration-tests/src/test/java/org/apache/airavata/integration/BaseCaseIT.java?rev=1425176&r1=1425175&r2=1425176&view=diff
==============================================================================
---
airavata/trunk/modules/integration-tests/src/test/java/org/apache/airavata/integration/BaseCaseIT.java
(original)
+++
airavata/trunk/modules/integration-tests/src/test/java/org/apache/airavata/integration/BaseCaseIT.java
Fri Dec 21 23:04:23 2012
@@ -14,17 +14,13 @@ import junit.framework.Assert;
import org.apache.airavata.client.AiravataAPIFactory;
import org.apache.airavata.client.api.AiravataAPI;
import org.apache.airavata.client.api.AiravataAPIInvocationException;
+import org.apache.airavata.client.api.builder.DescriptorBuilder;
import org.apache.airavata.common.utils.Version;
import org.apache.airavata.commons.gfac.type.ApplicationDeploymentDescription;
import org.apache.airavata.commons.gfac.type.HostDescription;
import org.apache.airavata.commons.gfac.type.ServiceDescription;
import org.apache.airavata.registry.api.PasswordCallback;
-import org.apache.airavata.schemas.gfac.ApplicationDeploymentDescriptionType;
-import org.apache.airavata.schemas.gfac.DataType;
-import org.apache.airavata.schemas.gfac.GlobusHostType;
-import org.apache.airavata.schemas.gfac.InputParameterType;
-import org.apache.airavata.schemas.gfac.OutputParameterType;
-import org.apache.airavata.schemas.gfac.ParameterType;
+import org.apache.airavata.schemas.gfac.*;
import org.apache.airavata.workflow.model.wf.Workflow;
import org.apache.airavata.workflow.model.wf.WorkflowInput;
import org.apache.airavata.ws.monitor.Monitor;
@@ -219,56 +215,41 @@ public class BaseCaseIT {
@Test
public void testEchoService() throws Exception {
- HostDescription hostDescription = new
HostDescription(GlobusHostType.type);
- hostDescription.getType().setHostName("localhost");
- hostDescription.getType().setHostAddress("127.0.0.1");
- log("Saving host description ....");
-
airavataAPI.getApplicationManager().saveHostDescription(hostDescription);
+ DescriptorBuilder descriptorBuilder =
airavataAPI.getDescriptorBuilder();
+
+ HostDescription hostDescription
+ =
descriptorBuilder.buildHostDescription(HostDescriptionType.type, "localhost",
"127.0.0.1");
+
+ log("Adding host description ....");
+
airavataAPI.getApplicationManager().addHostDescription(hostDescription);
Assert.assertTrue(airavataAPI.getApplicationManager().isHostDescriptorExists(hostDescription.getType()
.getHostName()));
- ServiceDescription serviceDescription = new ServiceDescription();
+
List<InputParameterType> inputParameters = new
ArrayList<InputParameterType>();
+
inputParameters.add(descriptorBuilder.buildInputParameterType("echo_input",
"echo input", DataType.STRING));
+
List<OutputParameterType> outputParameters = new
ArrayList<OutputParameterType>();
- serviceDescription.getType().setName("Echo");
- serviceDescription.getType().setDescription("Echo service");
- InputParameterType parameter =
InputParameterType.Factory.newInstance();
- parameter.setParameterName("echo_input");
- parameter.setParameterDescription("echo input");
- ParameterType parameterType = parameter.addNewParameterType();
- parameterType.setType(DataType.STRING);
- parameterType.setName("String");
- inputParameters.add(parameter);
-
- OutputParameterType outputParameter =
OutputParameterType.Factory.newInstance();
- outputParameter.setParameterName("echo_output");
- outputParameter.setParameterDescription("Echo output");
- ParameterType outputParaType = outputParameter.addNewParameterType();
- outputParaType.setType(DataType.STRING);
- outputParaType.setName("String");
- outputParameters.add(outputParameter);
+
outputParameters.add(descriptorBuilder.buildOutputParameterType("echo_output",
"Echo output", DataType.STRING));
-
serviceDescription.getType().setInputParametersArray(inputParameters.toArray(new
InputParameterType[]{}));
-
serviceDescription.getType().setOutputParametersArray(outputParameters.toArray(new
OutputParameterType[]{}));
+ ServiceDescription serviceDescription =
descriptorBuilder.buildServiceDescription("Echo", "Echo service",
+ inputParameters, outputParameters);
- log("Saving service description ...");
-
airavataAPI.getApplicationManager().saveServiceDescription(serviceDescription);
+ log("Adding service description ...");
+
airavataAPI.getApplicationManager().addServiceDescription(serviceDescription);
Assert.assertTrue(airavataAPI.getApplicationManager().isServiceDescriptorExists(serviceDescription.
getType().getName()));
// Deployment descriptor
- ApplicationDeploymentDescription applicationDeploymentDescription =
new ApplicationDeploymentDescription();
- ApplicationDeploymentDescriptionType
applicationDeploymentDescriptionType
- = applicationDeploymentDescription.getType();
-
applicationDeploymentDescriptionType.addNewApplicationName().setStringValue("EchoApplication");
-
applicationDeploymentDescriptionType.setExecutableLocation("/bin/echo");
-
applicationDeploymentDescriptionType.setScratchWorkingDirectory("/tmp");
-
- log("Saving deployment description ...");
-
airavataAPI.getApplicationManager().saveDeploymentDescription(serviceDescription.getType().getName(),
- hostDescription.getType().getHostName(),
applicationDeploymentDescription);
+ ApplicationDeploymentDescription applicationDeploymentDescription
+ =
descriptorBuilder.buildApplicationDeploymentDescription("EchoApplication",
"/bin/echo", "/tmp");
+
+ log("Adding deployment description ...");
+
airavataAPI.getApplicationManager().addDeploymentDescription(serviceDescription,
+ hostDescription, applicationDeploymentDescription);
+
Assert.assertTrue(airavataAPI.getApplicationManager().isDeploymentDescriptorExists(serviceDescription.getType().
getName(), hostDescription.getType().getHostName(),
applicationDeploymentDescription.getType().getApplicationName().getStringValue()));