You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by ud...@apache.org on 2013/12/11 05:22:03 UTC

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

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 <ud...@wso2.com>
Authored: Wed Dec 11 09:42:45 2013 -0500
Committer: Udara Liyanage <ud...@wso2.com>
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);
  	}
 -
  }