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/06/30 21:54:15 UTC
git commit: app-catalog cpi for app-deployment - AIRAVATA-1228
Repository: airavata
Updated Branches:
refs/heads/master 506593c48 -> 3c2b11cb2
app-catalog cpi for app-deployment - AIRAVATA-1228
Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/3c2b11cb
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/3c2b11cb
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/3c2b11cb
Branch: refs/heads/master
Commit: 3c2b11cb2fa6a20a3606950090dd7ae85500c36b
Parents: 506593c
Author: Chathuri Wimalasena <ka...@gmail.com>
Authored: Mon Jun 30 15:54:10 2014 -0400
Committer: Chathuri Wimalasena <ka...@gmail.com>
Committed: Mon Jun 30 15:54:10 2014 -0400
----------------------------------------------------------------------
.../appcatalog/cpi/ApplicationDeployment.java | 2 +-
.../data/impl/ApplicationDeploymentImpl.java | 117 ++++++++++++++++++-
.../data/util/AppCatalogThriftConversion.java | 88 +++++++++++++-
3 files changed, 199 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/airavata/blob/3c2b11cb/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 e23b442..fc87f59 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
@@ -18,7 +18,7 @@ public interface ApplicationDeployment {
* @param deploymentId unique deployment id
* @return application deployment
*/
- String getApplicationDeployement (String deploymentId) throws AppCatalogException;
+ ApplicationDeploymentDescription getApplicationDeployement (String deploymentId) throws AppCatalogException;
/**
* This method will return a list of application deployments according to given search criteria
http://git-wip-us.apache.org/repos/asf/airavata/blob/3c2b11cb/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 85343a2..63ce10d 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
@@ -23,7 +23,11 @@ package org.apache.aiaravata.application.catalog.data.impl;
import org.airavata.appcatalog.cpi.AppCatalogException;
import org.airavata.appcatalog.cpi.ApplicationDeployment;
+import org.apache.aiaravata.application.catalog.data.resources.*;
+import org.apache.aiaravata.application.catalog.data.util.AppCatalogThriftConversion;
+import org.apache.aiaravata.application.catalog.data.util.AppCatalogUtils;
import org.apache.airavata.model.appcatalog.appdeployment.ApplicationDeploymentDescription;
+import org.apache.airavata.model.appcatalog.appdeployment.SetEnvPaths;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -35,26 +39,129 @@ public class ApplicationDeploymentImpl implements ApplicationDeployment {
@Override
public String addApplicationDeployment(ApplicationDeploymentDescription deploymentDescription) throws AppCatalogException {
- return null;
+ try {
+ AppDeploymentResource deploymentResource = new AppDeploymentResource();
+ ComputeHostResource computeHostResource = new ComputeHostResource();
+ AppModuleResource moduleResource = new AppModuleResource();
+ if (!computeHostResource.isExists(deploymentDescription.getComputeHostId())){
+ logger.error("Compute host does not exist in the system. Please create a Compute host first...");
+ throw new AppCatalogException("Compute host does not exist in the system. Please create a Compute host first...");
+ }
+ if (!moduleResource.isExists(deploymentDescription.getAppModuleId())){
+ logger.error("Application module does not exist in the system. Please create an application module first...");
+ throw new AppCatalogException("Application module does not exist in the system. Please create an application module first...");
+ }
+ AppModuleResource module = (AppModuleResource)moduleResource.get(deploymentDescription.getAppModuleId());
+ deploymentResource.setDeploymentId(AppCatalogUtils.getID(module.getModuleName()));
+ deploymentResource.setAppModuleId(deploymentDescription.getAppModuleId());
+ deploymentResource.setModuleResource(module);
+ deploymentResource.setHostId(deploymentDescription.getComputeHostId());
+ deploymentResource.setHostResource((ComputeHostResource)computeHostResource.get(deploymentDescription.getComputeHostId()));
+ deploymentResource.setAppDes(deploymentDescription.getAppDeploymentDescription());
+ deploymentResource.setExecutablePath(deploymentDescription.getExecutablePath());
+ deploymentResource.setEnvModuleLoadCMD(deploymentDescription.getModuleLoadCmd());
+ deploymentResource.save();
+ deploymentDescription.setAppDeploymentId(deploymentResource.getDeploymentId());
+
+ List<SetEnvPaths> libPrependPaths = deploymentDescription.getLibPrependPaths();
+ if (libPrependPaths != null && !libPrependPaths.isEmpty()){
+ for (SetEnvPaths path : libPrependPaths){
+ LibraryPrepandPathResource prepandPathResource = new LibraryPrepandPathResource();
+ prepandPathResource.setAppDeploymentResource(deploymentResource);
+ prepandPathResource.setName(path.getName());
+ prepandPathResource.setValue(path.getValue());
+ prepandPathResource.setDeploymentId(deploymentResource.getDeploymentId());
+ prepandPathResource.save();
+ }
+ }
+
+ List<SetEnvPaths> libApendPaths = deploymentDescription.getLibAppendPaths();
+ if (libApendPaths != null && !libApendPaths.isEmpty()){
+ for (SetEnvPaths path : libApendPaths){
+ LibraryApendPathResource apendPathResource = new LibraryApendPathResource();
+ apendPathResource.setAppDeploymentResource(deploymentResource);
+ apendPathResource.setName(path.getName());
+ apendPathResource.setValue(path.getValue());
+ apendPathResource.setDeploymentId(deploymentResource.getDeploymentId());
+ apendPathResource.save();
+ }
+ }
+ List<SetEnvPaths> setEnvironment = deploymentDescription.getSetEnvironment();
+ if (setEnvironment != null && !setEnvironment.isEmpty()){
+ for (SetEnvPaths path : setEnvironment){
+ AppEnvironmentResource environmentResource = new AppEnvironmentResource();
+ environmentResource.setAppDeploymentResource(deploymentResource);
+ environmentResource.setName(path.getName());
+ environmentResource.setValue(path.getValue());
+ environmentResource.setDeploymentId(deploymentResource.getDeploymentId());
+ environmentResource.save();
+ }
+ }
+ return deploymentResource.getDeploymentId();
+ }catch (Exception e) {
+ logger.error("Error while saving application deployment...", e);
+ throw new AppCatalogException(e);
+ }
}
@Override
- public String getApplicationDeployement(String deploymentId) throws AppCatalogException {
- return null;
+ public ApplicationDeploymentDescription getApplicationDeployement(String deploymentId) throws AppCatalogException {
+ try {
+ AppDeploymentResource deploymentResource = new AppDeploymentResource();
+ AppDeploymentResource appDep = (AppDeploymentResource)deploymentResource.get(deploymentId);
+ return AppCatalogThriftConversion.getApplicationDeploymentDescription(appDep);
+ }catch (Exception e) {
+ logger.error("Error while retrieving application deployment...", e);
+ throw new AppCatalogException(e);
+ }
}
@Override
public List<ApplicationDeploymentDescription> getApplicationDeployements(Map<String, String> filters) throws AppCatalogException {
+ try {
+ AppDeploymentResource resource = new AppDeploymentResource();
+ for (String fieldName : filters.keySet() ){
+ if (fieldName.equals(AbstractResource.ApplicationDeploymentConstants.APP_MODULE_ID)){
+ List<Resource> resources = resource.get(AbstractResource.ApplicationDeploymentConstants.APP_MODULE_ID, filters.get(fieldName));
+ if (resources != null && !resources.isEmpty()){
+ return AppCatalogThriftConversion.getAppDepDescList(resources);
+ }
+ }else if (fieldName.equals(AbstractResource.ApplicationDeploymentConstants.COMPUTE_HOST_ID)){
+ List<Resource> resources = resource.get(AbstractResource.ApplicationDeploymentConstants.COMPUTE_HOST_ID, filters.get(fieldName));
+ if (resources != null && !resources.isEmpty()){
+ return AppCatalogThriftConversion.getAppDepDescList(resources);
+ }
+ } else {
+ logger.error("Unsupported field name for app deployment.", new IllegalArgumentException());
+ throw new IllegalArgumentException("Unsupported field name for app deployment.");
+ }
+ }
+ }catch (Exception e){
+ logger.error("Error while retrieving app deployment list...", e);
+ throw new AppCatalogException(e);
+ }
return null;
}
@Override
public boolean isAppDeploymentExists(String deploymentId) throws AppCatalogException {
- return false;
+ try {
+ AppDeploymentResource deploymentResource = new AppDeploymentResource();
+ return deploymentResource.isExists(deploymentId);
+ }catch (Exception e){
+ logger.error("Error while retrieving app deployment...", e);
+ throw new AppCatalogException(e);
+ }
}
@Override
public void removeAppDeployment(String deploymentId) throws AppCatalogException {
-
+ try {
+ AppDeploymentResource deploymentResource = new AppDeploymentResource();
+ deploymentResource.remove(deploymentId);
+ }catch (Exception e){
+ logger.error("Error while deleting app deployment...", e);
+ throw new AppCatalogException(e);
+ }
}
}
http://git-wip-us.apache.org/repos/asf/airavata/blob/3c2b11cb/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogThriftConversion.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogThriftConversion.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogThriftConversion.java
index 977d524..1771639 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogThriftConversion.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/AppCatalogThriftConversion.java
@@ -22,8 +22,12 @@
package org.apache.aiaravata.application.catalog.data.util;
import org.airavata.appcatalog.cpi.AppCatalogException;
+import org.apache.aiaravata.application.catalog.data.model.ApplicationDeployment;
+import org.apache.aiaravata.application.catalog.data.model.LibraryPrepandPath;
import org.apache.aiaravata.application.catalog.data.resources.*;
+import org.apache.airavata.model.appcatalog.appdeployment.ApplicationDeploymentDescription;
import org.apache.airavata.model.appcatalog.appdeployment.ApplicationModule;
+import org.apache.airavata.model.appcatalog.appdeployment.SetEnvPaths;
import org.apache.airavata.model.appcatalog.appinterface.ApplicationInterfaceDescription;
import org.apache.airavata.model.appcatalog.appinterface.DataType;
import org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType;
@@ -235,7 +239,7 @@ public class AppCatalogThriftConversion {
public static List<SSHJobSubmission> getSSHSubmissionList (List<Resource> resources) throws AppCatalogException {
List<SSHJobSubmission> list = new ArrayList<SSHJobSubmission>();
for (Resource resource : resources){
- list.add(getSSHJobSubmissionDescription((SSHSubmissionResource)resource));
+ list.add(getSSHJobSubmissionDescription((SSHSubmissionResource) resource));
}
return list;
}
@@ -363,7 +367,8 @@ public class AppCatalogThriftConversion {
inputs.add(getInputDataObjType((ApplicationInputResource) resource));
}
return inputs;
- }
+ }
+
public static InputDataObjectType getInputDataObjType (ApplicationInputResource input){
InputDataObjectType inputDataObjectType = new InputDataObjectType();
inputDataObjectType.setName(input.getInputKey());
@@ -391,5 +396,84 @@ public class AppCatalogThriftConversion {
return outputDataObjectType;
}
+ public static ApplicationDeploymentDescription getApplicationDeploymentDescription (AppDeploymentResource resource) throws AppCatalogException {
+ ApplicationDeploymentDescription description = new ApplicationDeploymentDescription();
+ description.setAppDeploymentId(resource.getDeploymentId());
+ description.setAppModuleId(resource.getAppModuleId());
+ description.setComputeHostId(resource.getHostId());
+ description.setExecutablePath(resource.getExecutablePath());
+ description.setAppDeploymentDescription(resource.getAppDes());
+ description.setModuleLoadCmd(resource.getEnvModuleLoadCMD());
+
+ LibraryPrepandPathResource prepandPathResource = new LibraryPrepandPathResource();
+ List<Resource> libPrepandPaths = prepandPathResource.get(AbstractResource.LibraryPrepandPathConstants.DEPLOYMENT_ID, resource.getDeploymentId());
+ if (libPrepandPaths != null && !libPrepandPaths.isEmpty()){
+ description.setLibPrependPaths(getLibPrepandPaths(libPrepandPaths));
+ }
+
+ LibraryApendPathResource apendPathResource = new LibraryApendPathResource();
+ List<Resource> libApendPaths = apendPathResource.get(AbstractResource.LibraryPrepandPathConstants.DEPLOYMENT_ID, resource.getDeploymentId());
+ if (libApendPaths != null && !libApendPaths.isEmpty()){
+ description.setLibAppendPaths(getLibApendPaths(libApendPaths));
+ }
+
+ AppEnvironmentResource appEnvironmentResource = new AppEnvironmentResource();
+ List<Resource> appEnvList = appEnvironmentResource.get(AbstractResource.LibraryPrepandPathConstants.DEPLOYMENT_ID, resource.getDeploymentId());
+ if (appEnvList != null && !appEnvList.isEmpty()){
+ description.setSetEnvironment(getAppEnvPaths(appEnvList));
+ }
+ return description;
+ }
+
+ public static List<ApplicationDeploymentDescription> getAppDepDescList (List<Resource> resources) throws AppCatalogException {
+ List<ApplicationDeploymentDescription> appList = new ArrayList<ApplicationDeploymentDescription>();
+ for (Resource resource : resources){
+ appList.add(getApplicationDeploymentDescription((AppDeploymentResource)resource));
+ }
+ return appList;
+ }
+
+ public static SetEnvPaths getSetEnvPath(Resource resource){
+ SetEnvPaths envPaths = new SetEnvPaths();
+ if (resource instanceof LibraryPrepandPathResource){
+ envPaths.setName(((LibraryPrepandPathResource) resource).getName());
+ envPaths.setValue(((LibraryPrepandPathResource) resource).getValue());
+ return envPaths;
+ }else if (resource instanceof LibraryApendPathResource){
+ envPaths.setName(((LibraryApendPathResource) resource).getName());
+ envPaths.setValue(((LibraryApendPathResource) resource).getValue());
+ return envPaths;
+ }else if (resource instanceof AppEnvironmentResource){
+ envPaths.setName(((AppEnvironmentResource) resource).getName());
+ envPaths.setValue(((AppEnvironmentResource) resource).getValue());
+ return envPaths;
+ }else {
+ return null;
+ }
+ }
+
+ public static List<SetEnvPaths> getLibPrepandPaths (List<Resource> prepandPaths){
+ List<SetEnvPaths> pathList = new ArrayList<SetEnvPaths>();
+ for (Resource resource : prepandPaths){
+ pathList.add(getSetEnvPath(resource));
+ }
+ return pathList;
+ }
+
+ public static List<SetEnvPaths> getLibApendPaths (List<Resource> appendPaths){
+ List<SetEnvPaths> pathList = new ArrayList<SetEnvPaths>();
+ for (Resource resource : appendPaths){
+ pathList.add(getSetEnvPath(resource));
+ }
+ return pathList;
+ }
+
+ public static List<SetEnvPaths> getAppEnvPaths (List<Resource> appEnvPaths){
+ List<SetEnvPaths> pathList = new ArrayList<SetEnvPaths>();
+ for (Resource resource : appEnvPaths){
+ pathList.add(getSetEnvPath(resource));
+ }
+ return pathList;
+ }
}