Merge branch 'master' of 
https://git-wip-us.apache.org/repos/asf/incubator-stratos

Conflicts:
        
components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
        
components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/interfaces/AutoScalerServiceInterface.java
        
components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/PartitionManager.java


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

Branch: refs/heads/master
Commit: 5ec22242411418e94c39d07abddaf77d68109e1b
Parents: 527e4dc 85abff7
Author: Udara Liyanage <[email protected]>
Authored: Wed Dec 11 09:42:45 2013 -0500
Committer: Udara Liyanage <[email protected]>
Committed: Wed Dec 11 09:42:45 2013 -0500

----------------------------------------------------------------------
 .../adc/mgt/client/AutoscalerServiceClient.java |  36 +-
 .../internal/ADCManagementServerComponent.java  |  13 +
 .../adc/mgt/listener/TopologyEventListner.java  |  40 ++
 .../mgt/subscription/CartridgeSubscription.java |   3 +-
 .../SubscriptionMultiTenantBehaviour.java       |  25 +-
 .../processor/InstanceStatusProcessor.java      | 409 ++++++++++++++++
 .../event/processor/TopologyEventProcessor.java |  33 ++
 .../processor/TopologyEventProcessorChain.java  |  59 +++
 .../topology/model/TopologyClusterModel.java    | 477 +++++++++++++++++++
 .../apache/stratos/autoscaler/Constants.java    |   3 +
 .../autoscaler/NetworkPartitionContext.java     | 171 +++++++
 .../autoscaler/api/AutoScalerServiceImpl.java   |  51 +-
 .../exception/NonExistingLBException.java       |  43 ++
 .../interfaces/AutoScalerServiceInterface.java  |   5 +-
 .../autoscaler/partition/PartitionManager.java  |  74 ++-
 .../cloud/controller/iaases/AWSEC2Iaas.java     |  10 -
 .../controller/iaases/OpenstackNovaIaas.java    |  26 +-
 .../cloud/controller/pojo/Cartridge.java        |  20 +
 .../cloud/controller/pojo/CartridgeConfig.java  |  20 +
 .../cloud/controller/pojo/CartridgeInfo.java    |  10 +
 .../controller/pojo/LoadbalancerConfig.java     |  70 +++
 .../topology/TopologyEventSender.java           |   6 +-
 .../controller/util/CloudControllerUtil.java    |   8 +
 .../messaging/domain/topology/Cluster.java      |  10 +-
 .../event/topology/ClusterCreatedEvent.java     |   2 +-
 .../apache/stratos/rest/endpoint/Constants.java |   6 +-
 .../definition/CartridgeDefinitionBean.java     |   3 +
 .../cartridge/definition/LoadBalancerBean.java  |   4 +
 .../bean/util/converter/PojoConverter.java      |  12 +-
 .../rest/endpoint/services/ServiceUtils.java    | 245 +++++++++-
 .../rest/endpoint/services/StratosAdmin.java    |  48 +-
 .../src/main/resources/AutoScalerService.wsdl   | 122 ++++-
 .../main/resources/CloudControllerService.wsdl  |  21 +-
 33 files changed, 1991 insertions(+), 94 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/5ec22242/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
----------------------------------------------------------------------
diff --cc 
components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
index 40d5e66,23e3c7f..99dac4d
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
@@@ -22,9 -23,10 +23,11 @@@ import java.util.List
  
  import org.apache.commons.logging.Log;
  import org.apache.commons.logging.LogFactory;
+ import org.apache.stratos.autoscaler.NetworkPartitionContext;
  import 
org.apache.stratos.autoscaler.client.cloud.controller.CloudControllerClient;
  import org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy;
 +import org.apache.stratos.autoscaler.exception.InvalidPolicyException;
+ import org.apache.stratos.autoscaler.exception.NonExistingLBException;
  import org.apache.stratos.autoscaler.exception.PartitionValidationException;
  import org.apache.stratos.autoscaler.interfaces.AutoScalerServiceInterface;
  import org.apache.stratos.autoscaler.partition.PartitionGroup;
