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/11/14 23:04:07 UTC

airavata git commit: Merging changes from safekeeping branch to master

Repository: airavata
Updated Branches:
  refs/heads/master aee6aad8e -> 6d7890d4c


Merging changes from safekeeping branch to master


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/6d7890d4
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/6d7890d4
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/6d7890d4

Branch: refs/heads/master
Commit: 6d7890d4cf93764046f2aaf8c0fa9b2b5439acbd
Parents: aee6aad
Author: Chathuri Wimalasena <ka...@gmail.com>
Authored: Fri Nov 14 17:03:54 2014 -0500
Committer: Chathuri Wimalasena <ka...@gmail.com>
Committed: Fri Nov 14 17:03:54 2014 -0500

----------------------------------------------------------------------
 .../server/handler/AiravataServerHandler.java   | 11 +++-
 .../data/impl/ApplicationInterfaceImpl.java     | 63 +++++++++++++-------
 .../resources/AppModuleMappingResource.java     | 29 ++++++++-
 .../resources/ApplicationInputResource.java     |  6 +-
 .../resources/ApplicationOutputResource.java    | 31 +++++-----
 .../app/catalog/test/AppInterfaceTest.java      | 15 ++++-
 .../airavata/gfac/monitor/HPCMonitorID.java     |  2 +-
 .../apache/airavata/gsi/ssh/util/SSHUtils.java  |  4 +-
 8 files changed, 112 insertions(+), 49 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/6d7890d4/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 76a6d2d..c98850f 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
