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 {
