You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by is...@apache.org on 2013/10/22 19:26:59 UTC

[1/2] git commit: adding support to define payload parameter name=value pairs in cartridge.xml, as properties

Updated Branches:
  refs/heads/master e56c1ed24 -> 84f159075


adding support to define payload parameter name=value pairs in cartridge.xml, as properties


Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/2cac1e43
Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/2cac1e43
Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/2cac1e43

Branch: refs/heads/master
Commit: 2cac1e438915c0df071cb7facca3035b0797f7c0
Parents: cc755b6
Author: Isuru <is...@wso2.com>
Authored: Tue Oct 22 22:56:12 2013 +0530
Committer: Isuru <is...@wso2.com>
Committed: Tue Oct 22 22:56:12 2013 +0530

----------------------------------------------------------------------
 .../manager/CartridgeSubscriptionManager.java   | 64 +++++++++++++++-----
 .../apache/stratos/adc/mgt/payload/Payload.java | 21 +++++--
 .../adc/mgt/utils/CartridgeConstants.java       |  2 +
 3 files changed, 67 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/2cac1e43/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/manager/CartridgeSubscriptionManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/manager/CartridgeSubscriptionManager.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/manager/CartridgeSubscriptionManager.java
index ec35a33..bf3c938 100644
--- a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/manager/CartridgeSubscriptionManager.java
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/manager/CartridgeSubscriptionManager.java
@@ -37,9 +37,11 @@ import org.apache.stratos.adc.mgt.subscriber.Subscriber;
 import org.apache.stratos.adc.mgt.subscription.CartridgeSubscription;
 import org.apache.stratos.adc.mgt.subscription.factory.CartridgeSubscriptionFactory;
 import org.apache.stratos.adc.mgt.utils.ApplicationManagementUtil;
+import org.apache.stratos.adc.mgt.utils.CartridgeConstants;
 import org.apache.stratos.adc.mgt.utils.PersistenceManager;
 import org.apache.stratos.adc.mgt.utils.PolicyHolder;
 import org.apache.stratos.cloud.controller.util.xsd.CartridgeInfo;
+import org.apache.stratos.cloud.controller.util.xsd.Property;
 import org.wso2.carbon.context.CarbonContext;
 
 import java.util.List;
@@ -133,17 +135,41 @@ public class CartridgeSubscriptionManager {
                 " subscribed to " + "] Cartridge Alias " + cartridgeAlias + ", Cartridge Type: " + cartridgeType +
                 ", Repo URL: " + repositoryURL + ", Policy: " + autoscalingPolicyName);
 
+        Payload payload = PayloadFactory.getPayloadInstance(cartridgeInfo.getProvider(), cartridgeType,
+                "/tmp/" + tenantDomain + "-" + cartridgeAlias + ".zip");
         PayloadArg payloadArg = cartridgeSubscription.createPayloadParameters();
