You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by im...@apache.org on 2015/01/26 06:59:02 UTC

[4/8] stratos git commit: Fixed a few issues in validation proceedures

Fixed a few issues in validation proceedures


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

Branch: refs/heads/master
Commit: fa0292b3d4b5ad02eb36834c59e5ef62c0e14144
Parents: cae97c3
Author: Shiro <sh...@wso2.com>
Authored: Fri Jan 23 20:48:01 2015 +0530
Committer: Shiro <sh...@wso2.com>
Committed: Mon Jan 26 06:20:00 2015 +0530

----------------------------------------------------------------------
 .../manager/context/StratosManagerContext.java  |  8 +--
 .../rest/endpoint/api/StratosApiV41Utils.java   | 76 ++++++++++++++------
 2 files changed, 57 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/fa0292b3/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/context/StratosManagerContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/context/StratosManagerContext.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/context/StratosManagerContext.java
index 7c6eac5..8841b46 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/context/StratosManagerContext.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/context/StratosManagerContext.java
@@ -40,8 +40,6 @@ import org.wso2.carbon.registry.core.exceptions.RegistryException;
  */
 public class StratosManagerContext implements Serializable {
 
-	
-
 	private static volatile StratosManagerContext instance;
     
     private static final String SM_CARTRIDGE_TYPE_TO_CARTIDGE_GROUPS_MAP = "SM_CARTRIDGE_TYPE_TO_CARTIDGE_GROUPS_MAP";
@@ -191,8 +189,8 @@ public class StratosManagerContext implements Serializable {
     }
     
     public boolean isCartridgeIncludedInCartridgeGroups(String cartridgeName) {
-    	if(cartridgeTypeToApplicationsMap.containsKey(cartridgeName)) {
-    		if(!cartridgeTypeToApplicationsMap.get(cartridgeName).isEmpty()) {
+    	if(cartridgeTypeToCartridgeGroupsMap.containsKey(cartridgeName)) {
+    		if(!cartridgeTypeToCartridgeGroupsMap.get(cartridgeName).isEmpty()) {
         		return true;
     		}
     		return false;
@@ -255,7 +253,7 @@ public class StratosManagerContext implements Serializable {
     	for(String cartridgeGroupName : cartridgeGroupNames) {
     		Set<String> cartridgeSubGroupNames = null;
     		if(cartridgeGroupToCartridgeSubGroupsMap.containsKey(cartridgeGroupName)) {
-    			cartridgeSubGroupNames = cartridgeTypeToCartridgeGroupsMap.get(cartridgeGroupName);
+    			cartridgeSubGroupNames = cartridgeGroupToCartridgeSubGroupsMap.get(cartridgeGroupName);
     		} else {
     			cartridgeSubGroupNames = new HashSet<String>();
     			cartridgeGroupToCartridgeSubGroupsMap.put(cartridgeSubGroupName, cartridgeSubGroupNames);

http://git-wip-us.apache.org/repos/asf/stratos/blob/fa0292b3/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java
index 19d8136..6dfc8dd 100644
--- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java
+++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java
@@ -674,7 +674,9 @@ public class StratosApiV41Utils {
             }
             
             List<String> cartridgeTypes = null;
+            String[] cartridgeNames = null;
             List<String> groupNames = null;
+            String[] cartridgeGroupNames = null;
 
             // if any cartridges are specified in the group, they should be already deployed
             if (serviceGroupDefinition.getCartridges() != null) {
@@ -698,13 +700,18 @@ public class StratosApiV41Utils {
                 }
 
                 CloudControllerServiceClient ccServiceClient = getCloudControllerServiceClient();
-
+                
+                cartridgeNames = new String[cartridgeTypes.size()];
+                int i=0;
                 for (String cartridgeType : cartridgeTypes) {
                     try {
                         if (ccServiceClient.getCartridgeInfo(cartridgeType) == null) {
                             // cartridge is not deployed, can't continue
                             log.error("invalid cartridge found in cartridge group " + cartridgeType);
                             throw new RestAPIException("No Cartridge Definition found with type " + cartridgeType);
+                        } else {
+                        	cartridgeNames[i] = cartridgeType;
+                        	i++;
                         }
                     } catch (RemoteException e) {
                         throw new RestAPIException(e);
@@ -722,8 +729,12 @@ public class StratosApiV41Utils {
 
                 List<GroupBean> groupDefinitions = serviceGroupDefinition.getGroups();
                 groupNames = new ArrayList<String>();
+                cartridgeGroupNames = new String[groupNames.size()];
+                int i=0;
                 for (GroupBean groupList : groupDefinitions) {
                     groupNames.add(groupList.getName());
+                    cartridgeGroupNames[i] = groupList.getName();
+                    i++;
                 }
 
                 Set<String> duplicates = findDuplicates(groupNames);
@@ -748,10 +759,10 @@ public class StratosApiV41Utils {
             // Add cartridge group elements to SM cache - done after service group has been added
             StratosManagerServiceClient smServiceClient = getStratosManagerServiceClient();
             if(cartridgeTypes != null) {
-            	smServiceClient.addUsedCartridgesInCartridgeGroups(serviceGroupDefinition.getName(), (String[]) cartridgeTypes.toArray());
+            	smServiceClient.addUsedCartridgesInCartridgeGroups(serviceGroupDefinition.getName(), cartridgeNames);
             }
             if(groupNames != null) {
-            	smServiceClient.addUsedCartridgeGroupsInCartridgeSubGroups(serviceGroupDefinition.getName(), (String[]) groupNames.toArray());
+            	smServiceClient.addUsedCartridgeGroupsInCartridgeSubGroups(serviceGroupDefinition.getName(), cartridgeGroupNames);
             }
             
         } catch (Exception e) {
@@ -837,6 +848,13 @@ public class StratosApiV41Utils {
             AutoscalerServiceClient asServiceClient = getAutoscalerServiceClient();
             StratosManagerServiceClient smServiceClient = getStratosManagerServiceClient();
             
+            // Check whether cartridge group exists
+            if(asServiceClient.getServiceGroup(name) == null) {
+            	String message = "Cartridge group: [group-name] " + name + " cannot be removed since it does not exist";
+                log.error(message);
+                throw new RestAPIException(message);
+            }
+            
             // Validate whether cartridge group can be removed
             if(!smServiceClient.canCartirdgeGroupBeRemoved(name)) {
             	String message = "Cannot remove cartridge group: [group-name] " + name + " since it is used in another cartridge group or an application";
@@ -856,11 +874,17 @@ public class StratosApiV41Utils {
             
             if (serviceGroup.getGroups() != null) {
             	ServiceGroup[] cartridgeGroups = serviceGroup.getGroups();
-            	Set<String> cartridgeGroupNames = new HashSet<String>();
+            	String[] cartridgeGroupNames = new String[cartridgeGroups.length];
+            	int i = 0;
             	for(ServiceGroup cartridgeGroup : cartridgeGroups) {
-            		cartridgeGroupNames.add(cartridgeGroup.getName());
+            		if(cartridgeGroup != null) {
+                		cartridgeGroupNames[i] = cartridgeGroup.getName();
+                		i++;
+            		} else {
+            			break;
+            		}
             	}
-            	smServiceClient.removeUsedCartridgeGroupsInCartridgeSubGroups(name, (String[]) cartridgeGroupNames.toArray());
+            	smServiceClient.removeUsedCartridgeGroupsInCartridgeSubGroups(name, cartridgeGroupNames);
             }
 
         } catch (Exception e) {
@@ -914,29 +938,33 @@ public class StratosApiV41Utils {
             AutoscalerServiceClient.getInstance().addApplication(applicationContext);
             
             // Add application elements to SM cache - done after application has been added
-            Set<String> cartridgeNames;
-            Set<String> cartridgeGroupNames;
+            String[] cartridgeNames;
+            String[] cartridgeGroupNames;
                         
             StratosManagerServiceClient smServiceClient = getStratosManagerServiceClient();
             
             List<CartridgeReferenceBean> cartridges = appDefinition.getComponents().getCartridges();
             if(cartridges != null) {
-            	cartridgeNames = new HashSet<String>();
+            	cartridgeNames = new String[cartridges.size()];
+            	int i=0;
             	for(CartridgeReferenceBean cartridge : cartridges) {
-            		cartridgeNames.add(cartridge.getType());
+            		cartridgeNames[i] = cartridge.getType();
+            		i++;
             	}
             	
-            	smServiceClient.addUsedCartridgesInApplications(appDefinition.getApplicationId(), (String[]) cartridgeNames.toArray());
+            	smServiceClient.addUsedCartridgesInApplications(appDefinition.getApplicationId(), cartridgeNames);
             }
             
             List<GroupReferenceBean> cartridgeGroups = appDefinition.getComponents().getGroups();
             if(cartridgeGroups != null) {
-            	cartridgeGroupNames = new HashSet<String>();
+            	cartridgeGroupNames = new String[cartridgeGroups.size()];
+            	int i=0;
             	for(GroupReferenceBean cartridgeGroup : cartridgeGroups) {
-            		cartridgeGroupNames.add(cartridgeGroup.getName());
+            		cartridgeGroupNames[i] = cartridgeGroup.getName();
+            		i++;
             	}
             	
-            	smServiceClient.addUsedCartridgeGroupsInApplications(appDefinition.getApplicationId(), (String[]) cartridgeGroupNames.toArray());
+            	smServiceClient.addUsedCartridgeGroupsInApplications(appDefinition.getApplicationId(), cartridgeGroupNames);
             }
             
         } catch (AutoscalerServiceApplicationDefinitionExceptionException e) {
@@ -1003,28 +1031,32 @@ public class StratosApiV41Utils {
         	asServiceClient.deleteApplication(applicationId);
             
             // Remove application elements in SM cache - done after deleting
-        	Set<String> cartridgeNames;
-            Set<String> cartridgeGroupNames;
+        	String[] cartridgeNames;
+            String[] cartridgeGroupNames;
             StratosManagerServiceClient smServiceClient = getStratosManagerServiceClient();
             
             List<CartridgeReferenceBean> cartridges = application.getComponents().getCartridges();
             if(cartridges != null) {
-            	cartridgeNames = new HashSet<String>();
+            	cartridgeNames = new String[cartridges.size()];
+            	int i=0;
             	for(CartridgeReferenceBean cartridge : cartridges) {
-            		cartridgeNames.add(cartridge.getType());
+            		cartridgeNames[i] = cartridge.getType();
+            		i++;
             	}
             	
-            	smServiceClient.removeUsedCartridgesInApplications(application.getApplicationId(), (String[]) cartridgeNames.toArray());
+            	smServiceClient.removeUsedCartridgesInApplications(application.getApplicationId(), cartridgeNames);
             }
             
             List<GroupReferenceBean> cartridgeGroups = application.getComponents().getGroups();
             if(cartridgeGroups != null) {
-            	cartridgeGroupNames = new HashSet<String>();
+            	cartridgeGroupNames = new String[cartridgeGroups.size()];
+            	int i=0;
             	for(GroupReferenceBean cartridgeGroup : cartridgeGroups) {
-            		cartridgeGroupNames.add(cartridgeGroup.getName());
+            		cartridgeGroupNames[i] = cartridgeGroup.getName();
+            		i++;
             	}
             	
-            	smServiceClient.removeUsedCartridgeGroupsInApplications(application.getApplicationId(), (String[]) cartridgeGroupNames.toArray());
+            	smServiceClient.removeUsedCartridgeGroupsInApplications(application.getApplicationId(), cartridgeGroupNames);
             }
             
         } catch (RemoteException e) {