@@ -1425,7 +1425,16 @@ public class AiravataServerHandler implements Airavata.Iface {
      */
     @Override
     public List<ApplicationDeploymentDescription> getAllApplicationDeployments() throws InvalidRequestException, AiravataClientException, AiravataSystemException, TException {
-        return null;
+        try {
+            appCatalog = AppCatalogFactory.getAppCatalog();
+            return appCatalog.getApplicationDeployment().getAllApplicationDeployements();
+        } 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 deployments. More info : " + e.getMessage());
+            throw exception;
+        }
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/airavata/blob/6d7890d4/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 5c3db08..d430ebe 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
@@ -162,36 +162,52 @@ public class ApplicationInterfaceImpl implements ApplicationInterface {
     public void updateApplicationInterface(String interfaceId, ApplicationInterfaceDescription updatedInterface) throws AppCatalogException {
         try {
             AppInterfaceResource resource = new AppInterfaceResource();
-            AppInterfaceResource existingInterface = (AppInterfaceResource)resource.get(interfaceId);
+            AppInterfaceResource existingInterface = (AppInterfaceResource) resource.get(interfaceId);
             existingInterface.setAppName(updatedInterface.getApplicationName());
+            existingInterface.setAppDescription(updatedInterface.getApplicationDescription());
             existingInterface.save();
 
+            // remove existing modules before adding
+            Map<String, String> ids = new HashMap<String, String>();
+            ids.put(AbstractResource.AppModuleMappingConstants.INTERFACE_ID, interfaceId);
+            AppModuleMappingResource moduleMappingResource = new AppModuleMappingResource();
+            moduleMappingResource.remove(ids);
             List<String> applicationModules = updatedInterface.getApplicationModules();
-            if (applicationModules != null && !applicationModules.isEmpty()){
-                for (String moduleId : applicationModules){
+            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>();
+                    moduleMappingResource = new AppModuleMappingResource();
+                    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);
+                    AppModuleMappingResource existingMapping;
+                    if (!moduleMappingResource.isExists(ids)) {
+                        existingMapping = new AppModuleMappingResource();
+                    } else {
+                        existingMapping = (AppModuleMappingResource) moduleMappingResource.get(ids);
+                    }
                     existingMapping.setInterfaceId(interfaceId);
                     existingMapping.setModuleId(moduleId);
-                    existingMapping.setModuleResource((AppModuleResource)appModuleResource.get(moduleId));
+                    existingMapping.setModuleResource((AppModuleResource) appModuleResource.get(moduleId));
                     existingMapping.setAppInterfaceResource(existingInterface);
                     existingMapping.save();
                 }
             }
 
+            // remove existing application inputs
+            ApplicationInputResource inputResource = new ApplicationInputResource();
+            ids = new HashMap<String, String>();
+            ids.put(AbstractResource.AppInputConstants.INTERFACE_ID, interfaceId);
+            inputResource.remove(ids);
             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>();
+            if (applicationInputs != null && !applicationInputs.isEmpty()) {
+                for (InputDataObjectType input : applicationInputs) {
+                    inputResource = new ApplicationInputResource();
+                    ids = new HashMap<String, String>();
                     ids.put(AbstractResource.AppInputConstants.INTERFACE_ID, interfaceId);
                     ids.put(AbstractResource.AppInputConstants.INPUT_KEY, input.getName());
-                    if (inputResource.isExists(ids)){
-                        inputResource = (ApplicationInputResource)inputResource.get(ids);
+                    if (inputResource.isExists(ids)) {
+                        inputResource = (ApplicationInputResource) inputResource.get(ids);
                     }
                     inputResource.setAppInterfaceResource(existingInterface);
                     inputResource.setInterfaceID(interfaceId);
@@ -206,15 +222,20 @@ public class ApplicationInterfaceImpl implements ApplicationInterface {
                 }
             }
 
+            // remove existing app outputs before adding
+            ApplicationOutputResource outputResource = new ApplicationOutputResource();
+            ids = new HashMap<String, String>();
+            ids.put(AbstractResource.AppOutputConstants.INTERFACE_ID, interfaceId);
+            outputResource.remove(ids);
             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>();
+            if (applicationOutputs != null && !applicationOutputs.isEmpty()) {
+                for (OutputDataObjectType output : applicationOutputs) {
+                    outputResource = new ApplicationOutputResource();
+                    ids = new HashMap<String, String>();
                     ids.put(AbstractResource.AppOutputConstants.INTERFACE_ID, interfaceId);
                     ids.put(AbstractResource.AppOutputConstants.OUTPUT_KEY, output.getName());
-                    if (outputResource.isExists(ids)){
-                        outputResource = (ApplicationOutputResource)outputResource.get(ids);
+                    if (outputResource.isExists(ids)) {
+                        outputResource = (ApplicationOutputResource) outputResource.get(ids);
                     }
                     outputResource.setInterfaceID(interfaceId);
                     outputResource.setAppInterfaceResource(existingInterface);
@@ -224,8 +245,8 @@ public class ApplicationInterfaceImpl implements ApplicationInterface {
                     outputResource.save();
                 }
             }
-        }catch (Exception e) {
-            logger.error("Error while updating application interface "+interfaceId, e);
+        } catch (Exception e) {
+            logger.error("Error while updating application interface " + interfaceId, e);
             throw new AppCatalogException(e);
         }
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/6d7890d4/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/AppModuleMappingResource.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/AppModuleMappingResource.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/AppModuleMappingResource.java
index 2b904ad..a44229d 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/AppModuleMappingResource.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/AppModuleMappingResource.java
@@ -95,7 +95,32 @@ public class AppModuleMappingResource extends AbstractResource {
             em.getTransaction().begin();
             AppCatalogQueryGenerator generator= new AppCatalogQueryGenerator(APP_MODULE_MAPPING);
             generator.setParameter(AppModuleMappingConstants.INTERFACE_ID, ids.get(AppModuleMappingConstants.INTERFACE_ID));
-            generator.setParameter(AppModuleMappingConstants.MODULE_ID, ids.get(AppModuleMappingConstants.MODULE_ID));
+            if (ids.get(AppModuleMappingConstants.MODULE_ID) != null){
+                generator.setParameter(AppModuleMappingConstants.MODULE_ID, ids.get(AppModuleMappingConstants.MODULE_ID));
+            }
+            Query q = generator.deleteQuery(em);
+            q.executeUpdate();
+            em.getTransaction().commit();
+            em.close();
+        } catch (ApplicationSettingsException e) {
+            logger.error(e.getMessage(), e);
+            throw new AppCatalogException(e);
+        } finally {
+            if (em != null && em.isOpen()) {
+                if (em.getTransaction().isActive()){
+                    em.getTransaction().rollback();
+                }
+                em.close();
+            }
+        }
+    }
+
+    public void removeAll() throws AppCatalogException {
+        EntityManager em = null;
+        try {
+            em = AppCatalogJPAUtils.getEntityManager();
+            em.getTransaction().begin();
+            AppCatalogQueryGenerator generator= new AppCatalogQueryGenerator(APP_MODULE_MAPPING);
             Query q = generator.deleteQuery(em);
             q.executeUpdate();
             em.getTransaction().commit();
@@ -289,4 +314,4 @@ public class AppModuleMappingResource extends AbstractResource {
             }
         }
     }
-}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/6d7890d4/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ApplicationInputResource.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ApplicationInputResource.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ApplicationInputResource.java
index 764ddd8..6894ff1 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ApplicationInputResource.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ApplicationInputResource.java
@@ -67,7 +67,9 @@ public class ApplicationInputResource extends AbstractResource {
             em.getTransaction().begin();
             AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(APPLICATION_INPUT);
             generator.setParameter(AppInputConstants.INTERFACE_ID, ids.get(AppInputConstants.INTERFACE_ID));
-            generator.setParameter(AppInputConstants.INPUT_KEY, ids.get(AppInputConstants.INPUT_KEY));
+            if (ids.get(AppInputConstants.INPUT_KEY) != null){
+                generator.setParameter(AppInputConstants.INPUT_KEY, ids.get(AppInputConstants.INPUT_KEY));
+            }
             Query q = generator.deleteQuery(em);
             q.executeUpdate();
             em.getTransaction().commit();
@@ -277,9 +279,9 @@ public class ApplicationInputResource extends AbstractResource {
             } else {
             	applicationInput=existingApplicationInput;
             }
-            applicationInput.setInterfaceID(interfaceID);
             ApplicationInterface applicationInterface = em.find(ApplicationInterface.class, interfaceID);
             applicationInput.setApplicationInterface(applicationInterface);
+            applicationInput.setInterfaceID(applicationInterface.getInterfaceID());
             applicationInput.setDataType(dataType);
             applicationInput.setInputKey(inputKey);
             applicationInput.setInputVal(inputVal);

http://git-wip-us.apache.org/repos/asf/airavata/blob/6d7890d4/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ApplicationOutputResource.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ApplicationOutputResource.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ApplicationOutputResource.java
index e709fb2..ea0f52b 100644
--- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ApplicationOutputResource.java
+++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ApplicationOutputResource.java
@@ -62,7 +62,9 @@ public class ApplicationOutputResource extends AbstractResource {
             em.getTransaction().begin();
             AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(APPLICATION_OUTPUT);
             generator.setParameter(AppOutputConstants.INTERFACE_ID, ids.get(AppOutputConstants.INTERFACE_ID));
-            generator.setParameter(AppOutputConstants.OUTPUT_KEY, ids.get(AppOutputConstants.OUTPUT_KEY));
+            if (ids.get(AppOutputConstants.OUTPUT_KEY) != null){
+                generator.setParameter(AppOutputConstants.OUTPUT_KEY, ids.get(AppOutputConstants.OUTPUT_KEY));
+            }
             Query q = generator.deleteQuery(em);
             q.executeUpdate();
             em.getTransaction().commit();
@@ -267,26 +269,21 @@ public class ApplicationOutputResource extends AbstractResource {
                     new AppOutput_PK(interfaceID, outputKey));
             em.close();
 
+            ApplicationOutput applicationOutput;
             em = AppCatalogJPAUtils.getEntityManager();
             em.getTransaction().begin();
-            if (existingApplicationOutput != null) {
-                existingApplicationOutput.setInterfaceID(interfaceID);
-                ApplicationInterface applicationInterface = em.find(ApplicationInterface.class, interfaceID);
-                existingApplicationOutput.setApplicationInterface(applicationInterface);
-                existingApplicationOutput.setDataType(dataType);
-                existingApplicationOutput.setOutputKey(outputKey);
-                existingApplicationOutput.setOutputVal(outputVal);
-                em.merge(existingApplicationOutput);
+            if (existingApplicationOutput == null) {
+                applicationOutput = new ApplicationOutput();
             } else {
-                ApplicationOutput applicationOutput = new ApplicationOutput();
-                applicationOutput.setInterfaceID(interfaceID);
-                ApplicationInterface applicationInterface = em.find(ApplicationInterface.class, interfaceID);
-                applicationOutput.setApplicationInterface(applicationInterface);
-                applicationOutput.setDataType(dataType);
-                applicationOutput.setOutputKey(outputKey);
-                applicationOutput.setOutputVal(outputVal);
-                em.persist(applicationOutput);
+                applicationOutput = existingApplicationOutput;
             }
+            ApplicationInterface applicationInterface = em.find(ApplicationInterface.class, interfaceID);
+            applicationOutput.setApplicationInterface(applicationInterface);
+            applicationOutput.setInterfaceID(applicationInterface.getInterfaceID());
+            applicationOutput.setDataType(dataType);
+            applicationOutput.setOutputKey(outputKey);
+            applicationOutput.setOutputVal(outputVal);
+            em.merge(applicationOutput);
             em.getTransaction().commit();
             em.close();
         } catch (Exception e) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/6d7890d4/modules/app-catalog/app-catalog-data/src/test/java/org/apache/airavata/app/catalog/test/AppInterfaceTest.java
----------------------------------------------------------------------
diff --git a/modules/app-catalog/app-catalog-data/src/test/java/org/apache/airavata/app/catalog/test/AppInterfaceTest.java b/modules/app-catalog/app-catalog-data/src/test/java/org/apache/airavata/app/catalog/test/AppInterfaceTest.java
index de31870..1a1dbd3 100644
--- a/modules/app-catalog/app-catalog-data/src/test/java/org/apache/airavata/app/catalog/test/AppInterfaceTest.java
+++ b/modules/app-catalog/app-catalog-data/src/test/java/org/apache/airavata/app/catalog/test/AppInterfaceTest.java
@@ -97,8 +97,17 @@ public class AppInterfaceTest {
             ApplicationInterfaceDescription ainterface = null;
             if (appInterface.isApplicationInterfaceExists(appID)){
                 ainterface = appInterface.getApplicationInterface(appID);
-                System.out.println("********** application name ************* : " + ainterface.getApplicationName());
-                System.out.println("********** application description ************* : " + ainterface.getApplicationDescription());
+                OutputDataObjectType output3 = createAppOutput("output3", "", DataType.STRING);
+                OutputDataObjectType output4 = createAppOutput("output4", "", DataType.STRING);
+                outputs.add(output3);
+                outputs.add(output4);
+                ainterface.setApplicationOutputs(outputs);
+                appInterface.updateApplicationInterface(appID, ainterface);
+                ApplicationInterfaceDescription updateApp = appInterface.getApplicationInterface(appID);
+                List<OutputDataObjectType> appOutputs = updateApp.getApplicationOutputs();
+                System.out.println("********** application name ************* : " + updateApp.getApplicationName());
+                System.out.println("********** application description ************* : " + updateApp.getApplicationDescription());
+                System.out.println("********** output size ************* : " + appOutputs.size());
             }
             ApplicationModule wrfModule = appInterface.getApplicationModule(wrfModuleId);
             System.out.println("********** WRF module name ************* : " + wrfModule.getAppModuleName());
@@ -170,4 +179,4 @@ public class AppInterfaceTest {
         outputDataObjectType.setType(type);
         return outputDataObjectType;
     }
-}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/6d7890d4/modules/gfac/gfac-monitor/src/main/java/org/apache/airavata/gfac/monitor/HPCMonitorID.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-monitor/src/main/java/org/apache/airavata/gfac/monitor/HPCMonitorID.java b/modules/gfac/gfac-monitor/src/main/java/org/apache/airavata/gfac/monitor/HPCMonitorID.java
index 7ba5b6b..ae463a7 100644
--- a/modules/gfac/gfac-monitor/src/main/java/org/apache/airavata/gfac/monitor/HPCMonitorID.java
+++ b/modules/gfac/gfac-monitor/src/main/java/org/apache/airavata/gfac/monitor/HPCMonitorID.java
@@ -76,7 +76,7 @@ public class HPCMonitorID extends MonitorID {
                     }
                 }
             } catch (GFacException e) {
-                e.printStackTrace();
+                logger.error("Error while getting security context", e);
             }
         }
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/6d7890d4/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/util/SSHUtils.java
----------------------------------------------------------------------
diff --git a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/util/SSHUtils.java b/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/util/SSHUtils.java
index 1fdaa1f..bef2cc7 100644
--- a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/util/SSHUtils.java
+++ b/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/util/SSHUtils.java
@@ -155,7 +155,7 @@ public class SSHUtils {
         File _lfile = new File(lFile);
 
         if (ptimestamp) {
-            command = "T " + (_lfile.lastModified() / 1000) + " 0";
+            command = "T" + (_lfile.lastModified() / 1000) + " 0";
             // The access time should be sent here,
             // but it is not accessible with JavaAPI ;-<
             command += (" " + (_lfile.lastModified() / 1000) + " 0\n");
@@ -259,7 +259,7 @@ public class SSHUtils {
         File _lfile = new File(localFile);
 
         if (ptimestamp) {
-            command = "T " + (_lfile.lastModified() / 1000) + " 0";
+            command = "T" + (_lfile.lastModified() / 1000) + " 0";
             // The access time should be sent here,
             // but it is not accessible with JavaAPI ;-<
             command += (" " + (_lfile.lastModified() / 1000) + " 0\n");