-        if (payloadArg != null) {
 
-            Payload payload = PayloadFactory.getPayloadInstance(cartridgeInfo.getProvider(), cartridgeType,
-                    "/tmp/" + tenantDomain + "-" + cartridgeAlias + ".zip");
+        if (payloadArg != null) {
+            //populate the payload
             payload.populatePayload(payloadArg);
-
-            //set the payload to the cartridge subscription
             cartridgeSubscription.setPayload(payload);
         }
 
+        //get the payload parameters defined in the cartridge definition file for this cartridge type
+        if (cartridgeInfo.getProperties() != null && cartridgeInfo.getProperties().length != 0) {
+
+            StringBuilder customPayloadParamsBuilder = new StringBuilder();
+            for(Property property : cartridgeInfo.getProperties()) {
+                //check if a property is related to the payload. Currently this is done by checking if the
+                //property name starts with 'payload_parameter.' suffix. If so the payload param name will
+                //be taken as the substring from the index of '.' to the end of the property name.
+                if(property.getName().startsWith(CartridgeConstants.CUSTOM_PAYLOAD_PARAM_NAME_PREFIX)) {
+                    String payloadParamName = property.getName();
+                    customPayloadParamsBuilder.append(",");
+                    customPayloadParamsBuilder.append(payloadParamName.
+                            substring(payloadParamName.indexOf(".") + 1));
+                    customPayloadParamsBuilder.append("=");
+                    customPayloadParamsBuilder.append(property.getValue());
+                }
+            }
+            //if valid payload related parameters are found in the cartridge definition file, add them to the payload
+            String customPayloadParamString = customPayloadParamsBuilder.toString();
+            if(!customPayloadParamString.isEmpty()) {
+                payload.populatePayload(customPayloadParamString);
+                cartridgeSubscription.setPayload(payload);
+            }
+        }
+
         //CartridgeInstanceCache.getCartridgeInstanceCache().
         //        addCartridgeInstance(new CartridgeInstanceCacheKey(tenantId, cartridgeAlias), cartridgeSubscription);
 
@@ -154,21 +180,22 @@ public class CartridgeSubscriptionManager {
      * Connects / groups cartridges
      *
      * @param tenantDomain Tenant's domain
-     * @param cartridgeSubscription CartridgeSubscriptionInfo object to which the CartridgeSubscriptionInfo denoted by
-     *                          connectingCartridgeAlias will be connected to
-     * @param connectingCartridgeAlias Alias of the connecting cartridge
+     * @param cartridgeSubscription CartridgeSubscription instance to which the CartridgeSubscription denoted by
+     *                          connectingSubscriptionAlias will be connected to
+     * @param connectingSubscriptionAlias Alias of the connecting cartridge
      *
      * @throws ADCException
      * @throws NotSubscribedException
      * @throws AxisFault
      */
     public void connectCartridges (String tenantDomain, CartridgeSubscription cartridgeSubscription,
-                                   String connectingCartridgeAlias)
+                                   String connectingSubscriptionAlias)
             throws ADCException, NotSubscribedException, AxisFault {
 
         //TODO: retrieve from the cache and connect. For now, new objects are created
 
-        CartridgeSubscription connectingCartridgeSubscription = getCartridgeSubscription(tenantDomain, connectingCartridgeAlias);
+        CartridgeSubscription connectingCartridgeSubscription = getCartridgeSubscription(tenantDomain,
+                connectingSubscriptionAlias);
 
         if(cartridgeSubscription == null) {
             String errorMsg = "No cartridge subscription found in cache for tenant " + tenantDomain + ", alias " +
@@ -179,7 +206,7 @@ public class CartridgeSubscriptionManager {
 
         if(connectingCartridgeSubscription == null) {
             String errorMsg = "No cartridge subscription found in cache for tenant " + tenantDomain + ", alias " +
-                    connectingCartridgeAlias + ",  connecting aborted";
+                    connectingSubscriptionAlias + ",  connecting aborted";
             log.error(errorMsg);
             return;
         }
@@ -187,7 +214,7 @@ public class CartridgeSubscriptionManager {
         CartridgeSubscriptionConnector cartridgeSubscriptionConnector = CartridgeSubscriptionConnectorFactory.
                 getCartridgeInstanceConnector(connectingCartridgeSubscription.getType());
 
-        cartridgeSubscription.connect(connectingCartridgeAlias);
+        cartridgeSubscription.connect(connectingSubscriptionAlias);
 
         //PayloadArg payloadArg = cartridgeSubscription.createPayloadParameters();
 
@@ -204,8 +231,17 @@ public class CartridgeSubscriptionManager {
             connectionParamsBuilder.append(payloadParamEntry.getValue().toString());
         }
 
-        //add additional connection relates parameters to the payload
-        cartridgeSubscription.getPayload().populatePayload(connectionParamsBuilder.toString());
+        //add connection relates parameters to the payload
+        if(cartridgeSubscription.getPayload() != null) {
+            cartridgeSubscription.getPayload().populatePayload(connectionParamsBuilder.toString());
+        } else {
+            //no existing payload
+            Payload payload = PayloadFactory.getPayloadInstance(cartridgeSubscription.getCartridgeInfo().getProvider(),
+                    cartridgeSubscription.getType(), "/tmp/" + tenantDomain + "-" + cartridgeSubscription.getAlias() +
+                    ".zip");
+            payload.populatePayload(connectionParamsBuilder.toString());
+            cartridgeSubscription.setPayload(payload);
+        }
 
         /*
         payloadArg.setUserDefinedPayload(connectionParamsBuilder.toString());

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/2cac1e43/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/Payload.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/Payload.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/Payload.java
index 1e17c2d..addacac 100644
--- a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/Payload.java
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/Payload.java
@@ -81,9 +81,6 @@ public abstract class Payload {
         }
     }
 
-    //
-    //
-
     /**
      * Add the user defined payload String (if any). This should be of the format
      * <key_1>=<value_1>,<key_2>=<value_2>,....<key_n>=<value_n>
@@ -92,10 +89,22 @@ public abstract class Payload {
      */
     public void populatePayload (String payloadString) {
 
-        if(!payloadBuilder.toString().endsWith(",")) {
-            payloadBuilder.append(",");
+        if(payloadBuilder.toString().isEmpty()) {
+            if(payloadString.startsWith(",")) {
+                payloadBuilder.append(payloadString.substring(1));
+            }
+        } else {
+            if(!payloadBuilder.toString().endsWith(",") && !payloadString.startsWith(",")) {
+                payloadBuilder.append(",");
+                payloadBuilder.append(payloadString);
+            }
+            else if (payloadBuilder.toString().endsWith(",") && payloadString.startsWith(",")) {
+                payloadBuilder.append(payloadString.substring(1));
+            }
+            else {
+                payloadBuilder.append(payloadString);
+            }
         }
-        payloadBuilder.append(payloadString);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/2cac1e43/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/utils/CartridgeConstants.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/utils/CartridgeConstants.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/utils/CartridgeConstants.java
index 83e2d91..8c18742 100644
--- a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/utils/CartridgeConstants.java
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/utils/CartridgeConstants.java
@@ -74,6 +74,8 @@ public class CartridgeConstants {
 	public static final String INTERNAL_GIT_USERNAME = "internal.repo.username";
 	public static final String INTERNAL_GIT_PASSWORD = "internal.repo.password";
 
+    public static final String CUSTOM_PAYLOAD_PARAM_NAME_PREFIX = "payload_parameter.";
+
     public static final class DomainMappingInfo {
 		public static final String ACTUAL_HOST = "actual.host";
 		public static final String HOSTINFO = "hostinfo/";


[2/2] git commit: Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/incubator-stratos

Posted by is...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/incubator-stratos


Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/84f15907
Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/84f15907
Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/84f15907

Branch: refs/heads/master
Commit: 84f159075b1a0b70cdcacc313f7a4e0ee7093e9b
Parents: 2cac1e4 e56c1ed
Author: Isuru <is...@wso2.com>
Authored: Tue Oct 22 22:56:33 2013 +0530
Committer: Isuru <is...@wso2.com>
Committed: Tue Oct 22 22:56:33 2013 +0530

----------------------------------------------------------------------
 .../org.apache.stratos.autoscaler/pom.xml       |   1 +
 .../cloud/controller/CloudControllerClient.java |  17 ++
 .../event/AverageRequestsInFlightEvent.java     |  49 ++++++
 .../event/GradientOfRequestsInFlightEvent.java  |  49 ++++++
 ...SecondDerivativeOfRequestsInFlightEvent.java |  49 ++++++
 .../internal/AutoscalerServerComponent.java     |  24 ++-
 .../autoscaler/internal/EventSubscriber.java    | 128 --------------
 .../AverageRequestInFlightEventProcessor.java   |  79 +++++++++
 ...GradientOfRequestInFlightEventProcessor.java |  81 +++++++++
 .../processor/HealthStatEventProcessor.java     |  31 ++++
 ...rivativeOfRequestInFlightEventProcessor.java |  82 +++++++++
 .../receiver/TopicSubscriberManager.java        |  70 ++++++++
 .../health/HealthEventMessageDelegator.java     |  79 +++++++++
 .../health/HealthEventMessageReceiver.java      |  50 ++++++
 .../receiver/health/HealthEventQueue.java       |  44 +++++
 .../topology/TopologyEventMessageDelegator.java | 110 ++++++++++++
 .../topology/TopologyEventMessageReceiver.java  |  50 ++++++
 .../receiver/topology/TopologyEventQueue.java   |  44 +++++
 .../policy/InvalidPolicyException.java          |  40 +++++
 .../autoscaler/policy/PolicyManager.java        | 135 +++++++++++++++
 .../policy/deployers/PolicyDeployer.java        | 113 +++++++++++++
 .../policy/deployers/PolicyReader.java          | 169 +++++++++++++++++++
 .../policy/model/AutoscalePolicy.java           | 153 +++++++++++++++++
 .../autoscaler/policy/model/HAPolicy.java       |  67 ++++++++
 .../autoscaler/policy/model/LoadAverage.java    |  74 ++++++++
 .../autoscaler/policy/model/LoadThresholds.java | 103 +++++++++++
 .../policy/model/MemoryConsumption.java         |  75 ++++++++
 .../autoscaler/policy/model/Partition.java      | 112 ++++++++++++
 .../policy/model/RequestsInFlight.java          |  73 ++++++++
 .../autoscaler/rule/ExecutorTaskScheduler.java  |  41 +++++
 .../src/main/resources/META-INF/component.xml   |  27 +++
 .../src/main/resources/META-INF/services.xml    |  21 ---
 .../org.apache.stratos.lb.endpoint/pom.xml      |  27 +++
 .../stratos/lb/endpoint/ClusterContext.java     |  63 +++++++
 .../lb/endpoint/LoadBalancerContext.java        |  39 ++++-
 .../stratos/lb/endpoint/RequestProcessor.java   | 103 +++++++++++
 .../stratos/lb/endpoint/ServiceContext.java     |  56 ++++++
 .../lb/endpoint/algorithm/AlgorithmContext.java |  51 ++++++
 .../algorithm/LoadBalanceAlgorithm.java         |  65 +++++++
 .../algorithm/LoadBalanceAlgorithmFactory.java  |  71 ++++++++
 .../lb/endpoint/algorithm/RoundRobin.java       |  98 +++++++++++
 .../TenantAwareLoadBalanceEndpoint.java         |  89 +++++-----
 .../LoadBalanceEndpointServiceComponent.java    |  22 +++
 .../endpoint/mediators/ResponseInterceptor.java |  58 +++++++
 .../stat/LoadBalancingStatsCollector.java       | 110 ++++++++++++
 .../stat/observers/WSO2CEPStatsObserver.java    | 102 +++++++++++
 .../topology/TopologyEventMessageDelegator.java |  29 ++--
 .../stratos/lb/endpoint/util/Constants.java     |  24 +++
 .../messaging/domain/topology/Cluster.java      |  50 +++++-
 .../messaging/domain/topology/Member.java       |  35 ++--
 .../messaging/domain/topology/MemberStatus.java |   2 +-
 .../messaging/domain/topology/Service.java      |   7 +-
 .../event/topology/ClusterCreatedEvent.java     |  23 ++-
 .../event/topology/InstanceSpawnedEvent.java    |  80 +++++++++
 .../event/topology/MemberActivatedEvent.java    |  29 ++--
 .../event/topology/MemberSpawnedEvent.java      |  83 ---------
 .../event/topology/MemberStartedEvent.java      |  18 +-
 .../event/topology/MemberSuspendedEvent.java    |  18 +-
 .../event/topology/MemberTerminatedEvent.java   |  18 +-
 .../event/topology/ServiceCreatedEvent.java     |   2 +-
 .../processor/ClusterCreatedEventProcessor.java |  21 +--
 .../processor/ClusterRemovedEventProcessor.java |  18 +-
 .../CompleteTopologyEventProcessor.java         |  14 +-
 .../InstanceSpawnedEventProcessor.java          |  91 ++++++++++
 .../MemberActivatedEventProcessor.java          |  27 ++-
 .../processor/MemberStartedEventProcessor.java  |  43 +++--
 .../MemberSuspendedEventProcessor.java          |  20 +--
 .../MemberTerminatedEventProcessor.java         |  28 ++-
 .../message/processor/MessageProcessor.java     |  43 -----
 .../processor/ServiceCreatedEventProcessor.java |  22 +--
 .../processor/ServiceRemovedEventProcessor.java |  14 +-
 .../processor/TopologyMessageProcessor.java     |  43 +++++
 .../stratos/messaging/util/Constants.java       |   3 +-
 73 files changed, 3429 insertions(+), 570 deletions(-)
----------------------------------------------------------------------