You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by ni...@apache.org on 2013/12/11 15:27:40 UTC

[2/7] git commit: a new operation to set properties while subscribing

a new operation to set properties while subscribing


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

Branch: refs/heads/master
Commit: 271bb5c5e27a33635a7bfc585045e729e4f745e7
Parents: 9f2da65
Author: Nirmal Fernando <ni...@apache.org>
Authored: Wed Dec 11 19:25:12 2013 +0530
Committer: Nirmal Fernando <ni...@apache.org>
Committed: Wed Dec 11 19:56:16 2013 +0530

----------------------------------------------------------------------
 .../manager/CartridgeSubscriptionManager.java   | 127 +++++++++++++------
 .../ApplicationCartridgeSubscription.java       |   2 +
 2 files changed, 89 insertions(+), 40 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/271bb5c5/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 5cdeb06..7c30fbe 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
@@ -95,28 +95,58 @@ public class CartridgeSubscriptionManager {
             UnregisteredCartridgeException, RepositoryRequiredException, RepositoryCredentialsRequiredException,
             RepositoryTransportException, AlreadySubscribedException, InvalidRepositoryException {
 
-        //validate cartridge alias
+        return subscribeToCartridgeWithProperties(cartridgeType, cartridgeAlias, autoscalingPolicyName, 
+                                                  deploymentPolicyName, tenantDomain, tenantId, tenantAdminUsername, 
+                                                  repositoryType, repositoryURL, isPrivateRepository, repositoryUsername, 
+                                                  repositoryPassword, null);
+    }
+    
+    public CartridgeSubscription subscribeToCartridgeWithProperties(String cartridgeType, String cartridgeAlias,
+        String autoscalingPolicyName, String deploymentPolicyName, String tenantDomain,
+        int tenantId, String tenantAdminUsername, String repositoryType, String repositoryURL,
+        boolean isPrivateRepository, String repositoryUsername, String repositoryPassword, Property[] props)
+
+    throws ADCException,
+        InvalidCartridgeAliasException,
+        DuplicateCartridgeAliasException,
+        PolicyException,
+        UnregisteredCartridgeException,
+        RepositoryRequiredException,
+        RepositoryCredentialsRequiredException,
+        RepositoryTransportException,
+        AlreadySubscribedException,
+        InvalidRepositoryException {
+
+        // validate cartridge alias
         ApplicationManagementUtil.validateCartridgeAlias(cartridgeAlias, cartridgeType);
 
-        //TODO - remove, now autoscaling policy is at autoscaler. Just need to pass the name
-        /*Policy autoScalingPolicy;
-        if(autoscalingPolicyName != null && !autoscalingPolicyName.isEmpty()) {
-            autoScalingPolicy = PolicyHolder.getInstance().getPolicy(autoscalingPolicyName);
-        } else {
-            autoScalingPolicy = PolicyHolder.getInstance().getDefaultPolicy();
-        }
-
-        if(autoScalingPolicy == null) {
-            throw new PolicyException("Could not load the auto scaling policy.");
-        } */
+        // TODO - remove, now autoscaling policy is at autoscaler. Just need to pass the name
+        /*
+         * Policy autoScalingPolicy;
+         * if(autoscalingPolicyName != null && !autoscalingPolicyName.isEmpty()) {
+         * autoScalingPolicy = PolicyHolder.getInstance().getPolicy(autoscalingPolicyName);
+         * } else {
+         * autoScalingPolicy = PolicyHolder.getInstance().getDefaultPolicy();
+         * }
+         * 
+         * if(autoScalingPolicy == null) {
+         * throw new PolicyException("Could not load the auto scaling policy.");
+         * }
+         */
 
         CartridgeInfo cartridgeInfo;
         try {
-            cartridgeInfo = CloudControllerServiceClient.getServiceClient().getCartridgeInfo(cartridgeType);
+            cartridgeInfo =
+                            CloudControllerServiceClient.getServiceClient()
+                                                        .getCartridgeInfo(cartridgeType);
+            if (props != null) {
+                cartridgeInfo.setProperties(props);
+            }
 
         } catch (UnregisteredCartridgeException e) {
-            String message = cartridgeType
-                    + " is not a valid cartridgeSubscription type. Please try again with a valid cartridgeSubscription type.";
+            String message =
+                             cartridgeType +
+                                     " is not a valid cartridgeSubscription type. Please try again with a valid cartridgeSubscription type.";
             log.error(message);
             throw e;
 
@@ -128,55 +158,72 @@ public class CartridgeSubscriptionManager {
 
         Subscriber subscriber = new Subscriber(tenantAdminUsername, tenantId, tenantDomain);
 
-        CartridgeSubscription cartridgeSubscription = CartridgeSubscriptionFactory.getCartridgeSubscriptionInstance(cartridgeInfo);
-        
-        Repository repository = cartridgeSubscription.manageRepository(repositoryURL, repositoryUsername,
-                repositoryPassword, isPrivateRepository, cartridgeAlias, cartridgeInfo, tenantDomain);
-        
-        cartridgeSubscription.createSubscription(subscriber, cartridgeAlias, autoscalingPolicyName, deploymentPolicyName, repository);
-        cartridgeSubscription.setSubscriptionKey(generateSubscriptionKey()); // TODO ---- fix properly
+        CartridgeSubscription cartridgeSubscription =
+                                                      CartridgeSubscriptionFactory.getCartridgeSubscriptionInstance(cartridgeInfo);
 
-        log.info("Tenant [" + tenantId + "] with username [" + tenantAdminUsername +
-                " subscribed to " + "] Cartridge Alias " + cartridgeAlias + ", Cartridge Type: " + cartridgeType +
-                ", Repo URL: " + repositoryURL + ", Policy: " + autoscalingPolicyName);
+        Repository repository =
+                                cartridgeSubscription.manageRepository(repositoryURL,
+                                                                       repositoryUsername,
+                                                                       repositoryPassword,
+                                                                       isPrivateRepository,
+                                                                       cartridgeAlias,
+                                                                       cartridgeInfo, tenantDomain);
 
-        Payload payload = PayloadFactory.getPayloadInstance(cartridgeInfo.getProvider(), cartridgeType,
-                "/tmp/" + tenantDomain + "-" + cartridgeAlias + ".zip");
+        cartridgeSubscription.createSubscription(subscriber, cartridgeAlias, autoscalingPolicyName,
+                                                 deploymentPolicyName, repository);
+        cartridgeSubscription.setSubscriptionKey(generateSubscriptionKey()); // TODO ---- fix
+                                                                             // properly
+
+        log.info("Tenant [" + tenantId + "] with username [" + tenantAdminUsername +
+                 " 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) {
-            //populate the payload
+            // populate the payload
             payload.populatePayload(payloadArg);
             cartridgeSubscription.setPayload(payload);
         }
 
-        //get the payload parameters defined in the cartridge definition file for this cartridge type
+        // 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)) {
+            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(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
+            // if valid payload related parameters are found in the cartridge definition file, add
+            // them to the payload
             String customPayloadParamString = customPayloadParamsBuilder.toString();
-            if(!customPayloadParamString.isEmpty()) {
+            if (!customPayloadParamString.isEmpty()) {
                 payload.populatePayload(customPayloadParamString);
                 cartridgeSubscription.setPayload(payload);
             }
         }
 
-        //CartridgeInstanceCache.getCartridgeInstanceCache().
-        //        addCartridgeInstance(new CartridgeInstanceCacheKey(tenantId, cartridgeAlias), cartridgeSubscription);
+        // CartridgeInstanceCache.getCartridgeInstanceCache().
+        // addCartridgeInstance(new CartridgeInstanceCacheKey(tenantId, cartridgeAlias),
+        // cartridgeSubscription);
 
         return cartridgeSubscription;
     }

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/271bb5c5/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/ApplicationCartridgeSubscription.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/ApplicationCartridgeSubscription.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/ApplicationCartridgeSubscription.java
index b406048..ecacc37 100644
--- a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/ApplicationCartridgeSubscription.java
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/ApplicationCartridgeSubscription.java
@@ -32,6 +32,8 @@ import org.apache.stratos.cloud.controller.pojo.Properties;
 public class ApplicationCartridgeSubscription extends CartridgeSubscription {
 
 
+    private static final long serialVersionUID = 3969055979835359336L;
+
     /**
      * Constructor
      *