From 57819943882b92e7d1335de22ed6bbb02ae241c7 Mon Sep 17 00:00:00 2001 From: Vishanth Date: Tue, 9 Feb 2016 19:34:44 +0530 Subject: [PATCH] fixing update payload parameters from cartridge issue. This closes #504 --- .../services/impl/AutoscalerServiceImpl.java | 35 ++++++++++++++----- .../util/converter/ObjectConverter.java | 7 ++-- .../kubernetes-cluster-2.json | 11 ++---- 3 files changed, 35 insertions(+), 18 deletions(-) diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java index 0943de0b1c..09110e2fcc 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java @@ -124,14 +124,7 @@ public boolean addApplication(ApplicationContext applicationContext) log.info(String.format("Adding application: [application-id] %s", applicationContext.getApplicationId())); } - ApplicationParser applicationParser = new DefaultApplicationParser(); - Application application = applicationParser.parse(applicationContext); - ApplicationHolder.persistApplication(application); - - List applicationClusterContexts = applicationParser.getApplicationClusterContexts(); - ApplicationClusterContext[] applicationClusterContextsArray = applicationClusterContexts - .toArray(new ApplicationClusterContext[applicationClusterContexts.size()]); - applicationContext.getComponents().setApplicationClusterContexts(applicationClusterContextsArray); + Application application = parseApplication(applicationContext); applicationContext.setStatus(ApplicationContext.STATUS_CREATED); AutoscalerContext.getInstance().addApplicationContext(applicationContext); @@ -146,6 +139,29 @@ public boolean addApplication(ApplicationContext applicationContext) return true; } + /** + * Parse application context, generate application cluster contexts with + * payload parameters and build the application object. + * @param applicationContext + * @return + * @throws ApplicationDefinitionException + * @throws CartridgeGroupNotFoundException + * @throws CartridgeNotFoundException + */ + private Application parseApplication(ApplicationContext applicationContext) throws ApplicationDefinitionException, + CartridgeGroupNotFoundException, CartridgeNotFoundException { + + ApplicationParser applicationParser = new DefaultApplicationParser(); + Application application = applicationParser.parse(applicationContext); + ApplicationHolder.persistApplication(application); + + List applicationClusterContexts = applicationParser.getApplicationClusterContexts(); + ApplicationClusterContext[] applicationClusterContextsArray = applicationClusterContexts + .toArray(new ApplicationClusterContext[applicationClusterContexts.size()]); + applicationContext.getComponents().setApplicationClusterContexts(applicationClusterContextsArray); + return application; + } + @Override public boolean updateApplication(ApplicationContext applicationContext) throws ApplicationDefinitionException, CartridgeGroupNotFoundException, CartridgeNotFoundException { @@ -236,6 +252,9 @@ public boolean deployApplication(String applicationId, String applicationPolicyI throw new RuntimeException("Application context not found: " + applicationId); } + // Parse application to update payload parameters + application = parseApplication(applicationContext); + // validating application policy against the application AutoscalerUtil.validateApplicationPolicyAgainstApplication(applicationId, applicationPolicyId); diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/util/converter/ObjectConverter.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/util/converter/ObjectConverter.java index d1307eb0d0..7d6ad3b684 100644 --- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/util/converter/ObjectConverter.java +++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/util/converter/ObjectConverter.java @@ -19,6 +19,7 @@ package org.apache.stratos.rest.endpoint.util.converter; +import org.apache.commons.lang.ArrayUtils; import org.apache.commons.lang.StringUtils; import org.apache.stratos.autoscaler.stub.deployment.policy.ApplicationPolicy; import org.apache.stratos.autoscaler.stub.deployment.policy.DeploymentPolicy; @@ -1567,13 +1568,15 @@ private static List convertScalingDependentsBeansToStringList( */ private static DeploymentBean convertDeploymentToDeploymentBean(String[] directories, String baseDir) { - if (baseDir == null || directories == null || directories[0] == null) { + if (baseDir == null && (directories == null || directories[0] == null)) { return null; } DeploymentBean deploymentBean = new DeploymentBean(); deploymentBean.setBaseDir(baseDir); - deploymentBean.setDir(Arrays.asList(baseDir)); + if (ArrayUtils.isNotEmpty(directories) && (directories[0] != null)) { + deploymentBean.setDir(Arrays.asList(directories)); + } return deploymentBean; } diff --git a/samples/kubernetes-clusters/kubernetes-cluster-2.json b/samples/kubernetes-clusters/kubernetes-cluster-2.json index ebc76135c5..39ba9c7cf6 100644 --- a/samples/kubernetes-clusters/kubernetes-cluster-2.json +++ b/samples/kubernetes-clusters/kubernetes-cluster-2.json @@ -7,6 +7,9 @@ "privateIPAddress": "172.17.8.101", "publicIPAddress": "172.17.8.101", "property": [ + { "name": "KUBERNETES_MASTER_PORT", + "value": "8080" + } ] }, "portRange": { @@ -21,14 +24,6 @@ "publicIPAddress": "172.17.8.102", "property": [ ] - }, - { - "hostId": "minion-2", - "hostname": "minion-2.dev.kubernetes.org", - "privateIPAddress": "172.17.8.103", - "publicIPAddress": "172.17.8.103", - "property": [ - ] } ], "property": [