@@@ -39,9 -41,10 +42,10 @@@ import org.apache.stratos.cloud.control
  public class AutoScalerServiceImpl implements AutoScalerServiceInterface{
  
        private static final Log log = 
LogFactory.getLog(AutoScalerServiceImpl.class);
+       PartitionManager partitionManager = PartitionManager.getInstance();
        
        public Partition[] getAllAvailablePartitions(){
 -              return PartitionManager.getInstance().getAllPartitions();       
        
 +              return PartitionManager.getInstance().getAllPartitions();
        }
        
        public DeploymentPolicy[] getAllDeploymentPolicies(){
@@@ -97,20 -116,51 +101,49 @@@
  
        @Override
        public PartitionGroup[] getPartitionGroups(String deploymentPolicyId) { 
 -              this.getDeploymentPolicy(deploymentPolicyId).getAllPartitions();
 -              return null;
 +              return 
PolicyManager.getInstance().getDeploymentPolicy(deploymentPolicyId).getPartitionGroups();
        }
  
--      @Override
-       public Partition[] getPartitionsOfDeploymentPolicy(String depPolicy, 
String partitonGroupId) {
-               DeploymentPolicy depPol = 
PolicyManager.getInstance().getDeploymentPolicy(depPolicy);
-               if(null == depPol)
-                       return null;
-               
-               PartitionGroup partGrp = 
depPol.getPartitionGroup(partitonGroupId);
-               if(null == partGrp)
+       public Partition[] getPartitionsOfDeploymentPolicy(String 
deploymentPolicyId) {
+               DeploymentPolicy depPol = 
this.getDeploymentPolicy(deploymentPolicyId);
+               if(null == depPol) {
                        return null;
+               }
                
-               return partGrp.getPartitions();
+               return depPol.getAllPartitions();
+       }
+       
+       @Override
+     public Partition[] getPartitionsOfGroup(String deploymentPolicyId, String 
groupId) {
+         DeploymentPolicy depPol = 
this.getDeploymentPolicy(deploymentPolicyId);
+         if(null == depPol) {
+             return null;
+         }
+         
+         PartitionGroup group = depPol.getPartitionGroup(groupId);
+         
+         if(group == null) {
+             return null;
+         }
+         
+         return group.getPartitions();
+     }
+       
+       public void checkLBExistence(String clusterId) throws 
NonExistingLBException {
+         List<NetworkPartitionContext> nwPartitions = 
partitionManager.getAllNetworkPartitions();
+         boolean exist = false;
+         for (NetworkPartitionContext networkPartition : nwPartitions) {
+             if(networkPartition.isLBExist(clusterId)) {
+                 exist = true;
+                 break;
+             }
+         }
+         
+         if(!exist) {
+             String msg = "LB with [cluster id] "+clusterId+" does not exist.";
+             log.error(msg);
+             throw new NonExistingLBException(msg);
+         }
        }
  
  }

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/5ec22242/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/interfaces/AutoScalerServiceInterface.java
----------------------------------------------------------------------
diff --cc 
components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/interfaces/AutoScalerServiceInterface.java
index 49c0e9c,46d5806..c6b22a9
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/interfaces/AutoScalerServiceInterface.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/interfaces/AutoScalerServiceInterface.java
@@@ -1,7 -1,7 +1,8 @@@
  package org.apache.stratos.autoscaler.interfaces;
  
  import org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy;
 +import org.apache.stratos.autoscaler.exception.InvalidPolicyException;
+ import org.apache.stratos.autoscaler.exception.NonExistingLBException;
  import org.apache.stratos.autoscaler.exception.PartitionValidationException;
  import org.apache.stratos.autoscaler.partition.PartitionGroup;
  import org.apache.stratos.autoscaler.policy.model.AutoscalePolicy;

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/5ec22242/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/PartitionManager.java
----------------------------------------------------------------------
diff --cc 
components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/PartitionManager.java
index 63c228e,4e1aeaf..2f86704
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/PartitionManager.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/PartitionManager.java
@@@ -42,12 -48,20 +48,23 @@@ private static final Log log = LogFacto
        // Partitions against partitionID
        private static Map<String,Partition> partitionListMap = new 
HashMap<String, Partition>();
        
+       private List<NetworkPartitionContext> networkPartitions;
+       
+       /*
+        * Key - partition id
+        * Value - reference to NetworkPartition 
+        */
+       private Map<String, NetworkPartitionContext> 
partitionIdToNetworkPartition;
+       
        private static PartitionManager instance;
        
-       String partitionResourcePath = AutoScalerConstants.AUTOSCALER_RESOURCE 
++      private String partitionResourcePath = 
AutoScalerConstants.AUTOSCALER_RESOURCE 
 +                      + AutoScalerConstants.PARTITION_RESOURCE + "/";
 +      
-       private PartitionManager(){}
+       private PartitionManager(){
+           networkPartitions = new ArrayList<NetworkPartitionContext>();
+           partitionIdToNetworkPartition = new HashMap<String, 
NetworkPartitionContext>();
+       }
        
        public static PartitionManager getInstance(){
                if(null == instance)
@@@ -74,8 -86,13 +91,14 @@@
          
          try {
                this.validatePartition(partition);
-               RegistryManager.getInstance().persist(partition, resourcePath);
 -                      regManager.persist(partition, resourcePath);
 -              partitionListMap.put(partitionId, partition);   
 -              
++
++              regManager.persist(partition, resourcePath);
 +                      addPartitionToInformationModel(partition);      
++                                            
+               // register network partition
+               NetworkPartitionContext nwPartition = 
getOrAddNetworkPartition(partition);
+               this.partitionIdToNetworkPartition.put(partitionId, 
nwPartition);
+               
                } catch (RegistryException e) {
                        throw new AutoScalerException(e);
                } catch(PartitionValidationException e){
@@@ -86,13 -103,46 +109,51 @@@
                return true;
        }
        
++      
 +      public void addPartitionToInformationModel(Partition partition) {
 +              partitionListMap.put(partition.getId(), partition);
 +      }
++              
+       public NetworkPartitionContext getNetworkPartitionOfPartition(String 
partitionId) {
+           return this.partitionIdToNetworkPartition.get(partitionId);
+       }
        
+       public List<NetworkPartitionContext> getAllNetworkPartitions() {
+           return this.networkPartitions;
+       }
        
-       
-       public Partition getPartitionById(String partitionId){
+       /**
+        * TODO make {@link NetworkPartitionContext}s extensible.
+        * @param partition
+        */
+       protected NetworkPartitionContext getOrAddNetworkPartition(Partition 
partition) {
+ 
+           if(partition == null) {
+               return null;
+           }
+           String provider = partition.getProvider();
+           String region = null;
+           Properties properties = partition.getProperties();
+         if (properties != null) {
+             for (Property prop : properties.getProperties()) {
+                 if(Constants.REGION_PROPERTY.equals(prop.getName())) {
+                     region = prop.getValue();
+                     break;
+                 }
+             }
+         }
+         NetworkPartitionContext networkPar = new 
NetworkPartitionContext(provider, region);
+         if(!this.networkPartitions.contains(networkPar)){
+             this.networkPartitions.add(networkPar);
+         } else {
+             int idx = this.networkPartitions.indexOf(networkPar);
+             networkPar = this.networkPartitions.get(idx);
+         }
+         
+         return networkPar;
+     }
+ 
+     public Partition getPartitionById(String partitionId){
                if(partitionExist(partitionId))
                        return partitionListMap.get(partitionId);
                else
@@@ -105,8 -155,8 +166,7 @@@
                
        }
        
 -      public boolean validatePartition(Partition partition) throws 
PartitionValidationException{
 +      public boolean validatePartition(Partition partition) throws 
PartitionValidationException{                              
-               return true;
-               //return 
CloudControllerClient.getInstance().validatePartition(partition);
+               return 
CloudControllerClient.getInstance().validatePartition(partition);
        }
 -
  }

Reply via email to