Repository: stratos
Updated Branches:
  refs/heads/master 230f5f342 -> 3e2ad8f55


Fixing partitionToIaasProviders map in validateDeploymentPolicy() method


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

Branch: refs/heads/master
Commit: 3e2ad8f55fccf6019d18eb700ca819b433008ca5
Parents: 230f5f3
Author: Imesh Gunaratne <[email protected]>
Authored: Sun Mar 29 08:51:51 2015 +0530
Committer: Imesh Gunaratne <[email protected]>
Committed: Sun Mar 29 08:51:51 2015 +0530

----------------------------------------------------------------------
 .../context/CloudControllerContext.java         | 71 +++++++++-----------
 .../impl/CloudControllerServiceImpl.java        | 22 +++---
 2 files changed, 44 insertions(+), 49 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/3e2ad8f5/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/context/CloudControllerContext.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/context/CloudControllerContext.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/context/CloudControllerContext.java
index 928460e..ccbd763 100644
--- 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/context/CloudControllerContext.java
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/context/CloudControllerContext.java
@@ -169,7 +169,7 @@ public class CloudControllerContext implements Serializable 
{
      * Key - cartridge id (cartridge type is used as an unique identifier)
      * Value - IaasProvider
      */
-    private Map<String, List<IaasProvider>> cartridgeTypeToIaasProvider;
+    private Map<String, List<IaasProvider>> cartridgeTypeToIaasProviders;
 
     private String streamId;
     private boolean isPublisherRunning;
@@ -202,7 +202,7 @@ public class CloudControllerContext implements Serializable 
{
                
deploymentPolicyIDToDeployPolicyMap=distributedObjectProvider.getMap(CC_DEPLOYMENT_POLICY_ID_TO_DEPLOYMENT_POLICY_MAP);
                networkPartitionIDToNetworkPartitionMap = 
distributedObjectProvider.getMap(CC_NETWORK_PARTITION_ID_TO_NETWORK_PARTITION_MAP);
         partitionToIaasProviderByCartridge = 
distributedObjectProvider.getMap(CC_PARTITION_TO_IAAS_PROVIDER_BY_CARTRIDGE_MAP);
-        cartridgeTypeToIaasProvider = 
distributedObjectProvider.getMap(CC_CARTRIDGE_TYPE_TO_IAAS_PROVIDER_MAP);
+        cartridgeTypeToIaasProviders = 
distributedObjectProvider.getMap(CC_CARTRIDGE_TYPE_TO_IAAS_PROVIDER_MAP);
         // Update context from the registry
         updateContextFromRegistry();
     }
@@ -752,22 +752,22 @@ public class CloudControllerContext implements 
Serializable {
     public void addIaasProvider(String cartridgeType, String partitionId, 
IaasProvider iaasProvider) {
         Map<String, IaasProvider> partitionToIaasProvider = new 
ConcurrentHashMap<String, IaasProvider>();
         partitionToIaasProvider.put(partitionId, iaasProvider);
-        this.partitionToIaasProviderByCartridge.put(cartridgeType, 
partitionToIaasProvider);
+        partitionToIaasProviderByCartridge.put(cartridgeType, 
partitionToIaasProvider);
     }
 
     public void addIaasProviders(String cartridgeType, Map<String, 
IaasProvider> map) {
-        Map<String, IaasProvider> partitionToIaasProvider = new 
ConcurrentHashMap<String, IaasProvider>();
+        Map<String, IaasProvider> partitionToIaasProviders = new 
ConcurrentHashMap<String, IaasProvider>();
         for (Iterator<String> iterator = map.keySet().iterator(); 
iterator.hasNext(); ) {
             String key = iterator.next();
             IaasProvider value = map.get(key);
 
-            partitionToIaasProvider.put(key, value);
+            partitionToIaasProviders.put(key, value);
             if (log.isDebugEnabled()) {
                 log.debug("Partition map updated for the Cartridge: " + 
cartridgeType + ". "
-                        + "Current Partition List: " + 
partitionToIaasProvider.keySet().toString());
+                        + "Current Partition List: " + 
partitionToIaasProviders.keySet().toString());
             }
         }
-        this.partitionToIaasProviderByCartridge.put(cartridgeType, 
partitionToIaasProvider);
+        this.partitionToIaasProviderByCartridge.put(cartridgeType, 
partitionToIaasProviders);
     }
 
     public IaasProvider getIaasProviderOfPartition(String cartridgeType, 
String partitionId) {
@@ -782,55 +782,50 @@ public class CloudControllerContext implements 
Serializable {
         return this.partitionToIaasProviderByCartridge.get(cartridgeType);
     }
 
-    public Map<String, List<IaasProvider>> getCartridgeTypeToIaasProvider() {
-        return this.cartridgeTypeToIaasProvider;
+    public Map<String, List<IaasProvider>> getCartridgeTypeToIaasProviders() {
+        return this.cartridgeTypeToIaasProviders;
     }
 
-    public void setCartridgeTypeToIaasProvider(Map<String, List<IaasProvider>> 
cartridgeTypeToIaasProvider) {
-        this.cartridgeTypeToIaasProvider = cartridgeTypeToIaasProvider;
+    public void setCartridgeTypeToIaasProviders(Map<String, 
List<IaasProvider>> cartridgeTypeToIaasProviders) {
+        this.cartridgeTypeToIaasProviders = cartridgeTypeToIaasProviders;
     }
 
-    public void addIaasProvider(String cartridgeType, IaasProvider iaas) {
-        List<IaasProvider> iaasProviderList = new ArrayList<IaasProvider>();
-        if (cartridgeTypeToIaasProvider.get(cartridgeType) != null) {
-            iaasProviderList = cartridgeTypeToIaasProvider.get(cartridgeType);
+    public void addIaasProvider(String cartridgeType, IaasProvider 
iaasProvider) {
+        List<IaasProvider> iaasProviders = 
cartridgeTypeToIaasProviders.get(cartridgeType);
+        if (iaasProviders == null) {
+            iaasProviders = new ArrayList<IaasProvider>();
         }
 
-        //removing from a list using iterator
-        if (iaasProviderList != null) {
-            for (IaasProvider anIaas : iaasProviderList) {
-                if (anIaas.equals(iaas)) {
-                    int idx = iaasProviderList.indexOf(anIaas);
-                    iaasProviderList.remove(idx);
-                    iaasProviderList.add(idx, iaas);
-                    return;
-                }
+        // If exists, replace existing and return
+        for (IaasProvider anIaas : iaasProviders) {
+            if (anIaas.equals(iaasProvider)) {
+                int idx = iaasProviders.indexOf(anIaas);
+                iaasProviders.remove(idx);
+                iaasProviders.add(idx, iaasProvider);
+                return;
             }
         }
 
-        iaasProviderList.add(iaas);
-        this.cartridgeTypeToIaasProvider.put(cartridgeType, iaasProviderList);
+        // Else, add iaas provider against cartridge type
+        iaasProviders.add(iaasProvider);
+        cartridgeTypeToIaasProviders.put(cartridgeType, iaasProviders);
     }
 
     public IaasProvider getIaasProvider(String cartridgeType, String iaasType){
-        List<IaasProvider> iaasProviderList = 
cartridgeTypeToIaasProvider.get(cartridgeType);
+        List<IaasProvider> iaasProviders = 
cartridgeTypeToIaasProviders.get(cartridgeType);
 
-        if (iaasProviderList != null) {
-            for (IaasProvider iaas : iaasProviderList) {
-                if(iaas.getType().equals(iaasType)){
-                    return iaas;
+        if (iaasProviders != null) {
+            for (IaasProvider iaasProvider : iaasProviders) {
+                if(iaasProvider.getType().equals(iaasType)){
+                    return iaasProvider;
                 }
             }
         }
         return null;
     }
 
-    public List<IaasProvider> getIaases(String cartridgeType) {
-        List<IaasProvider> iaasProviderList = 
cartridgeTypeToIaasProvider.get(cartridgeType);
-
-        if (iaasProviderList != null) {
-            return iaasProviderList;
-        }
-        return  null;
+    public List<IaasProvider> getIaasProviders(String cartridgeType) {
+        List<IaasProvider> iaasProviderList = 
cartridgeTypeToIaasProviders.get(cartridgeType);
+        return iaasProviderList;
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/3e2ad8f5/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
index a939895..f8fb88b 100644
--- 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
@@ -159,7 +159,7 @@ public class CloudControllerServiceImpl implements 
CloudControllerService {
     private void copyIaasProviders(Cartridge destCartridge,
                                    Cartridge sourceCartridge) {
 
-        List<IaasProvider> newIaasProviders = 
CloudControllerContext.getInstance().getIaases(destCartridge.getType());
+        List<IaasProvider> newIaasProviders = 
CloudControllerContext.getInstance().getIaasProviders(destCartridge.getType());
 
         Map<String, IaasProvider> iaasProviderMap = 
CloudControllerContext.getInstance().getPartitionToIaasProvider(sourceCartridge.getType());
 
@@ -825,7 +825,7 @@ public class CloudControllerServiceImpl implements 
CloudControllerService {
                             lock = 
CloudControllerContext.getInstance().acquireCartridgesWriteLock();
 
                             Cartridge cartridge = 
CloudControllerContext.getInstance().getCartridge(ctxt.getCartridgeType());
-                            if (cartridge != null && 
CloudControllerContext.getInstance().getIaases(cartridge.getType()) != null && 
ctxt.getVolumes() != null) {
+                            if (cartridge != null && 
CloudControllerContext.getInstance().getIaasProviders(cartridge.getType()) != 
null && ctxt.getVolumes() != null) {
                                 for (Volume volume : ctxt.getVolumes()) {
                                     if (volume.getId() != null) {
                                         String iaasType = volume.getIaasType();
@@ -880,8 +880,7 @@ public class CloudControllerServiceImpl implements 
CloudControllerService {
                 }
             }
 
-            Map<String, IaasProvider> partitionToIaasProviders =
-                    new ConcurrentHashMap<String, IaasProvider>();
+            Map<String, IaasProvider> partitionToIaasProviders = new 
ConcurrentHashMap<String, IaasProvider>();
 
             if (log.isDebugEnabled()) {
                 log.debug("Deployment policy validation started for cartridge 
type: " + cartridgeType);
@@ -889,7 +888,7 @@ public class CloudControllerServiceImpl implements 
CloudControllerService {
 
             Cartridge cartridge = 
CloudControllerContext.getInstance().getCartridge(cartridgeType);
             if (cartridge == null) {
-                String msg = "Invalid Cartridge Type: " + cartridgeType;
+                String msg = "Cartridge not found: " + cartridgeType;
                 log.error(msg);
                 throw new InvalidCartridgeTypeException(msg);
             }
@@ -898,11 +897,14 @@ public class CloudControllerServiceImpl implements 
CloudControllerService {
             for (Partition partition : partitions) {
                 if (validatedPartitions != null && 
validatedPartitions.contains(partition.getId())) {
                     // partition cache hit
+                    String provider = partition.getProvider();
+                    IaasProvider iaasProvider = 
CloudControllerContext.getInstance()
+                            .getIaasProvider(cartridge.getType(), provider);
+                    partitionToIaasProviders.put(partition.getId(), 
iaasProvider);
                     continue;
                 }
 
-                Callable<IaasProvider> worker = new PartitionValidatorCallable(
-                        partition, cartridge);
+                Callable<IaasProvider> worker = new 
PartitionValidatorCallable(partition, cartridge);
                 Future<IaasProvider> job = CloudControllerContext.getInstance()
                         .getExecutorService().submit(worker);
                 jobList.put(partition.getId(), job);
@@ -916,10 +918,8 @@ public class CloudControllerServiceImpl implements 
CloudControllerService {
                 String partitionId = entry.getKey();
                 Future<IaasProvider> job = entry.getValue();
                 try {
-
                     // add to a temporary Map
                     IaasProvider iaasProvider = job.get();
-
                     if (iaasProvider != null) {
                         partitionToIaasProviders.put(partitionId, 
iaasProvider);
                     }
@@ -945,8 +945,8 @@ public class CloudControllerServiceImpl implements 
CloudControllerService {
             // persist data
             CloudControllerContext.getInstance().persist();
 
-            log.info("All partitions " + 
CloudControllerUtil.getPartitionIds(partitions) +
-                    " were validated successfully, against the Cartridge: " + 
cartridgeType);
+            log.info("All partitions [" + 
CloudControllerUtil.getPartitionIds(partitions) + "]" +
+                    " were validated successfully, against the cartridge: " + 
cartridgeType);
 
             return true;
         } finally {

Reply via email to