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);
}
-
}