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/07/01 17:47:58 UTC
git commit: implementing AiravataServerHandler to call app catalog
cpi - AIRAVATA-1228
Repository: airavata
Updated Branches:
refs/heads/master f03e6ec54 -> a2a27146a
implementing AiravataServerHandler to call app catalog cpi - AIRAVATA-1228
Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/a2a27146
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/a2a27146
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/a2a27146
Branch: refs/heads/master
Commit: a2a27146aa46829c34899cedb43864467d0834d2
Parents: f03e6ec
Author: Chathuri Wimalasena <ka...@gmail.com>
Authored: Tue Jul 1 11:47:50 2014 -0400
Committer: Chathuri Wimalasena <ka...@gmail.com>
Committed: Tue Jul 1 11:47:50 2014 -0400
----------------------------------------------------------------------
airavata-api/airavata-api-server/pom.xml | 10 +
.../airavata/api/server/AiravataAPIServer.java | 4 +-
.../server/handler/AiravataServerHandler.java | 181 +++++++++++++++++--
.../appcatalog/cpi/ApplicationDeployment.java | 7 +
.../appcatalog/cpi/ApplicationInterface.java | 38 +++-
.../appcatalog/cpi/ComputeResource.java | 6 +
.../catalog/data/impl/AppCatalogFactory.java | 46 +++++
.../data/impl/ApplicationDeploymentImpl.java | 5 +
.../data/impl/ApplicationInterfaceImpl.java | 114 +++++++++++-
.../catalog/data/impl/ComputeResourceImpl.java | 79 ++++++++
10 files changed, 470 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/airavata/blob/a2a27146/airavata-api/airavata-api-server/pom.xml
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-api-server/pom.xml b/airavata-api/airavata-api-server/pom.xml
index 1a89fcc..c585408 100644
--- a/airavata-api/airavata-api-server/pom.xml
+++ b/airavata-api/airavata-api-server/pom.xml
@@ -53,6 +53,16 @@
</dependency>
<dependency>
<groupId>org.apache.airavata</groupId>
+ <artifactId>app-catalog-cpi</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.airavata</groupId>
+ <artifactId>app-catalog-data</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.airavata</groupId>
<artifactId>airavata-orchestrator-service</artifactId>
<version>${project.version}</version>
</dependency>
http://git-wip-us.apache.org/repos/asf/airavata/blob/a2a27146/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/AiravataAPIServer.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/AiravataAPIServer.java b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/AiravataAPIServer.java
index 599de49..361408d 100644
--- a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/AiravataAPIServer.java
+++ b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/AiravataAPIServer.java
@@ -25,6 +25,7 @@ import java.net.InetSocketAddress;
import org.apache.airavata.api.Airavata;
import org.apache.airavata.api.server.handler.AiravataServerHandler;
+import org.apache.airavata.api.server.util.AppCatalogInitUtil;
import org.apache.airavata.api.server.util.Constants;
import org.apache.airavata.api.server.util.RegistryInitUtil;
import org.apache.airavata.common.utils.AiravataUtils;
@@ -58,7 +59,8 @@ public class AiravataAPIServer implements IServer{
public void StartAiravataServer(Airavata.Processor<Airavata.Iface> airavataAPIServer) throws AiravataSystemException {
try {
AiravataUtils.setExecutionAsServer();
- //RegistryInitUtil.initializeDB();
+ RegistryInitUtil.initializeDB();
+ AppCatalogInitUtil.initializeDB();
final int serverPort = Integer.parseInt(ServerSettings.getSetting(Constants.API_SERVER_PORT,"8930"));
final String serverHost = ServerSettings.getSetting(Constants.API_SERVER_HOST, null);
http://git-wip-us.apache.org/repos/asf/airavata/blob/a2a27146/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
index 91835b8..be6f4bb 100644
--- a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
+++ b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
@@ -30,6 +30,10 @@ import java.util.List;
import java.util.Map;
import java.util.Random;
+import org.airavata.appcatalog.cpi.AppCatalog;
+import org.airavata.appcatalog.cpi.AppCatalogException;
+import org.apache.aiaravata.application.catalog.data.impl.AppCatalogFactory;
+import org.apache.aiaravata.application.catalog.data.resources.AbstractResource;
import org.apache.airavata.api.Airavata;
import org.apache.airavata.api.airavataAPIConstants;
import org.apache.airavata.common.exception.ApplicationSettingsException;
@@ -85,6 +89,7 @@ import org.slf4j.LoggerFactory;
public class AiravataServerHandler implements Airavata.Iface, Watcher {
private static final Logger logger = LoggerFactory.getLogger(AiravataServerHandler.class);
private Registry registry;
+ private AppCatalog appCatalog;
private ZooKeeper zk;
@@ -1164,7 +1169,16 @@ public class AiravataServerHandler implements Airavata.Iface, Watcher {
*/
@Override
public String registerApplicationModule(ApplicationModule applicationModule) throws InvalidRequestException, AiravataClientException, AiravataSystemException, TException {
- return null;
+ try {
+ appCatalog = AppCatalogFactory.getAppCatalog();
+ return appCatalog.getApplicationInterface().addApplicationModule(applicationModule);
+ } catch (AppCatalogException e) {
+ logger.error("Error while adding application module...", e);
+ AiravataSystemException exception = new AiravataSystemException();
+ exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
+ exception.setMessage("Error while adding application module. More info : " + e.getMessage());
+ throw exception;
+ }
}
/**
@@ -1176,7 +1190,16 @@ public class AiravataServerHandler implements Airavata.Iface, Watcher {
*/
@Override
public ApplicationModule getApplicationModule(String appModuleId) throws InvalidRequestException, AiravataClientException, AiravataSystemException, TException {
- return null;
+ try {
+ appCatalog = AppCatalogFactory.getAppCatalog();
+ return appCatalog.getApplicationInterface().getApplicationModule(appModuleId);
+ } catch (AppCatalogException e) {
+ logger.error("Error while retrieving application module...", e);
+ AiravataSystemException exception = new AiravataSystemException();
+ exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
+ exception.setMessage("Error while retrieving the adding application module. More info : " + e.getMessage());
+ throw exception;
+ }
}
/**
@@ -1189,7 +1212,17 @@ public class AiravataServerHandler implements Airavata.Iface, Watcher {
*/
@Override
public boolean updateApplicationModule(String appModuleId, ApplicationModule applicationModule) throws InvalidRequestException, AiravataClientException, AiravataSystemException, TException {
- return false;
+ try {
+ appCatalog = AppCatalogFactory.getAppCatalog();
+ appCatalog.getApplicationInterface().updateApplicationModule(appModuleId, applicationModule);
+ return true;
+ } catch (AppCatalogException e) {
+ logger.error("Error while updating application module...", e);
+ AiravataSystemException exception = new AiravataSystemException();
+ exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
+ exception.setMessage("Error while updating application module. More info : " + e.getMessage());
+ throw exception;
+ }
}
/**
@@ -1201,7 +1234,16 @@ public class AiravataServerHandler implements Airavata.Iface, Watcher {
*/
@Override
public boolean deleteApplicationModule(String appModuleId) throws InvalidRequestException, AiravataClientException, AiravataSystemException, TException {
- return false;
+ try {
+ appCatalog = AppCatalogFactory.getAppCatalog();
+ return appCatalog.getApplicationInterface().removeApplicationModule(appModuleId);
+ } catch (AppCatalogException e) {
+ logger.error("Error while deleting application module...", e);
+ AiravataSystemException exception = new AiravataSystemException();
+ exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
+ exception.setMessage("Error while deleting the application module. More info : " + e.getMessage());
+ throw exception;
+ }
}
/**
@@ -1212,7 +1254,16 @@ public class AiravataServerHandler implements Airavata.Iface, Watcher {
*/
@Override
public String registerApplicationDeployment(ApplicationDeploymentDescription applicationDeployment) throws InvalidRequestException, AiravataClientException, AiravataSystemException, TException {
- return null;
+ try {
+ appCatalog = AppCatalogFactory.getAppCatalog();
+ return appCatalog.getApplicationDeployment().addApplicationDeployment(applicationDeployment);
+ } catch (AppCatalogException e) {
+ logger.error("Error while adding application deployment...", e);
+ AiravataSystemException exception = new AiravataSystemException();
+ exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
+ exception.setMessage("Error while adding application deployment. More info : " + e.getMessage());
+ throw exception;
+ }
}
/**
@@ -1224,7 +1275,16 @@ public class AiravataServerHandler implements Airavata.Iface, Watcher {
*/
@Override
public ApplicationDeploymentDescription getApplicationDeployment(String appDeploymentId) throws InvalidRequestException, AiravataClientException, AiravataSystemException, TException {
- return null;
+ try {
+ appCatalog = AppCatalogFactory.getAppCatalog();
+ return appCatalog.getApplicationDeployment().getApplicationDeployement(appDeploymentId);
+ } catch (AppCatalogException e) {
+ logger.error("Error while retrieving application deployment...", e);
+ AiravataSystemException exception = new AiravataSystemException();
+ exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
+ exception.setMessage("Error while retrieving application deployment. More info : " + e.getMessage());
+ throw exception;
+ }
}
/**
@@ -1237,7 +1297,17 @@ public class AiravataServerHandler implements Airavata.Iface, Watcher {
*/
@Override
public boolean updateApplicationDeployment(String appDeploymentId, ApplicationDeploymentDescription applicationDeployment) throws InvalidRequestException, AiravataClientException, AiravataSystemException, TException {
- return false;
+ try {
+ appCatalog = AppCatalogFactory.getAppCatalog();
+ appCatalog.getApplicationDeployment().updateApplicationDeployment(appDeploymentId, applicationDeployment);
+ return true;
+ } catch (AppCatalogException e) {
+ logger.error("Error while updating application deployment...", e);
+ AiravataSystemException exception = new AiravataSystemException();
+ exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
+ exception.setMessage("Error while updating application deployment. More info : " + e.getMessage());
+ throw exception;
+ }
}
/**
@@ -1249,7 +1319,17 @@ public class AiravataServerHandler implements Airavata.Iface, Watcher {
*/
@Override
public boolean deleteApplicationDeployment(String appDeploymentId) throws InvalidRequestException, AiravataClientException, AiravataSystemException, TException {
- return false;
+ try {
+ appCatalog = AppCatalogFactory.getAppCatalog();
+ appCatalog.getApplicationDeployment().removeAppDeployment(appDeploymentId);
+ return true;
+ } catch (AppCatalogException e) {
+ logger.error("Error while deleting application deployment...", e);
+ AiravataSystemException exception = new AiravataSystemException();
+ exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
+ exception.setMessage("Error while deleting application deployment. More info : " + e.getMessage());
+ throw exception;
+ }
}
/**
@@ -1261,7 +1341,23 @@ public class AiravataServerHandler implements Airavata.Iface, Watcher {
*/
@Override
public List<String> getAppModuleDeployedResources(String appModuleId) throws InvalidRequestException, AiravataClientException, AiravataSystemException, TException {
- return null;
+ try {
+ List<String> appDeployments = new ArrayList<String>();
+ appCatalog = AppCatalogFactory.getAppCatalog();
+ Map<String, String> filters = new HashMap<String, String>();
+ filters.put(AbstractResource.ApplicationDeploymentConstants.APP_MODULE_ID, appModuleId);
+ List<ApplicationDeploymentDescription> applicationDeployements = appCatalog.getApplicationDeployment().getApplicationDeployements(filters);
+ for (ApplicationDeploymentDescription description : applicationDeployements){
+ appDeployments.add(description.getAppDeploymentId());
+ }
+ return appDeployments;
+ } catch (AppCatalogException e) {
+ logger.error("Error while retrieving application deployments...", e);
+ AiravataSystemException exception = new AiravataSystemException();
+ exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
+ exception.setMessage("Error while retrieving application deployment. More info : " + e.getMessage());
+ throw exception;
+ }
}
/**
@@ -1272,7 +1368,16 @@ public class AiravataServerHandler implements Airavata.Iface, Watcher {
*/
@Override
public String registerApplicationInterface(ApplicationInterfaceDescription applicationInterface) throws InvalidRequestException, AiravataClientException, AiravataSystemException, TException {
- return null;
+ try {
+ appCatalog = AppCatalogFactory.getAppCatalog();
+ return appCatalog.getApplicationInterface().addApplicationInterface(applicationInterface);
+ } catch (AppCatalogException e) {
+ logger.error("Error while adding application interface...", e);
+ AiravataSystemException exception = new AiravataSystemException();
+ exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
+ exception.setMessage("Error while adding application interface. More info : " + e.getMessage());
+ throw exception;
+ }
}
/**
@@ -1284,7 +1389,16 @@ public class AiravataServerHandler implements Airavata.Iface, Watcher {
*/
@Override
public ApplicationInterfaceDescription getApplicationInterface(String appInterfaceId) throws InvalidRequestException, AiravataClientException, AiravataSystemException, TException {
- return null;
+ try {
+ appCatalog = AppCatalogFactory.getAppCatalog();
+ return appCatalog.getApplicationInterface().getApplicationInterface(appInterfaceId);
+ } catch (AppCatalogException e) {
+ logger.error("Error while retrieving application interface...", e);
+ AiravataSystemException exception = new AiravataSystemException();
+ exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
+ exception.setMessage("Error while retrieving application interface. More info : " + e.getMessage());
+ throw exception;
+ }
}
/**
@@ -1297,7 +1411,17 @@ public class AiravataServerHandler implements Airavata.Iface, Watcher {
*/
@Override
public boolean updateApplicationInterface(String appInterfaceId, ApplicationInterfaceDescription applicationInterface) throws InvalidRequestException, AiravataClientException, AiravataSystemException, TException {
- return false;
+ try {
+ appCatalog = AppCatalogFactory.getAppCatalog();
+ appCatalog.getApplicationInterface().updateApplicationInterface(appInterfaceId, applicationInterface);
+ return true;
+ } catch (AppCatalogException e) {
+ logger.error("Error while updating application interface...", e);
+ AiravataSystemException exception = new AiravataSystemException();
+ exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
+ exception.setMessage("Error while updating application interface. More info : " + e.getMessage());
+ throw exception;
+ }
}
/**
@@ -1309,7 +1433,16 @@ public class AiravataServerHandler implements Airavata.Iface, Watcher {
*/
@Override
public boolean deleteApplicationInterface(String appInterfaceId) throws InvalidRequestException, AiravataClientException, AiravataSystemException, TException {
- return false;
+ try {
+ appCatalog = AppCatalogFactory.getAppCatalog();
+ return appCatalog.getApplicationInterface().removeApplicationInterface(appInterfaceId);
+ } catch (AppCatalogException e) {
+ logger.error("Error while deleting application interface...", e);
+ AiravataSystemException exception = new AiravataSystemException();
+ exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
+ exception.setMessage("Error while deleting application interface. More info : " + e.getMessage());
+ throw exception;
+ }
}
/**
@@ -1321,7 +1454,16 @@ public class AiravataServerHandler implements Airavata.Iface, Watcher {
*/
@Override
public List<InputDataObjectType> getApplicationInputs(String appInterfaceId) throws InvalidRequestException, AiravataClientException, AiravataSystemException, TException {
- return null;
+ try {
+ appCatalog = AppCatalogFactory.getAppCatalog();
+ return appCatalog.getApplicationInterface().getApplicationInputs(appInterfaceId);
+ } catch (AppCatalogException e) {
+ logger.error("Error while retrieving application inputs...", e);
+ AiravataSystemException exception = new AiravataSystemException();
+ exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
+ exception.setMessage("Error while retrieving application inputs. More info : " + e.getMessage());
+ throw exception;
+ }
}
/**
@@ -1333,7 +1475,16 @@ public class AiravataServerHandler implements Airavata.Iface, Watcher {
*/
@Override
public List<OutputDataObjectType> getApplicationOutputs(String appInterfaceId) throws InvalidRequestException, AiravataClientException, AiravataSystemException, TException {
- return null;
+ try {
+ appCatalog = AppCatalogFactory.getAppCatalog();
+ return appCatalog.getApplicationInterface().getApplicationOutputs(appInterfaceId);
+ } catch (AppCatalogException e) {
+ logger.error("Error while retrieving application outputs...", e);
+ AiravataSystemException exception = new AiravataSystemException();
+ exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
+ exception.setMessage("Error while retrieving application outputs. More info : " + e.getMessage());
+ throw exception;
+ }
}
}
http://git-wip-us.apache.org/repos/asf/airavata/blob/a2a27146/modules/app-catalog/app-catalog-cpi/src/main/java/org/airavata/appcatalog/cpi/ApplicationDeployment.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-cpi/src/main/java/org/airavata/appcatalog/cpi/ApplicationDeployment.java b/modules/app-catalog/app-catalog-cpi/src/main/java/org/airavata/appcatalog/cpi/ApplicationDeployment.java
index fc87f59..a0e4394 100644
--- a/modules/app-catalog/app-catalog-cpi/src/main/java/org/airavata/appcatalog/cpi/ApplicationDeployment.java
+++ b/modules/app-catalog/app-catalog-cpi/src/main/java/org/airavata/appcatalog/cpi/ApplicationDeployment.java
@@ -14,6 +14,13 @@ public interface ApplicationDeployment {
String addApplicationDeployment (ApplicationDeploymentDescription deploymentDescription) throws AppCatalogException;
/**
+ * This method will update application deployment
+ * @param deploymentId unique deployment id
+ * @param updatedDeployment updated deployment
+ */
+ void updateApplicationDeployment (String deploymentId, ApplicationDeploymentDescription updatedDeployment);
+
+ /**
* This method will retrive application deployement
* @param deploymentId unique deployment id
* @return application deployment
http://git-wip-us.apache.org/repos/asf/airavata/blob/a2a27146/modules/app-catalog/app-catalog-cpi/src/main/java/org/airavata/appcatalog/cpi/ApplicationInterface.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-cpi/src/main/java/org/airavata/appcatalog/cpi/ApplicationInterface.java b/modules/app-catalog/app-catalog-cpi/src/main/java/org/airavata/appcatalog/cpi/ApplicationInterface.java
index e8e18c6..70fbfe1 100644
--- a/modules/app-catalog/app-catalog-cpi/src/main/java/org/airavata/appcatalog/cpi/ApplicationInterface.java
+++ b/modules/app-catalog/app-catalog-cpi/src/main/java/org/airavata/appcatalog/cpi/ApplicationInterface.java
@@ -2,6 +2,8 @@ package org.airavata.appcatalog.cpi;
import org.apache.airavata.model.appcatalog.appdeployment.ApplicationModule;
import org.apache.airavata.model.appcatalog.appinterface.ApplicationInterfaceDescription;
+import org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType;
+import org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType;
import java.util.List;
import java.util.Map;
@@ -29,6 +31,22 @@ public interface ApplicationInterface {
void addApplicationModuleMapping (String moduleId, String interfaceId) throws AppCatalogException;
/**
+ * This method will update application module
+ * @param moduleId unique module Id
+ * @param updatedModule updated module
+ * @throws AppCatalogException
+ */
+ void updateApplicationModule (String moduleId, ApplicationModule updatedModule) throws AppCatalogException;
+
+ /**
+ * This method will update application interface
+ * @param interfaceId unique interface id
+ * @param updatedInterface updated app interface
+ * @throws AppCatalogException
+ */
+ void updateApplicationInterface (String interfaceId, ApplicationInterfaceDescription updatedInterface) throws AppCatalogException;
+
+ /**
* This method will retrieve application module by given module id
* @param moduleId unique module Id
* @return application module object
@@ -60,13 +78,13 @@ public interface ApplicationInterface {
* Remove application interface
* @param interfaceId unique interface id
*/
- void removeApplicationInterface (String interfaceId) throws AppCatalogException;
+ boolean removeApplicationInterface (String interfaceId) throws AppCatalogException;
/**
* Remove application module
* @param moduleId unique module Id
*/
- void removeApplicationModule (String moduleId) throws AppCatalogException;
+ boolean removeApplicationModule (String moduleId) throws AppCatalogException;
/**
* Check whether application interface exists
@@ -82,4 +100,20 @@ public interface ApplicationInterface {
*/
boolean isApplicationModuleExists(String moduleId) throws AppCatalogException;
+ /**
+ * This method will retrieve application inputs for given application interface
+ * @param interfaceId application interface id
+ * @return list of inputs
+ * @throws AppCatalogException
+ */
+ List<InputDataObjectType> getApplicationInputs(String interfaceId) throws AppCatalogException;
+
+ /**
+ * This method will retrieve application outputs for given application interface
+ * @param interfaceId application interface id
+ * @return list of output
+ * @throws AppCatalogException
+ */
+ List<OutputDataObjectType> getApplicationOutputs(String interfaceId) throws AppCatalogException;
+
}
http://git-wip-us.apache.org/repos/asf/airavata/blob/a2a27146/modules/app-catalog/app-catalog-cpi/src/main/java/org/airavata/appcatalog/cpi/ComputeResource.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-cpi/src/main/java/org/airavata/appcatalog/cpi/ComputeResource.java b/modules/app-catalog/app-catalog-cpi/src/main/java/org/airavata/appcatalog/cpi/ComputeResource.java
index 6e3c933..179e89a 100644
--- a/modules/app-catalog/app-catalog-cpi/src/main/java/org/airavata/appcatalog/cpi/ComputeResource.java
+++ b/modules/app-catalog/app-catalog-cpi/src/main/java/org/airavata/appcatalog/cpi/ComputeResource.java
@@ -14,6 +14,12 @@ public interface ComputeResource {
String addComputeResource (ComputeResourceDescription description) throws AppCatalogException;
/**
+ * This method will update compute resource
+ * @param computeResourceId unique compute resource id
+ * @param updatedComputeResource updated compute resource
+ */
+ void updateComputeResource (String computeResourceId, ComputeResourceDescription updatedComputeResource) throws AppCatalogException;
+ /**
* This function will add a SSHJobSubmission to the database
* @param sshJobSubmission sshJobSubmission object
* @return unique submission ID generated by airavata
http://git-wip-us.apache.org/repos/asf/airavata/blob/a2a27146/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/AppCatalogFactory.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/AppCatalogFactory.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/AppCatalogFactory.java
new file mode 100644
index 0000000..34e0976
--- /dev/null
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/AppCatalogFactory.java
@@ -0,0 +1,46 @@
+/*
+ *
+ * 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.aiaravata.application.catalog.data.impl;
+
+import org.airavata.appcatalog.cpi.AppCatalog;
+import org.airavata.appcatalog.cpi.AppCatalogException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class AppCatalogFactory {
+ private static AppCatalog appCatalog;
+
+ private static Logger logger = LoggerFactory.getLogger(AppCatalogFactory.class);
+
+ public static AppCatalog getAppCatalog() throws AppCatalogException{
+ try {
+ if (appCatalog == null){
+ appCatalog = new AppCatalogImpl();
+ }
+
+ }catch (Exception e){
+ logger.error("Unable to create app catalog instance", e);
+ throw new AppCatalogException(e);
+ }
+ return appCatalog;
+ }
+}
http://git-wip-us.apache.org/repos/asf/airavata/blob/a2a27146/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ApplicationDeploymentImpl.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ApplicationDeploymentImpl.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ApplicationDeploymentImpl.java
index 63ce10d..493cab8 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ApplicationDeploymentImpl.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ApplicationDeploymentImpl.java
@@ -105,6 +105,11 @@ public class ApplicationDeploymentImpl implements ApplicationDeployment {
}
@Override
+ public void updateApplicationDeployment(String deploymentId, ApplicationDeploymentDescription updatedDeployment) {
+
+ }
+
+ @Override
public ApplicationDeploymentDescription getApplicationDeployement(String deploymentId) throws AppCatalogException {
try {
AppDeploymentResource deploymentResource = new AppDeploymentResource();
http://git-wip-us.apache.org/repos/asf/airavata/blob/a2a27146/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ApplicationInterfaceImpl.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ApplicationInterfaceImpl.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ApplicationInterfaceImpl.java
index 4bc63d3..7d75c6a 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ApplicationInterfaceImpl.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ApplicationInterfaceImpl.java
@@ -33,6 +33,7 @@ import org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -132,6 +133,89 @@ public class ApplicationInterfaceImpl implements ApplicationInterface {
}
@Override
+ public void updateApplicationModule(String moduleId, ApplicationModule updatedModule) throws AppCatalogException {
+ try {
+ AppModuleResource moduleResource = new AppModuleResource();
+ AppModuleResource existingModule = (AppModuleResource)moduleResource.get(moduleId);
+ existingModule.setModuleName(updatedModule.getAppModuleName());
+ existingModule.setModuleDesc(updatedModule.getAppModuleDescription());
+ existingModule.setModuleVersion(updatedModule.getAppModuleVersion());
+ existingModule.save();
+ }catch (Exception e) {
+ logger.error("Error while updating application module...", e);
+ throw new AppCatalogException(e);
+ }
+ }
+
+ @Override
+ public void updateApplicationInterface(String interfaceId, ApplicationInterfaceDescription updatedInterface) throws AppCatalogException {
+ try {
+ AppInterfaceResource resource = new AppInterfaceResource();
+ AppInterfaceResource existingInterface = (AppInterfaceResource)resource.get(interfaceId);
+ existingInterface.setAppName(updatedInterface.getApplicationName());
+ existingInterface.save();
+
+ List<String> applicationModules = updatedInterface.getApplicationModules();
+ if (applicationModules != null && !applicationModules.isEmpty()){
+ for (String moduleId : applicationModules){
+ AppModuleResource appModuleResource = new AppModuleResource();
+ AppModuleMappingResource moduleMappingResource = new AppModuleMappingResource();
+ Map<String, String> ids = new HashMap<String, String>();
+ ids.put(AbstractResource.AppModuleMappingConstants.MODULE_ID, moduleId);
+ ids.put(AbstractResource.AppModuleMappingConstants.INTERFACE_ID, interfaceId);
+ AppModuleMappingResource existingMapping = (AppModuleMappingResource)moduleMappingResource.get(ids);
+ existingMapping.setInterfaceId(interfaceId);
+ existingMapping.setModuleId(moduleId);
+ existingMapping.setModuleResource((AppModuleResource)appModuleResource.get(moduleId));
+ existingMapping.setAppInterfaceResource(existingInterface);
+ existingMapping.save();
+ }
+ }
+
+ List<InputDataObjectType> applicationInputs = updatedInterface.getApplicationInputs();
+ if (applicationInputs != null && !applicationInputs.isEmpty()){
+ for (InputDataObjectType input : applicationInputs){
+ ApplicationInputResource inputResource = new ApplicationInputResource();
+ Map<String, String> ids = new HashMap<String, String>();
+ ids.put(AbstractResource.AppInputConstants.INTERFACE_ID, interfaceId);
+ ids.put(AbstractResource.AppInputConstants.INPUT_KEY, input.getName());
+ ApplicationInputResource existingResource = (ApplicationInputResource)inputResource.get(ids);
+ existingResource.setAppInterfaceResource(existingInterface);
+ existingResource.setInterfaceID(interfaceId);
+ existingResource.setUserFriendlyDesc(input.getUserFriendlyDescription());
+ existingResource.setInputKey(input.getName());
+ existingResource.setInputVal(input.getValue());
+ existingResource.setDataType(input.getType().toString());
+ existingResource.setMetadata(input.getMetaData());
+ existingResource.setStandareInput(input.isStandardInput());
+ existingResource.setAppArgument(input.getApplicationArguement());
+ existingResource.save();
+ }
+ }
+
+ List<OutputDataObjectType> applicationOutputs = updatedInterface.getApplicationOutputs();
+ if (applicationOutputs != null && !applicationOutputs.isEmpty()){
+ for (OutputDataObjectType output : applicationOutputs){
+ ApplicationOutputResource outputResource = new ApplicationOutputResource();
+ Map<String, String> ids = new HashMap<String, String>();
+ ids.put(AbstractResource.AppOutputConstants.INTERFACE_ID, interfaceId);
+ ids.put(AbstractResource.AppOutputConstants.OUTPUT_KEY, output.getName());
+ ApplicationOutputResource existingResource = (ApplicationOutputResource)outputResource.get(ids);
+ existingResource.setInterfaceID(interfaceId);
+ existingResource.setAppInterfaceResource(existingInterface);
+ existingResource.setOutputKey(output.getName());
+ existingResource.setOutputVal(output.getValue());
+ existingResource.setDataType(output.getType().toString());
+ existingResource.save();
+ }
+ }
+ }catch (Exception e) {
+ logger.error("Error while updating application interface...", e);
+ throw new AppCatalogException(e);
+ }
+ }
+
+ @Override
public ApplicationModule getApplicationModule(String moduleId) throws AppCatalogException {
try {
AppModuleResource appModuleResource = new AppModuleResource();
@@ -198,10 +282,11 @@ public class ApplicationInterfaceImpl implements ApplicationInterface {
}
@Override
- public void removeApplicationInterface(String interfaceId) throws AppCatalogException {
+ public boolean removeApplicationInterface(String interfaceId) throws AppCatalogException {
try {
AppInterfaceResource resource = new AppInterfaceResource();
resource.remove(interfaceId);
+ return true;
}catch (Exception e){
logger.error("Error while removing app interface...", e);
throw new AppCatalogException(e);
@@ -209,10 +294,11 @@ public class ApplicationInterfaceImpl implements ApplicationInterface {
}
@Override
- public void removeApplicationModule(String moduleId) throws AppCatalogException {
+ public boolean removeApplicationModule(String moduleId) throws AppCatalogException {
try {
AppModuleResource resource = new AppModuleResource();
resource.remove(moduleId);
+ return true;
}catch (Exception e){
logger.error("Error while removing app module...", e);
throw new AppCatalogException(e);
@@ -240,4 +326,28 @@ public class ApplicationInterfaceImpl implements ApplicationInterface {
throw new AppCatalogException(e);
}
}
+
+ @Override
+ public List<InputDataObjectType> getApplicationInputs(String interfaceId) throws AppCatalogException {
+ try {
+ ApplicationInputResource resource = new ApplicationInputResource();
+ List<Resource> resources = resource.get(AbstractResource.AppInputConstants.INTERFACE_ID, interfaceId);
+ return AppCatalogThriftConversion.getAppInputs(resources);
+ }catch (Exception e){
+ logger.error("Error while retrieving app inputs...", e);
+ throw new AppCatalogException(e);
+ }
+ }
+
+ @Override
+ public List<OutputDataObjectType> getApplicationOutputs(String interfaceId) throws AppCatalogException {
+ try {
+ ApplicationOutputResource resource = new ApplicationOutputResource();
+ List<Resource> resources = resource.get(AbstractResource.AppOutputConstants.INTERFACE_ID, interfaceId);
+ return AppCatalogThriftConversion.getAppOutputs(resources);
+ }catch (Exception e){
+ logger.error("Error while retrieving app outputs...", e);
+ throw new AppCatalogException(e);
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/airavata/blob/a2a27146/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ComputeResourceImpl.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ComputeResourceImpl.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ComputeResourceImpl.java
index 03c61d0..a16028b 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ComputeResourceImpl.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ComputeResourceImpl.java
@@ -30,6 +30,7 @@ import org.apache.airavata.model.computehost.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -103,6 +104,84 @@ public class ComputeResourceImpl implements ComputeResource {
}
@Override
+ public void updateComputeResource(String computeResourceId, ComputeResourceDescription updatedComputeResource) throws AppCatalogException{
+ try {
+ ComputeHostResource computeHostResource = new ComputeHostResource();
+ ComputeHostResource existingComputeResouce = (ComputeHostResource)computeHostResource.get(computeResourceId);
+ existingComputeResouce.setHostName(updatedComputeResource.getHostName());
+ existingComputeResouce.setPreferredJobSubmissionProtocol(updatedComputeResource.getPreferredJobSubmissionProtocol());
+ existingComputeResouce.setDescription(updatedComputeResource.getResourceDescription());
+ existingComputeResouce.save();
+
+ Set<String> hostAliases = updatedComputeResource.getHostAliases();
+ if (hostAliases != null && !hostAliases.isEmpty()) {
+ for (String alias : hostAliases) {
+ HostAliasResource aliasResource = new HostAliasResource();
+ Map<String, String> ids = new HashMap<String, String>();
+ ids.put(AbstractResource.HostAliasConstants.RESOURCE_ID, computeResourceId);
+ ids.put(AbstractResource.HostAliasConstants.ALIAS, alias);
+ HostAliasResource existingAlias = (HostAliasResource)aliasResource.get(ids);
+ existingAlias.setComputeHostResource(existingComputeResouce);
+ existingAlias.setAlias(alias);
+ existingAlias.save();
+ }
+ }
+
+ Set<String> ipAddresses = updatedComputeResource.getIpAddresses();
+ if (ipAddresses != null && !ipAddresses.isEmpty()) {
+ for (String ipAddress : ipAddresses) {
+ HostIPAddressResource ipAddressResource = new HostIPAddressResource();
+ Map<String, String> ids = new HashMap<String, String>();
+ ids.put(AbstractResource.HostIPAddressConstants.RESOURCE_ID, computeResourceId);
+ ids.put(AbstractResource.HostIPAddressConstants.IP_ADDRESS, ipAddress);
+ HostIPAddressResource existingIpAddress = (HostIPAddressResource)ipAddressResource.get(ids);
+ existingIpAddress.setComputeHostResource(existingComputeResouce);
+ existingIpAddress.setResourceID(computeResourceId);
+ existingIpAddress.setIpaddress(ipAddress);
+ existingIpAddress.save();
+ }
+ }
+ Map<String, JobSubmissionProtocol> jobSubmissionProtocols = updatedComputeResource.getJobSubmissionProtocols();
+ if (jobSubmissionProtocols != null && !jobSubmissionProtocols.isEmpty()) {
+ for (String submissionId : jobSubmissionProtocols.keySet()) {
+ JobSubmissionProtocol jobSubmissionProtocol = jobSubmissionProtocols.get(submissionId);
+ JobSubmissionProtocolResource resource = new JobSubmissionProtocolResource();
+ Map<String, String> ids = new HashMap<String, String>();
+ ids.put(AbstractResource.JobSubmissionProtocolConstants.RESOURCE_ID, computeResourceId);
+ ids.put(AbstractResource.JobSubmissionProtocolConstants.SUBMISSION_ID, submissionId);
+ ids.put(AbstractResource.JobSubmissionProtocolConstants.JOB_TYPE, jobSubmissionProtocol.toString());
+ JobSubmissionProtocolResource existingJobProtocol = (JobSubmissionProtocolResource)resource.get(ids);
+ existingJobProtocol.setResourceID(computeResourceId);
+ existingJobProtocol.setComputeHostResource(existingComputeResouce);
+ existingJobProtocol.setSubmissionID(submissionId);
+ existingJobProtocol.setJobType(jobSubmissionProtocol.toString());
+ existingJobProtocol.save();
+ }
+ }
+ Map<String, DataMovementProtocol> movementProtocols = updatedComputeResource.getDataMovementProtocols();
+ if (movementProtocols != null && !movementProtocols.isEmpty()) {
+ for (String dataMoveId : movementProtocols.keySet()) {
+ DataMovementProtocol dataMovementProtocol = movementProtocols.get(dataMoveId);
+ DataMovementProtocolResource resource = new DataMovementProtocolResource();
+ Map<String, String> ids = new HashMap<String, String>();
+ ids.put(AbstractResource.DataMoveProtocolConstants.RESOURCE_ID, computeResourceId);
+ ids.put(AbstractResource.DataMoveProtocolConstants.DATA_MOVE_ID, dataMoveId);
+ ids.put(AbstractResource.DataMoveProtocolConstants.JOB_TYPE, dataMovementProtocol.toString());
+ DataMovementProtocolResource existingDMP = (DataMovementProtocolResource)resource.get(ids);
+ existingDMP.setResourceID(computeResourceId);
+ existingDMP.setComputeHostResource(existingComputeResouce);
+ existingDMP.setDataMoveID(dataMoveId);
+ existingDMP.setDataMoveType(dataMovementProtocol.toString());
+ existingDMP.save();
+ }
+ }
+ } catch (Exception e) {
+ logger.error("Error while updating compute resource...", e);
+ throw new AppCatalogException(e);
+ }
+ }
+
+ @Override
public String addSSHJobSubmission(String computeResourceId, SSHJobSubmission sshJobSubmission) throws AppCatalogException {
try {
SSHSubmissionResource resource = new SSHSubmissionResource();