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/14 20:07:19 UTC

[4/5] git commit: re-formatting subscribe method and setting properties correctly

re-formatting subscribe method and setting properties correctly


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

Branch: refs/heads/master
Commit: 15652b46ef426d47559398747ce72b0c591457d7
Parents: 6be7c93
Author: Nirmal Fernando <ni...@apache.org>
Authored: Sun Dec 15 00:35:11 2013 +0530
Committer: Nirmal Fernando <ni...@apache.org>
Committed: Sun Dec 15 00:35:11 2013 +0530

----------------------------------------------------------------------
 .../rest/endpoint/services/ServiceUtils.java    | 286 ++++++++++---------
 1 file changed, 145 insertions(+), 141 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/15652b46/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java
index 338a346..14b0be3 100644
--- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java
+++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java
@@ -606,15 +606,19 @@ public class ServiceUtils {
 
     static SubscriptionInfo subscribe(String cartridgeType, String alias, String autoscalingPolicy, String deploymentPolicy, String repoURL,
                                boolean privateRepo, String repoUsername, String repoPassword, String dataCartridgeType,
-                               String dataCartridgeAlias, ConfigurationContext configurationContext, String userName, String tenantDomain) throws ADCException, PolicyException, UnregisteredCartridgeException,
+                               String dataCartridgeAlias, ConfigurationContext configurationContext, String userName, String tenantDomain) 
+                                       throws ADCException, PolicyException, UnregisteredCartridgeException,
             InvalidCartridgeAliasException, DuplicateCartridgeAliasException, RepositoryRequiredException,
             AlreadySubscribedException, RepositoryCredentialsRequiredException, InvalidRepositoryException,
             RepositoryTransportException {
 
+        // LB cartridges won't go thru this method.
+
         AutoscalerServiceClient autoscalerServiceClient = getAutoscalerServiceClient();
-        CloudControllerServiceClient cloudControllerServiceClient = getCloudControllerServiceClient();
+        CloudControllerServiceClient cloudControllerServiceClient =
+                                                                    getCloudControllerServiceClient();
         CartridgeInfo cartridgeInfo;
-        
+
         try {
             cartridgeInfo = cloudControllerServiceClient.getCartridgeInfo(cartridgeType);
         } catch (Exception e) {
@@ -622,107 +626,126 @@ public class ServiceUtils {
             log.error(msg, e);
             throw new ADCException(msg, e);
         }
-        
-        boolean isLb = false;
-        
-        // analyze properties and pick up, if not a LB.
-        org.apache.stratos.cloud.controller.pojo.Property[] properties = cartridgeInfo.getProperties();
-        if (properties != null ) {
-            for (org.apache.stratos.cloud.controller.pojo.Property prop : 
-                properties) {
-
-                if (org.apache.stratos.messaging.util.Constants.IS_LOAD_BALANCER.equals(prop.getName())) {
-                    if ("true".equals(prop.getValue())) {
-                        isLb = true;
-                        if (log.isDebugEnabled()) {
-                            log.debug("This is a load balancer Cartridge definition. " +
-                                    "[Type] " + cartridgeType);
-                        }
-                    }
-                } 
 
+        List<Property> lbRefProp = new ArrayList<Property>();
+
+        // get lb config reference
+        LoadbalancerConfig lbConfig = cartridgeInfo.getLbConfig();
+
+        if (lbConfig == null || lbConfig.getProperties() == null) {
+            if (log.isDebugEnabled()) {
+                log.debug("This Service does not require a load balancer. " + "[Service Name] " +
+                          cartridgeType);
             }
-        }
-        
-        List<Property> lbRefProp = new ArrayList<Property>(); 
-        
-        if (!isLb) {
-            // if not an LB Cartridge
-            LoadbalancerConfig lbConfig = cartridgeInfo.getLbConfig();
+        } else {
 
-            if (lbConfig == null || lbConfig.getProperties() == null) {
-                if (log.isDebugEnabled()) {
-                    log.debug("This cartridge does not require a load balancer. " + "[Type] " +
-                              cartridgeType);
-                }
-            } else {
+            CartridgeInfo lbCartridgeInfo;
+            String lbCartridgeType = lbConfig.getType();
+            try {
+                // retrieve lb Cartridge info
+                lbCartridgeInfo = cloudControllerServiceClient.getCartridgeInfo(lbCartridgeType);
+            } catch (Exception e) {
+                String msg = "Cannot get cartridge info: " + cartridgeType;
+                log.error(msg, e);
+                throw new ADCException(msg, e);
+            }
 
-                CartridgeInfo lbCartridgeInfo;
-                String lbCartridgeType = lbConfig.getType();
-                try {
-                    // retrieve lb Cartridge info
-                    lbCartridgeInfo = cloudControllerServiceClient.getCartridgeInfo(lbCartridgeType);
-                } catch (Exception e) {
-                    String msg = "Cannot get cartridge info: " + cartridgeType;
-                    log.error(msg, e);
-                    throw new ADCException(msg, e);
-                }
+            Properties lbReferenceProperties = lbConfig.getProperties();
 
-                Properties lbProperties = lbConfig.getProperties();
+            Property property = new Property();
+            property.setName(org.apache.stratos.messaging.util.Constants.LOAD_BALANCER_REF);
 
-                Property property = new Property();
-                property.setName(org.apache.stratos.messaging.util.Constants.LOAD_BALANCER_REF);
-                
-                for (org.apache.stratos.cloud.controller.pojo.Property prop : lbProperties.getProperties()) {
-                    
-                    String name = prop.getName();
-                    String value = prop.getValue();
-                    
-                    // TODO make following a chain of responsibility pattern
-                    if (Constants.NO_LOAD_BALANCER.equals(name)) {
-                        if ("true".equals(value)) {
-                            if (log.isDebugEnabled()) {
-                                log.debug("This cartridge does not require a load balancer. " +
-                                          "[Type] " + cartridgeType);
-                            }
-                            property.setValue(name);
-                            lbRefProp.add(property);
-                            break;
-                        }
-                    } else if (Constants.EXISTING_LOAD_BALANCERS.equals(name)) {
-                        String clusterIdsVal = value;
+            for (org.apache.stratos.cloud.controller.pojo.Property prop : lbReferenceProperties.getProperties()) {
+
+                String name = prop.getName();
+                String value = prop.getValue();
+
+                // TODO make following a chain of responsibility pattern
+                if (Constants.NO_LOAD_BALANCER.equals(name)) {
+                    if ("true".equals(value)) {
                         if (log.isDebugEnabled()) {
-                            log.debug("This cartridge refers to existing load balancers. " +
-                                      "[Type] " + cartridgeType + "[Referenced Cluster Ids] " +
-                                      clusterIdsVal);
+                            log.debug("This cartridge does not require a load balancer. " +
+                                      "[Type] " + cartridgeType);
                         }
+                        property.setValue(name);
+                        lbRefProp.add(property);
+                        break;
+                    }
+                } else if (Constants.EXISTING_LOAD_BALANCERS.equals(name)) {
+                    String clusterIdsVal = value;
+                    if (log.isDebugEnabled()) {
+                        log.debug("This cartridge refers to existing load balancers. " + "[Type] " +
+                                  cartridgeType + "[Referenced Cluster Ids] " + clusterIdsVal);
+                    }
 
-                        String[] clusterIds = clusterIdsVal.split(",");
+                    String[] clusterIds = clusterIdsVal.split(",");
 
-                        for (String clusterId : clusterIds) {
-                            if (autoscalerServiceClient != null) {
-                                try {
-                                    autoscalerServiceClient.checkLBExistenceAgainstPolicy(clusterId, deploymentPolicy);
-                                } catch (Exception ex) {
-                                    // we don't need to throw the error here.
-                                    log.error(ex.getMessage(), ex);
-                                }
+                    for (String clusterId : clusterIds) {
+                        if (autoscalerServiceClient != null) {
+                            try {
+                                autoscalerServiceClient.checkLBExistenceAgainstPolicy(clusterId,
+                                                                                      deploymentPolicy);
+                            } catch (Exception ex) {
+                                // we don't need to throw the error here.
+                                log.error(ex.getMessage(), ex);
                             }
                         }
-                        
+                    }
+
+                    property.setValue(name);
+                    lbRefProp.add(property);
+                    break;
+
+                } else if (Constants.DEFAULT_LOAD_BALANCER.equals(name)) {
+                    if ("true".equals(value)) {
                         property.setValue(name);
+                        if (log.isDebugEnabled()) {
+                            log.debug("This cartridge uses default load balancer. " + "[Type] " +
+                                      cartridgeType);
+                        }
+                        if (autoscalerServiceClient != null) {
+                            try {
+                                // get the valid policies for lb cartridge
+                                DeploymentPolicy[] lbCartridgeDepPolicies =
+                                                                            autoscalerServiceClient.getDeploymentPolicies(lbCartridgeType);
+                                // traverse deployment policies of lb cartridge
+                                for (DeploymentPolicy policy : lbCartridgeDepPolicies) {
+                                    // check existence of the subscribed policy
+                                    if (deploymentPolicy.equals(policy.getId())) {
+
+                                        if (!autoscalerServiceClient.checkDefaultLBExistenceAgainstPolicy(deploymentPolicy)) {
+
+                                            // if lb cluster doesn't exist
+                                            String lbAlias = "lb" + new Random().nextInt();
+                                            lbCartridgeInfo.addProperties(property);
+                                            subscribeToLb(lbCartridgeType,
+                                                          lbAlias,
+                                                          lbCartridgeInfo.getDefaultAutoscalingPolicy(),
+                                                          deploymentPolicy, configurationContext,
+                                                          userName, tenantDomain,
+                                                          lbCartridgeInfo.getProperties());
+                                        }
+                                    }
+                                }
+
+                            } catch (Exception ex) {
+                                // we don't need to throw the error here.
+                                log.error(ex.getMessage(), ex);
+                            }
+                        }
+
                         lbRefProp.add(property);
                         break;
-
-                    } else if (Constants.DEFAULT_LOAD_BALANCER.equals(name)) {
+                    } else if (Constants.SERVICE_AWARE_LOAD_BALANCER.equals(name)) {
                         if ("true".equals(value)) {
                             property.setValue(name);
                             if (log.isDebugEnabled()) {
-                                log.debug("This cartridge uses default load balancer. " +
+                                log.debug("This cartridge uses a service aware load balancer. " +
                                           "[Type] " + cartridgeType);
                             }
                             if (autoscalerServiceClient != null) {
                                 try {
+
                                     // get the valid policies for lb cartridge
                                     DeploymentPolicy[] lbCartridgeDepPolicies =
                                                                                 autoscalerServiceClient.getDeploymentPolicies(lbCartridgeType);
@@ -731,15 +754,21 @@ public class ServiceUtils {
                                         // check existence of the subscribed policy
                                         if (deploymentPolicy.equals(policy.getId())) {
 
-                                            if (!autoscalerServiceClient.checkDefaultLBExistenceAgainstPolicy(deploymentPolicy)) {
+                                            if (!autoscalerServiceClient.checkServiceLBExistenceAgainstPolicy(cartridgeType,
+                                                                                                              deploymentPolicy)) {
 
                                                 // if lb cluster doesn't exist
-                                                String lbAlias = "lb" + new Random().nextInt();
+                                                String lbAlias =
+                                                                 "lb" + cartridgeType +
+                                                                         new Random().nextInt();
+                                                lbCartridgeInfo.addProperties(property);
                                                 subscribeToLb(lbCartridgeType,
-                                                          lbAlias,
-                                                          lbCartridgeInfo.getDefaultAutoscalingPolicy(),
-                                                          deploymentPolicy, configurationContext,
-                                                          userName, tenantDomain, new Property[]{property});
+                                                              lbAlias,
+                                                              lbCartridgeInfo.getDefaultAutoscalingPolicy(),
+                                                              deploymentPolicy,
+                                                              configurationContext, userName,
+                                                              tenantDomain,
+                                                              lbCartridgeInfo.getProperties());
                                             }
                                         }
                                     }
@@ -749,76 +778,48 @@ public class ServiceUtils {
                                     log.error(ex.getMessage(), ex);
                                 }
                             }
-                            
+
                             lbRefProp.add(property);
                             break;
-                        } else if (Constants.SERVICE_AWARE_LOAD_BALANCER.equals(name)) {
-                            if ("true".equals(value)) {
-                                property.setValue(name);
-                                if (log.isDebugEnabled()) {
-                                    log.debug("This cartridge uses a service aware load balancer. " +
-                                              "[Type] " + cartridgeType);
-                                }
-                                if (autoscalerServiceClient != null) {
-                                    try {
-                                        
-                                        // get the valid policies for lb cartridge
-                                        DeploymentPolicy[] lbCartridgeDepPolicies =
-                                                                                    autoscalerServiceClient.getDeploymentPolicies(lbCartridgeType);
-                                        // traverse deployment policies of lb cartridge
-                                        for (DeploymentPolicy policy : lbCartridgeDepPolicies) {
-                                            // check existence of the subscribed policy
-                                            if (deploymentPolicy.equals(policy.getId())) {
-
-                                                if (!autoscalerServiceClient.checkServiceLBExistenceAgainstPolicy(cartridgeType, deploymentPolicy)) {
-
-                                                    // if lb cluster doesn't exist
-                                                    String lbAlias = "lb" + cartridgeType + new Random().nextInt();
-                                                    subscribeToLb(lbCartridgeType,
-                                                              lbAlias,
-                                                              lbCartridgeInfo.getDefaultAutoscalingPolicy(),
-                                                              deploymentPolicy, configurationContext,
-                                                              userName, tenantDomain, new Property[]{property});
-                                                }
-                                            }
-                                        }
-
-                                    } catch (Exception ex) {
-                                        // we don't need to throw the error here.
-                                        log.error(ex.getMessage(), ex);
-                                    }
-                                }
-                                
-                                lbRefProp.add(property);
-                                break;
-                            }
                         }
                     }
                 }
             }
         }
 
-        CartridgeSubscription cartridgeSubscription = cartridgeSubsciptionManager.subscribeToCartridgeWithProperties(cartridgeType,
-                alias.trim(), autoscalingPolicy, deploymentPolicy ,tenantDomain, ApplicationManagementUtil.getTenantId(configurationContext),
-                userName, "git", repoURL, privateRepo, repoUsername, repoPassword, 
-                lbRefProp.toArray(new Property[0]));
+        CartridgeSubscription cartridgeSubscription =
+                                                      cartridgeSubsciptionManager.subscribeToCartridgeWithProperties(cartridgeType,
+                                                                                                                     alias.trim(),
+                                                                                                                     autoscalingPolicy,
+                                                                                                                     deploymentPolicy,
+                                                                                                                     tenantDomain,
+                                                                                                                     ApplicationManagementUtil.getTenantId(configurationContext),
+                                                                                                                     userName,
+                                                                                                                     "git",
+                                                                                                                     repoURL,
+                                                                                                                     privateRepo,
+                                                                                                                     repoUsername,
+                                                                                                                     repoPassword,
+                                                                                                                     lbRefProp.toArray(new Property[0]));
 
-        if(dataCartridgeAlias != null && !dataCartridgeAlias.trim().isEmpty()) {
+        if (dataCartridgeAlias != null && !dataCartridgeAlias.trim().isEmpty()) {
 
             dataCartridgeAlias = dataCartridgeAlias.trim();
 
             CartridgeSubscription connectingCartridgeSubscription = null;
             try {
-                connectingCartridgeSubscription = cartridgeSubsciptionManager.getCartridgeSubscription(tenantDomain,
-                        dataCartridgeAlias);
+                connectingCartridgeSubscription =
+                                                  cartridgeSubsciptionManager.getCartridgeSubscription(tenantDomain,
+                                                                                                       dataCartridgeAlias);
 
             } catch (NotSubscribedException e) {
                 log.error(e.getMessage(), e);
             }
             if (connectingCartridgeSubscription != null) {
                 try {
-                    cartridgeSubsciptionManager.connectCartridges(tenantDomain, cartridgeSubscription,
-                            connectingCartridgeSubscription.getAlias());
+                    cartridgeSubsciptionManager.connectCartridges(tenantDomain,
+                                                                  cartridgeSubscription,
+                                                                  connectingCartridgeSubscription.getAlias());
 
                 } catch (NotSubscribedException e) {
                     log.error(e.getMessage(), e);
@@ -828,11 +829,14 @@ public class ServiceUtils {
                 }
             } else {
                 log.error("Failed to connect. No cartridge subscription found for tenant " +
-                        ApplicationManagementUtil.getTenantId(configurationContext) + " with alias " + alias);
+                          ApplicationManagementUtil.getTenantId(configurationContext) +
+                          " with alias " + alias);
             }
         }
-
-        return cartridgeSubsciptionManager.registerCartridgeSubscription(cartridgeSubscription);
+        
+        SubscriptionInfo registerCartridgeSubscription = cartridgeSubsciptionManager.registerCartridgeSubscription(cartridgeSubscription);
+        
+        return registerCartridgeSubscription;
 
     }