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:21:55 UTC
[1/9] git commit: Partition update in registry
Updated Branches:
refs/heads/master 85abff74d -> 5ec222424
Partition update in registry
Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/f7c9b9cb
Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/f7c9b9cb
Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/f7c9b9cb
Branch: refs/heads/master
Commit: f7c9b9cb21727143e16394ac88b291d5e156650c
Parents: ea115ab
Author: Udara Liyanage <ud...@wso2.com>
Authored: Sat Dec 7 17:05:50 2013 -0500
Committer: Udara Liyanage <ud...@wso2.com>
Committed: Sat Dec 7 17:05:50 2013 -0500
----------------------------------------------------------------------
.../autoscaler/partition/PartitionManager.java | 22 ++++++++++++++++----
.../autoscaler/registry/RegistryManager.java | 3 ++-
2 files changed, 20 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/f7c9b9cb/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/PartitionManager.java
----------------------------------------------------------------------
diff --git 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
index 52fd8f7..c86176e 100644
--- 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
@@ -24,7 +24,6 @@ import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.stratos.autoscaler.client.cloud.controller.CloudControllerClient;
import org.apache.stratos.autoscaler.exception.AutoScalerException;
import org.apache.stratos.autoscaler.exception.PartitionValidationException;
import org.apache.stratos.autoscaler.registry.RegistryManager;
@@ -44,6 +43,9 @@ private static final Log log = LogFactory.getLog(PartitionManager.class);
private static PartitionManager instance;
+ String partitionResourcePath = AutoScalerConstants.AUTOSCALER_RESOURCE
+ + AutoScalerConstants.PARTITION_RESOURCE + "/";
+
private PartitionManager(){}
public static PartitionManager getInstance(){
@@ -62,8 +64,7 @@ private static final Log log = LogFactory.getLog(PartitionManager.class);
if(this.partitionExist(partition.getId()))
throw new AutoScalerException("A parition with the ID " + partitionId + " already exist.");
- String resourcePath = AutoScalerConstants.AUTOSCALER_RESOURCE
- + AutoScalerConstants.PARTITION_RESOURCE + "/" + partition.getId();
+ String resourcePath= this.partitionResourcePath + partition.getId();
RegistryManager regManager = RegistryManager.getInstance();
@@ -81,6 +82,8 @@ private static final Log log = LogFactory.getLog(PartitionManager.class);
return true;
}
+
+
public Partition getPartitionById(String partitionId){
if(partitionExist(partitionId))
return partitionListMap.get(partitionId);
@@ -95,7 +98,18 @@ private static final Log log = LogFactory.getLog(PartitionManager.class);
}
public boolean validatePartition(Partition partition) throws PartitionValidationException{
- return CloudControllerClient.getInstance().validatePartition(partition);
+ return true;
+ //return CloudControllerClient.getInstance().validatePartition(partition);
+ }
+
+ public void updatePartition(Partition newPartition,Partition oldPartition) throws RegistryException {
+ if(!oldPartition.getId().equals(newPartition.getId()))
+ throw new AutoScalerException("Can not update.Id s of the two partitions did not match.");
+
+ oldPartition=newPartition;
+ //overwrite the registry resource.
+ RegistryManager.getInstance().persist(
+ newPartition, this.partitionResourcePath + newPartition.getId());
}
}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/f7c9b9cb/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/registry/RegistryManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/registry/RegistryManager.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/registry/RegistryManager.java
index 4322e7a..791e4da 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/registry/RegistryManager.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/registry/RegistryManager.java
@@ -56,9 +56,10 @@ public class RegistryManager {
public void persist(Object dataObj, String resourcePath) throws RegistryException {
try {
+ /*
if (registryService.resourceExists(resourcePath)) {
throw new AutoScalerException("Resource already exist in the registry: " + resourcePath);
- }
+ }*/
registryService.beginTransaction();
Resource nodeResource = registryService.newResource();
[9/9] git commit: Merge branch 'master' of
https://git-wip-us.apache.org/repos/asf/incubator-stratos
Posted by ud...@apache.org.
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);
}
-
}
[5/9] git commit: Deployment policy deploy via registry
Posted by ud...@apache.org.
Deployment policy deploy via registry
Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/7709385f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/7709385f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/7709385f
Branch: refs/heads/master
Commit: 7709385fa04727d86ca46361117ffcd4940e713c
Parents: 96ed75f
Author: Udara Liyanage <ud...@wso2.com>
Authored: Tue Dec 10 17:11:22 2013 -0500
Committer: Udara Liyanage <ud...@wso2.com>
Committed: Tue Dec 10 17:11:22 2013 -0500
----------------------------------------------------------------------
.../autoscaler/api/AutoScalerServiceImpl.java | 5 +--
.../interfaces/AutoScalerServiceInterface.java | 2 +-
.../internal/AutoscalerServerComponent.java | 44 ++++++++++++++++++--
.../autoscaler/policy/PolicyManager.java | 7 ++--
4 files changed, 47 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/7709385f/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
----------------------------------------------------------------------
diff --git 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
index 4067a6d..6ffb204 100644
--- 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
@@ -76,9 +76,8 @@ public class AutoScalerServiceImpl implements AutoScalerServiceInterface{
}
@Override
- public boolean addAutoScalingPolicy(AutoscalePolicy aspolicy) {
- // TODO Auto-generated method stub
- return false;
+ public boolean addAutoScalingPolicy(AutoscalePolicy aspolicy) throws InvalidPolicyException {
+ return PolicyManager.getInstance().deployAutoscalePolicy(aspolicy);
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/7709385f/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/interfaces/AutoScalerServiceInterface.java
----------------------------------------------------------------------
diff --git 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
index d0deb75..49c0e9c 100644
--- 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
@@ -16,7 +16,7 @@ public interface AutoScalerServiceInterface {
public boolean addDeploymentPolicy(DeploymentPolicy depPolicy) throws InvalidPolicyException;
public AutoscalePolicy[] getAllAutoScalingPolicy();
- public boolean addAutoScalingPolicy(AutoscalePolicy aspolicy);
+ public boolean addAutoScalingPolicy(AutoscalePolicy aspolicy) throws InvalidPolicyException;
public DeploymentPolicy[] getValidDeploymentPoliciesforCartridge(String cartridgeType) throws PartitionValidationException;
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/7709385f/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServerComponent.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServerComponent.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServerComponent.java
index ef872a0..c4f4ae0 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServerComponent.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServerComponent.java
@@ -23,6 +23,7 @@ import java.util.Iterator;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy;
import org.apache.stratos.autoscaler.exception.AutoScalerException;
import org.apache.stratos.autoscaler.message.receiver.health.HealthEventMessageDelegator;
import org.apache.stratos.autoscaler.message.receiver.health.HealthEventMessageReceiver;
@@ -120,9 +121,16 @@ public class AutoscalerServerComponent {
Iterator<AutoscalePolicy> asItr = asPolicies.iterator();
while (asItr.hasNext()) {
AutoscalePolicy asPolicy = asItr.next();
- PolicyManager.getInstance().addASPolicyToInformationModel(
- asPolicy);
+ PolicyManager.getInstance().addASPolicyToInformationModel(asPolicy);
}
+
+ ArrayList<DeploymentPolicy> depPolicies = this.retreiveDeploymentPolicies();
+ Iterator<DeploymentPolicy> depItr = depPolicies.iterator();
+ while (depItr.hasNext()) {
+ DeploymentPolicy depPolicy = depItr.next();
+ PolicyManager.getInstance().addDeploymentPolicyToInformationModel(depPolicy);
+ }
+
if (log.isInfoEnabled()) {
log.info("Autoscaler Server Component activated");
}
@@ -170,7 +178,7 @@ public class AutoscalerServerComponent {
return null;
}
} catch (Exception e) {
- String msg = "Unable to retrieve data from Registry. Hence, any historical data will not get reflected.";
+ String msg = "Unable to retrieve data from Registry. Hence, any historical partitions will not get reflected.";
log.warn(msg, e);
}
}
@@ -198,7 +206,7 @@ public class AutoscalerServerComponent {
return null;
}
} catch (Exception e) {
- String msg = "Unable to retrieve data from Registry. Hence, any historical data will not get reflected.";
+ String msg = "Unable to retrieve data from Registry. Hence, any historical autoscaler policies will not get reflected.";
log.warn(msg, e);
}
}
@@ -207,6 +215,34 @@ public class AutoscalerServerComponent {
return asPolicyList;
}
+ private ArrayList<DeploymentPolicy> retreiveDeploymentPolicies(){
+ ArrayList<DeploymentPolicy> depPolicyList = new ArrayList<DeploymentPolicy>();
+ String [] depPolicyResourceList = (String [])registryManager.retrieve(AutoScalerConstants.AUTOSCALER_RESOURCE + AutoScalerConstants.DEPLOYMENT_POLICY_RESOURCE);
+
+ if (depPolicyResourceList != null) {
+ for (String resourcePath : depPolicyResourceList) {
+ Object asPolicy = registryManager.retrieve(resourcePath);
+
+ if (asPolicy != null) {
+ try {
+
+ Object dataObj = Deserializer
+ .deserializeFromByteArray((byte[]) asPolicy);
+ if (dataObj instanceof DeploymentPolicy) {
+ depPolicyList.add((DeploymentPolicy) dataObj);
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ String msg = "Unable to retrieve data from Registry. Hence, any historical deployment policies will not get reflected.";
+ log.warn(msg, e);
+ }
+ }
+ }
+ }
+ return depPolicyList;
+ }
+
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/7709385f/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/PolicyManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/PolicyManager.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/PolicyManager.java
index 0084cf9..d0de31c 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/PolicyManager.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/PolicyManager.java
@@ -68,9 +68,10 @@ public class PolicyManager {
}
// Add the policy to information model and persist.
- public void deployAutoscalePolicy(AutoscalePolicy policy) throws InvalidPolicyException {
+ public boolean deployAutoscalePolicy(AutoscalePolicy policy) throws InvalidPolicyException {
this.addASPolicyToInformationModel(policy);
- this.persitASPolicy(asResourcePath+policy.getId(), policy);
+ this.persitASPolicy(asResourcePath+ policy.getId(), policy);
+ return true;
}
// Add the policy to information model and persist.
@@ -102,7 +103,7 @@ public class PolicyManager {
private void persitDeploymentPolicy(String depResourcePath, DeploymentPolicy policy){
try {
- RegistryManager.getInstance().persist(policy, asResourcePath);
+ RegistryManager.getInstance().persist(policy, depResourcePath);
} catch (RegistryException e) {
throw new AutoScalerException(e);
}
[7/9] git commit: Merge branch 'master' of
https://git-wip-us.apache.org/repos/asf/incubator-stratos
Posted by ud...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/incubator-stratos
Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/5efccf20
Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/5efccf20
Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/5efccf20
Branch: refs/heads/master
Commit: 5efccf20c637690737f107890473a7a7de092de1
Parents: e5fd231 eaf1774
Author: Udara Liyanage <ud...@wso2.com>
Authored: Tue Dec 10 18:37:49 2013 -0500
Committer: Udara Liyanage <ud...@wso2.com>
Committed: Tue Dec 10 18:37:49 2013 -0500
----------------------------------------------------------------------
.../WSO2CEPInFlightRequestPublisher.java | 13 ++--
.../extension/api/LoadBalancerStatsReader.java | 3 +-
.../TenantAwareLoadBalanceEndpoint.java | 31 +++++++--
.../balancer/mediators/ResponseInterceptor.java | 26 +++++--
...adBalancerInFlightRequestCountCollector.java | 71 +++++++++++++-------
.../WSO2CEPInFlightRequestCountObserver.java | 36 ++++++----
.../stratos/load/balancer/util/Constants.java | 3 +
.../LoadBalancerStatisticsEventBuilder.xml | 4 +-
.../AverageRequestsInflightFinder.xml | 4 +-
.../GradientOfRequestsInFlightFinder.xml | 6 +-
...SecondDerivativeOfRequestsInFlightFinder.xml | 6 +-
.../stream-manager-config.xml | 9 +--
.../haproxy/extension/HAProxyStatsReader.java | 34 +++++-----
13 files changed, 160 insertions(+), 86 deletions(-)
----------------------------------------------------------------------
[4/9] git commit: Merge branch 'registry'
Posted by ud...@apache.org.
Merge branch 'registry'
Conflicts:
components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/registry/RegistryManager.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/96ed75f1
Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/96ed75f1
Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/96ed75f1
Branch: refs/heads/master
Commit: 96ed75f14ad13f110eb9b1ae8e6fe2ad27b9da91
Parents: aebdb08 13ca853
Author: Udara Liyanage <ud...@wso2.com>
Authored: Tue Dec 10 10:33:48 2013 -0500
Committer: Udara Liyanage <ud...@wso2.com>
Committed: Tue Dec 10 14:58:35 2013 -0500
----------------------------------------------------------------------
.../autoscaler/api/AutoScalerServiceImpl.java | 12 +-
.../interfaces/AutoScalerServiceInterface.java | 3 +-
.../internal/AutoscalerServerComponent.java | 181 ++++++++++++++-----
.../autoscaler/partition/PartitionManager.java | 27 ++-
.../partition/deployers/PartitionDeployer.java | 2 +-
.../autoscaler/policy/PolicyManager.java | 117 +++++-------
.../deployers/AutoscalerPolicyDeployer.java | 7 +-
.../deployers/DeploymentPolicyDeployer.java | 6 +-
.../policy/model/AutoscalePolicy.java | 5 +-
.../autoscaler/policy/model/LoadAverage.java | 7 +-
.../autoscaler/policy/model/LoadThresholds.java | 5 +-
.../policy/model/MemoryConsumption.java | 7 +-
.../policy/model/RequestsInFlight.java | 7 +-
.../autoscaler/registry/RegistryManager.java | 21 ++-
.../autoscaler/util/AutoScalerConstants.java | 2 +
.../stratos/autoscaler/util/AutoscalerUtil.java | 2 +
.../stratos/autoscaler/util/Deserializer.java | 96 ++++++++++
17 files changed, 356 insertions(+), 151 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/96ed75f1/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 584a724,ca47d52..4067a6d
--- 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
@@@ -24,17 -24,17 +24,14 @@@ import org.apache.commons.logging.Log
import org.apache.commons.logging.LogFactory;
import org.apache.stratos.autoscaler.client.cloud.controller.CloudControllerClient;
import org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy;
--import org.apache.stratos.autoscaler.exception.AutoScalerException;
++import org.apache.stratos.autoscaler.exception.InvalidPolicyException;
import org.apache.stratos.autoscaler.exception.PartitionValidationException;
import org.apache.stratos.autoscaler.interfaces.AutoScalerServiceInterface;
import org.apache.stratos.autoscaler.partition.PartitionGroup;
import org.apache.stratos.autoscaler.partition.PartitionManager;
import org.apache.stratos.autoscaler.policy.PolicyManager;
import org.apache.stratos.autoscaler.policy.model.AutoscalePolicy;
--import org.apache.stratos.autoscaler.registry.RegistryManager;
--import org.apache.stratos.autoscaler.util.AutoScalerConstants;
import org.apache.stratos.cloud.controller.deployment.partition.Partition;
--import org.wso2.carbon.registry.core.exceptions.RegistryException;
/**
* Auto Scaler Service API is responsible getting Partitions and Policies.
@@@ -74,9 -74,9 +71,8 @@@ public class AutoScalerServiceImpl impl
}
@Override
-- public boolean addDeploymentPolicy(DeploymentPolicy depPolicy) {
-- // TODO Auto-generated method stub
-- return false;
++ public boolean addDeploymentPolicy(DeploymentPolicy depPolicy) throws InvalidPolicyException {
++ return PolicyManager.getInstance().deployDeploymentscalePolicy(depPolicy);
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/96ed75f1/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 0bf7a86,0bf7a86..d0deb75
--- 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,6 -1,6 +1,7 @@@
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.PartitionValidationException;
import org.apache.stratos.autoscaler.partition.PartitionGroup;
import org.apache.stratos.autoscaler.policy.model.AutoscalePolicy;
@@@ -12,7 -12,7 +13,7 @@@ public interface AutoScalerServiceInter
public boolean addPartition(Partition partition);
public DeploymentPolicy[] getAllDeploymentPolicies();
-- public boolean addDeploymentPolicy(DeploymentPolicy depPolicy);
++ public boolean addDeploymentPolicy(DeploymentPolicy depPolicy) throws InvalidPolicyException;
public AutoscalePolicy[] getAllAutoScalingPolicy();
public boolean addAutoScalingPolicy(AutoscalePolicy aspolicy);
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/96ed75f1/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServerComponent.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServerComponent.java
index 2d05f4e,40cd83a..ef872a0
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServerComponent.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServerComponent.java
@@@ -18,34 -18,46 +18,45 @@@
*/
package org.apache.stratos.autoscaler.internal;
+ import java.util.ArrayList;
+ import java.util.Iterator;
+
-import org.apache.commons.collections.IterableMap;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
++import org.apache.stratos.autoscaler.exception.AutoScalerException;
import org.apache.stratos.autoscaler.message.receiver.health.HealthEventMessageDelegator;
import org.apache.stratos.autoscaler.message.receiver.health.HealthEventMessageReceiver;
+ import org.apache.stratos.autoscaler.partition.PartitionManager;
+ import org.apache.stratos.autoscaler.policy.PolicyManager;
+ import org.apache.stratos.autoscaler.policy.model.AutoscalePolicy;
+ import org.apache.stratos.autoscaler.registry.RegistryManager;
import org.apache.stratos.autoscaler.rule.ExecutorTaskScheduler;
import org.apache.stratos.autoscaler.topology.AutoscalerTopologyReceiver;
+ import org.apache.stratos.autoscaler.util.AutoScalerConstants;
+ import org.apache.stratos.autoscaler.util.Deserializer;
import org.apache.stratos.autoscaler.util.ServiceReferenceHolder;
+ import org.apache.stratos.cloud.controller.deployment.partition.Partition;
import org.apache.stratos.messaging.broker.subscribe.TopicSubscriber;
import org.apache.stratos.messaging.util.Constants;
-import org.drools.lang.DRLExpressions.type_return;
import org.osgi.service.component.ComponentContext;
import org.wso2.carbon.registry.api.RegistryException;
import org.wso2.carbon.registry.core.service.RegistryService;
/**
-- * @scr.component name=
-- * "org.apache.stratos.autoscaler.internal.AutoscalerServerComponent"
-- * immediate="true"
-- *
-- * @scr.reference name="registry.service"
-- * interface=
-- * "org.wso2.carbon.registry.core.service.RegistryService"
-- * cardinality="1..1" policy="dynamic" bind="setRegistryService"
-- * unbind="unsetRegistryService"
-- */
++* @scr.component name=org.apache.stratos.autoscaler.internal.AutoscalerServerComponent"
++* immediate="true"
++*
++* @scr.reference name="registry.service"
++* interface=
++* "org.wso2.carbon.registry.core.service.RegistryService"
++* cardinality="1..1" policy="dynamic" bind="setRegistryService"
++* unbind="unsetRegistryService"
++*/
public class AutoscalerServerComponent {
private static final Log log = LogFactory.getLog(AutoscalerServerComponent.class);
++ private RegistryManager registryManager;
protected void activate(ComponentContext componentContext) throws Exception {
@@@ -62,39 -74,55 +73,62 @@@
// Thread tropologyDelegatorThread = new Thread(tropologyEventMessageDelegator);
// tropologyDelegatorThread.start();
-- Thread th = new Thread(new AutoscalerTopologyReceiver());
-- th.start();
-- if (log.isDebugEnabled()) {
-- log.debug("Topology message processor thread started");
-- }
--
-- TopicSubscriber healthStatTopicSubscriber = new TopicSubscriber(Constants.HEALTH_STAT_TOPIC);
-- healthStatTopicSubscriber.setMessageListener(new HealthEventMessageReceiver());
-- Thread healthStatTopicSubscriberThread = new Thread(healthStatTopicSubscriber);
-- healthStatTopicSubscriberThread.start();
-- if (log.isDebugEnabled()) {
-- log.debug("Health Stat event message receiver thread started");
-- }
--
-- HealthEventMessageDelegator healthEventMessageDelegator = new HealthEventMessageDelegator();
-- Thread healthDelegatorThread = new Thread(healthEventMessageDelegator);
-- healthDelegatorThread.start();
--
-- if (log.isDebugEnabled()) {
-- log.debug("Health message processor thread started");
-- }
--
-- // Start scheduler for running rules
-- ExecutorTaskScheduler executor = new ExecutorTaskScheduler();
-- Thread executorThread = new Thread(executor);
-- executorThread.start();
-- if(log.isDebugEnabled()) {
-- log.debug("Rules executor thread started");
-- }
-
- if(log.isInfoEnabled()) {
- log.info("Autoscaler Server Component activated");
- }
+
- // Adding the registry stored partitions to the information model.
- ArrayList<Partition> partitions = this.retreivePartitions();
- Iterator<Partition> it = partitions.iterator();
- while(it.hasNext()){
- Partition par = it.next();
- PartitionManager.getInstance().addPartitionToInformationModel(par);
- }
+
+ // Adding the registry stored AS policies to the information model.
- ArrayList<AutoscalePolicy> asPolicies = this.retreiveASPolicies();
- Iterator<AutoscalePolicy> asItr = asPolicies.iterator();
- while(asItr.hasNext()){
- AutoscalePolicy asPolicy = asItr.next();
- PolicyManager.getInstance().addASPolicyToInformationModel(asPolicy);
- }
+
- if(log.isInfoEnabled()) {
- log.info("Autoscaler Server Component activated");
- }
++ try {
++ Thread th = new Thread(new AutoscalerTopologyReceiver());
++ th.start();
++ if (log.isDebugEnabled()) {
++ log.debug("Topology message processor thread started");
++ }
++ TopicSubscriber healthStatTopicSubscriber = new TopicSubscriber(
++ Constants.HEALTH_STAT_TOPIC);
++ healthStatTopicSubscriber
++ .setMessageListener(new HealthEventMessageReceiver());
++ Thread healthStatTopicSubscriberThread = new Thread(
++ healthStatTopicSubscriber);
++ healthStatTopicSubscriberThread.start();
++ if (log.isDebugEnabled()) {
++ log.debug("Health Stat event message receiver thread started");
++ }
++ HealthEventMessageDelegator healthEventMessageDelegator = new HealthEventMessageDelegator();
++ Thread healthDelegatorThread = new Thread(
++ healthEventMessageDelegator);
++ healthDelegatorThread.start();
++ if (log.isDebugEnabled()) {
++ log.debug("Health message processor thread started");
++ }
++ // Start scheduler for running rules
++ ExecutorTaskScheduler executor = new ExecutorTaskScheduler();
++ Thread executorThread = new Thread(executor);
++ executorThread.start();
++ if (log.isDebugEnabled()) {
++ log.debug("Rules executor thread started");
++ }
++ this.registryManager = RegistryManager.getInstance();
++ // Adding the registry stored partitions to the information model.
++ ArrayList<Partition> partitions = this.retreivePartitions();
++ Iterator<Partition> it = partitions.iterator();
++ while (it.hasNext()) {
++ Partition par = it.next();
++ PartitionManager.getInstance().addPartitionToInformationModel(
++ par);
++ }
++ ArrayList<AutoscalePolicy> asPolicies = this.retreiveASPolicies();
++ Iterator<AutoscalePolicy> asItr = asPolicies.iterator();
++ while (asItr.hasNext()) {
++ AutoscalePolicy asPolicy = asItr.next();
++ PolicyManager.getInstance().addASPolicyToInformationModel(
++ asPolicy);
++ }
++ if (log.isInfoEnabled()) {
++ log.info("Autoscaler Server Component activated");
++ }
++ } catch (Throwable e) {
++ log.error("Error in Activating the AS component " + e.getStackTrace());
++ }
}
protected void setRegistryService(RegistryService registryService) {
@@@ -106,7 -134,7 +140,7 @@@
} catch (RegistryException e) {
String msg = "Failed when retrieving Governance System Registry.";
log.error(msg, e);
-- //throw new CloudControllerException(msg, e);
++ throw new AutoScalerException(msg, e);
}
}
@@@ -116,4 -144,59 +150,63 @@@
}
ServiceReferenceHolder.getInstance().setRegistry(null);
}
+
+ private ArrayList<Partition> retreivePartitions(){
+ ArrayList<Partition> partitionList = new ArrayList<Partition>();
- String [] partitionsResourceList = (String [])RegistryManager.getInstance().retrieve(AutoScalerConstants.AUTOSCALER_RESOURCE + AutoScalerConstants.PARTITION_RESOURCE);
++ String [] partitionsResourceList = (String [])registryManager.retrieve(AutoScalerConstants.AUTOSCALER_RESOURCE + AutoScalerConstants.PARTITION_RESOURCE);
+
- for(String resourcePath : partitionsResourceList){
- Object partition = RegistryManager.getInstance().retrieve(resourcePath);
-
- if (partition != null) {
- try {
-
- Object dataObj = Deserializer
- .deserializeFromByteArray((byte[]) partition);
- if(dataObj instanceof Partition) {
- partitionList.add( (Partition) dataObj);
- } else {
- return null;
- }
- } catch (Exception e) {
- String msg = "Unable to retrieve data from Registry. Hence, any historical data will not get reflected.";
- log.warn(msg, e);
- }
- }
- }
- return partitionList;
++ if (partitionsResourceList != null) {
++ for (String resourcePath : partitionsResourceList) {
++ Object partition = registryManager.retrieve(resourcePath);
++
++ if (partition != null) {
++ try {
++
++ Object dataObj = Deserializer
++ .deserializeFromByteArray((byte[]) partition);
++ if (dataObj instanceof Partition) {
++ partitionList.add((Partition) dataObj);
++ } else {
++ return null;
++ }
++ } catch (Exception e) {
++ String msg = "Unable to retrieve data from Registry. Hence, any historical data will not get reflected.";
++ log.warn(msg, e);
++ }
++ }
++ }
++ }
++ return partitionList;
+ }
+
+ private ArrayList<AutoscalePolicy> retreiveASPolicies(){
+ ArrayList<AutoscalePolicy> asPolicyList = new ArrayList<AutoscalePolicy>();
- String [] partitionsResourceList = (String [])RegistryManager.getInstance().retrieve(AutoScalerConstants.AUTOSCALER_RESOURCE + AutoScalerConstants.AS_POLICY_RESOURCE);
++ String [] partitionsResourceList = (String [])registryManager.retrieve(AutoScalerConstants.AUTOSCALER_RESOURCE + AutoScalerConstants.AS_POLICY_RESOURCE);
+
- for(String resourcePath : partitionsResourceList){
- Object asPolicy = RegistryManager.getInstance().retrieve(resourcePath);
-
- if (asPolicy != null) {
- try {
-
- Object dataObj = Deserializer
- .deserializeFromByteArray((byte[]) asPolicy);
- if(dataObj instanceof AutoscalePolicy) {
- asPolicyList.add( (AutoscalePolicy) dataObj);
- } else {
- return null;
- }
- } catch (Exception e) {
- String msg = "Unable to retrieve data from Registry. Hence, any historical data will not get reflected.";
- log.warn(msg, e);
- }
- }
- }
- return asPolicyList;
++ if (partitionsResourceList != null) {
++ for (String resourcePath : partitionsResourceList) {
++ Object asPolicy = registryManager.retrieve(resourcePath);
++
++ if (asPolicy != null) {
++ try {
++
++ Object dataObj = Deserializer
++ .deserializeFromByteArray((byte[]) asPolicy);
++ if (dataObj instanceof AutoscalePolicy) {
++ asPolicyList.add((AutoscalePolicy) dataObj);
++ } else {
++ return null;
++ }
++ } catch (Exception e) {
++ String msg = "Unable to retrieve data from Registry. Hence, any historical data will not get reflected.";
++ log.warn(msg, e);
++ }
++ }
++ }
++ }
++ return asPolicyList;
+ }
+
+
+
}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/96ed75f1/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 52fd8f7,5ace9d5..63c228e
--- 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
@@@ -69,8 -74,8 +74,8 @@@ private static final Log log = LogFacto
try {
this.validatePartition(partition);
-- regManager.persist(partition, resourcePath);
-- partitionListMap.put(partitionId, partition);
++ RegistryManager.getInstance().persist(partition, resourcePath);
++ addPartitionToInformationModel(partition);
} catch (RegistryException e) {
throw new AutoScalerException(e);
} catch(PartitionValidationException e){
@@@ -94,8 -105,7 +105,8 @@@
}
- public boolean validatePartition(Partition partition) throws PartitionValidationException{
- return CloudControllerClient.getInstance().validatePartition(partition);
+ public boolean validatePartition(Partition partition) throws PartitionValidationException{
- return CloudControllerClient.getInstance().validatePartition(partition);
++ return true;
++ //return CloudControllerClient.getInstance().validatePartition(partition);
}
-
}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/96ed75f1/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/PolicyManager.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/PolicyManager.java
index 4ddeaf5,d8a82c9..0084cf9
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/PolicyManager.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/PolicyManager.java
@@@ -39,12 -43,12 +43,13 @@@ import org.wso2.carbon.registry.core.ex
public class PolicyManager {
private static final Log log = LogFactory.getLog(PolicyManager.class);
+
+ private static final String asResourcePath = AutoScalerConstants.AUTOSCALER_RESOURCE+ AutoScalerConstants.AS_POLICY_RESOURCE + "/";
++ private static final String deploymentPolicyResourcePath = AutoScalerConstants.AUTOSCALER_RESOURCE+ AutoScalerConstants.DEPLOYMENT_POLICY_RESOURCE + "/";
private static Map<String,AutoscalePolicy> autoscalePolicyListMap = new HashMap<String, AutoscalePolicy>();
- private static Map<File,String> autoscalePolicyfileNameMap = new HashMap<File, String>();
private static Map<String,DeploymentPolicy> deploymentPolicyListMap = new HashMap<String, DeploymentPolicy>();
- private static Map<File,String> deploymentPolicyfileNameMap = new HashMap<File, String>();
private static PolicyManager instance = null;
@@@ -52,49 -56,43 +57,57 @@@
}
public static PolicyManager getInstance() {
- if (instance == null) {
- instance = new PolicyManager ();
+ if (instance == null) {
+ synchronized (PolicyManager.class){
+ if (instance == null) {
+ instance = new PolicyManager();
+ }
}
- return instance;
+ }
+ return instance;
}
-- /**
-- * Appends the specified policy
-- * @param policyFile
-- * @param policy
-- * @throws InvalidPolicyException
-- */
- public void addAutoscalePolicy(File policyFile,AutoscalePolicy policy) throws InvalidPolicyException {
- if(autoscalePolicyfileNameMap.containsKey(policyFile)){
- removeAutoscalePolicy(autoscalePolicyfileNameMap.get(policyFile));
- autoscalePolicyfileNameMap.remove(policyFile);
- } else{
- autoscalePolicyfileNameMap.put(policyFile, policy.getId());
- }
- if (!autoscalePolicyListMap.containsKey(policy.getId())) {
- public void deployAutoscalePolicy(AutoscalePolicy policy) throws InvalidPolicyException {
- this.persitASPolicy(asResourcePath+policy.getId(), policy);
++ // Add the policy to information model and persist.
++ public void deployAutoscalePolicy(AutoscalePolicy policy) throws InvalidPolicyException {
+ this.addASPolicyToInformationModel(policy);
++ this.persitASPolicy(asResourcePath+policy.getId(), policy);
+ }
+
++ // Add the policy to information model and persist.
++ public boolean deployDeploymentscalePolicy(DeploymentPolicy policy) throws InvalidPolicyException {
++ this.addDeploymentPolicyToInformationModel(policy);
++ this.persitDeploymentPolicy(deploymentPolicyResourcePath+ policy.getId(), policy);
++ return true;
++ }
++
+ public void addASPolicyToInformationModel(AutoscalePolicy asPolicy) throws InvalidPolicyException{
+ if (!autoscalePolicyListMap.containsKey(asPolicy.getId())) {
if(log.isDebugEnabled()){
- log.debug("Adding policy :" + policy.getId());
- }
- autoscalePolicyListMap.put(policy.getId(), policy);
+ log.debug("Adding policy :" + asPolicy.getId());
+ }
+ autoscalePolicyListMap.put(asPolicy.getId(), asPolicy);
} else {
- throw new InvalidPolicyException("Specified policy [" + policy.getId()
+ throw new InvalidPolicyException("Specified policy [" + asPolicy.getId()
+ "] already exists");
}
}
- /**
- * Appends the specified policy
- * @param policy
- * @throws InvalidPolicyException
- */
- public void addAutoscalePolicy(AutoscalePolicy policy) throws InvalidPolicyException {
- addAutoscalePolicy(new File(policy.getId().concat(".xml")), policy);
+ private void persitASPolicy(String asResourcePath, AutoscalePolicy policy){
+ try {
+ RegistryManager.getInstance().persist(policy, asResourcePath);
+ } catch (RegistryException e) {
+ throw new AutoScalerException(e);
+ }
+ }
+
++ private void persitDeploymentPolicy(String depResourcePath, DeploymentPolicy policy){
++ try {
++ RegistryManager.getInstance().persist(policy, asResourcePath);
++ } catch (RegistryException e) {
++ throw new AutoScalerException(e);
++ }
+ }
+
/**
* Removes the specified policy
* @param policy
@@@ -140,19 -126,13 +141,8 @@@
return autoscalePolicyListMap.get(id);
}
-- /**
-- * Appends the specified policy
-- * @param policyFile
-- * @param policy
-- * @throws InvalidPolicyException
-- */
- public void addDeploymentPolicy(File policyFile,DeploymentPolicy policy) throws InvalidPolicyException {
- if(deploymentPolicyfileNameMap.containsKey(policyFile)){
- removeDeploymentPolicy(deploymentPolicyfileNameMap.get(policyFile));
- deploymentPolicyfileNameMap.remove(policyFile);
- } else{
- deploymentPolicyfileNameMap.put(policyFile, policy.getId());
- }
- public void addDeploymentPolicy(DeploymentPolicy policy) throws InvalidPolicyException {
++ // Add the deployment policy to As in memmory information model. Does not persist.
++ public void addDeploymentPolicyToInformationModel(DeploymentPolicy policy) throws InvalidPolicyException {
if (!deploymentPolicyListMap.containsKey(policy.getId())) {
if(log.isDebugEnabled()){
log.debug("Adding policy :" + policy.getId());
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/96ed75f1/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/deployers/DeploymentPolicyDeployer.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/deployers/DeploymentPolicyDeployer.java
index d56c4c0,0d1ac36..1a1a00a
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/deployers/DeploymentPolicyDeployer.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/deployers/DeploymentPolicyDeployer.java
@@@ -78,7 -77,7 +77,7 @@@ public class DeploymentPolicyDeployer e
DeploymentPolicyReader reader = new DeploymentPolicyReader(policyFile);
DeploymentPolicy policy = reader.read();
- PolicyManager.getInstance().addDeploymentPolicy(policyFile,policy);
- PolicyManager.getInstance().addDeploymentPolicy(policy);
++ PolicyManager.getInstance().addDeploymentPolicyToInformationModel(policy);
log.info("Successfully deployed the policy specified at "
+ deploymentFileData.getAbsolutePath());
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/96ed75f1/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/registry/RegistryManager.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/registry/RegistryManager.java
index 1aa1820,b5ce6be..5be5fd4
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/registry/RegistryManager.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/registry/RegistryManager.java
@@@ -79,4 -81,22 +81,21 @@@ public class RegistryManager
}
}
+
+ public Object retrieve(String resourcePath) {
-
+ try {
+ Resource resource = registryService.get(resourcePath);
+
+ return resource.getContent();
+
+ } catch (ResourceNotFoundException ignore) {
+ // this means, we've never persisted info in registry
+ return null;
+ } catch (RegistryException e) {
+ String msg = "Failed to retrieve data from registry.";
+ log.error(msg, e);
+ throw new AutoScalerException(msg, e);
+ }
+
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/96ed75f1/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoScalerConstants.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoScalerConstants.java
index 462f39f,1a777e5..3530cc3
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoScalerConstants.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoScalerConstants.java
@@@ -35,5 -35,6 +35,7 @@@ public final class AutoScalerConstants
*/
public static final String AUTOSCALER_RESOURCE = "/autoscaler";
public static final String PARTITION_RESOURCE = "/partitions";
+ public static final String AS_POLICY_RESOURCE = "/policies/autoscalingPolicies";
++ public static final String DEPLOYMENT_POLICY_RESOURCE = "/policies/deploymentPolicies";
}
[8/9] git commit: Refinement to the AS services
Posted by ud...@apache.org.
Refinement to the AS services
Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/527e4dc8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/527e4dc8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/527e4dc8
Branch: refs/heads/master
Commit: 527e4dc8268b88fe0d7d6b65fb416e78bdf46948
Parents: 5efccf2
Author: Udara Liyanage <ud...@wso2.com>
Authored: Tue Dec 10 20:21:10 2013 -0500
Committer: Udara Liyanage <ud...@wso2.com>
Committed: Tue Dec 10 20:21:10 2013 -0500
----------------------------------------------------------------------
.../autoscaler/api/AutoScalerServiceImpl.java | 27 +++++---------------
.../deployment/policy/DeploymentPolicy.java | 22 +++++-----------
.../autoscaler/policy/PolicyManager.java | 6 ++++-
3 files changed, 18 insertions(+), 37 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/527e4dc8/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
----------------------------------------------------------------------
diff --git 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
index 6ffb204..40d5e66 100644
--- 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
@@ -41,7 +41,7 @@ public class AutoScalerServiceImpl implements AutoScalerServiceInterface{
private static final Log log = LogFactory.getLog(AutoScalerServiceImpl.class);
public Partition[] getAllAvailablePartitions(){
- return PartitionManager.getInstance().getAllPartitions();
+ return PartitionManager.getInstance().getAllPartitions();
}
public DeploymentPolicy[] getAllDeploymentPolicies(){
@@ -82,42 +82,27 @@ public class AutoScalerServiceImpl implements AutoScalerServiceInterface{
@Override
public Partition getPartition(String partitionId) {
- for(Partition par: this.getAllAvailablePartitions()){
- if(par.getId().equals(partitionId)){
- return par;
- }
- }
- return null;
+ return PartitionManager.getInstance().getPartitionById(partitionId);
}
@Override
public DeploymentPolicy getDeploymentPolicy(String deploymentPolicyId) {
- for(DeploymentPolicy depPol : this.getAllDeploymentPolicies()){
- if(depPol.getId().equals(deploymentPolicyId)){
- return depPol;
- }
- }
- return null;
+ return PolicyManager.getInstance().getDeploymentPolicy(deploymentPolicyId);
}
@Override
public AutoscalePolicy getAutoscalingPolicy(String autoscalingPolicyId) {
- for(AutoscalePolicy asPol : this.getAllAutoScalingPolicy()){
- if(asPol.getId().equals(autoscalingPolicyId))
- return asPol;
- }
- return null;
+ return PolicyManager.getInstance().getAutoscalePolicy(autoscalingPolicyId);
}
@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 = this.getDeploymentPolicy(depPolicy);
+ DeploymentPolicy depPol = PolicyManager.getInstance().getDeploymentPolicy(depPolicy);
if(null == depPol)
return null;
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/527e4dc8/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/deployment/policy/DeploymentPolicy.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/deployment/policy/DeploymentPolicy.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/deployment/policy/DeploymentPolicy.java
index c955fff..e8b3478 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/deployment/policy/DeploymentPolicy.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/deployment/policy/DeploymentPolicy.java
@@ -36,7 +36,6 @@ public class DeploymentPolicy implements Serializable{
private static final long serialVersionUID = 5675507196284400099L;
private String id;
private PartitionGroup[] partitionGroups;
- private Partition[] allPartitions;
/**
* Gets the value of the id property.
@@ -62,27 +61,20 @@ public class DeploymentPolicy implements Serializable{
this.id = value;
}
- @SuppressWarnings("unchecked")
public void setPartitionGroups(PartitionGroup[] groups) {
- ArrayList<Partition> partitionslist = new ArrayList<Partition>();
this.partitionGroups = groups;
- /*
- if(allPartitions == null) {
- allPartitions = new ArrayList<Partition>();
- }
- */
- for (PartitionGroup partitionGroup : groups) {
+ }
+
+ @SuppressWarnings("unchecked")
+ public Partition[] getAllPartitions() {
+ ArrayList<Partition> partitionslist = new ArrayList<Partition>();
+ for (PartitionGroup partitionGroup : this.getPartitionGroups()) {
Partition[] partitions = partitionGroup.getPartitions();
if(partitions != null) {
partitionslist.addAll(Arrays.asList(partitions));
}
}
-
- this.allPartitions = partitionslist.toArray(new Partition[0]);
- }
-
- public Partition[] getAllPartitions() {
- return allPartitions;
+ return partitionslist.toArray(new Partition[0]);
}
public Partition getPartitionById(String id){
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/527e4dc8/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/PolicyManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/PolicyManager.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/PolicyManager.java
index d0de31c..c7d4605 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/PolicyManager.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/PolicyManager.java
@@ -71,13 +71,17 @@ public class PolicyManager {
public boolean deployAutoscalePolicy(AutoscalePolicy policy) throws InvalidPolicyException {
this.addASPolicyToInformationModel(policy);
this.persitASPolicy(asResourcePath+ policy.getId(), policy);
+
+ log.info("AutoScaling policy :" + policy.getId() + " is deployed successfully.");
return true;
}
// Add the policy to information model and persist.
public boolean deployDeploymentscalePolicy(DeploymentPolicy policy) throws InvalidPolicyException {
this.addDeploymentPolicyToInformationModel(policy);
- this.persitDeploymentPolicy(deploymentPolicyResourcePath+ policy.getId(), policy);
+ this.persitDeploymentPolicy(deploymentPolicyResourcePath+ policy.getId(), policy);
+
+ log.info("Deployment policy :" + policy.getId() + " is deployed successfully.");
return true;
}
[3/9] git commit: Retreive partitions/policies from registry at
startup AS refacter, etc
Posted by ud...@apache.org.
Retreive partitions/policies from registry at startup
AS refacter, etc
Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/13ca853a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/13ca853a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/13ca853a
Branch: refs/heads/master
Commit: 13ca853af2c686b8a9bffc6a7ce9d70713f4c445
Parents: 976e555
Author: Udara Liyanage <ud...@wso2.com>
Authored: Tue Dec 10 10:29:10 2013 -0500
Committer: Udara Liyanage <ud...@wso2.com>
Committed: Tue Dec 10 10:29:10 2013 -0500
----------------------------------------------------------------------
.../autoscaler/api/AutoScalerServiceImpl.java | 2 +-
.../internal/AutoscalerServerComponent.java | 85 ++++++++++++++++-
.../autoscaler/partition/PartitionManager.java | 26 ++----
.../partition/deployers/PartitionDeployer.java | 2 +-
.../autoscaler/policy/PolicyManager.java | 78 +++-------------
.../deployers/AutoscalerPolicyDeployer.java | 7 +-
.../deployers/DeploymentPolicyDeployer.java | 6 +-
.../autoscaler/registry/RegistryManager.java | 21 ++++-
.../stratos/autoscaler/util/AutoscalerUtil.java | 3 -
.../stratos/autoscaler/util/Deserializer.java | 96 ++++++++++++++++++++
10 files changed, 231 insertions(+), 95 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/13ca853a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
----------------------------------------------------------------------
diff --git 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
index 584a724..ca47d52 100644
--- 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
@@ -70,7 +70,7 @@ public class AutoScalerServiceImpl implements AutoScalerServiceInterface{
@Override
public boolean addPartition(Partition partition) {
- return PartitionManager.getInstance().addPartition(partition);
+ return PartitionManager.getInstance().deployNewPartitoion(partition);
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/13ca853a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServerComponent.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServerComponent.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServerComponent.java
index 2d05f4e..40cd83a 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServerComponent.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServerComponent.java
@@ -18,15 +18,27 @@
*/
package org.apache.stratos.autoscaler.internal;
+import java.util.ArrayList;
+import java.util.Iterator;
+
+import org.apache.commons.collections.IterableMap;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.stratos.autoscaler.message.receiver.health.HealthEventMessageDelegator;
import org.apache.stratos.autoscaler.message.receiver.health.HealthEventMessageReceiver;
+import org.apache.stratos.autoscaler.partition.PartitionManager;
+import org.apache.stratos.autoscaler.policy.PolicyManager;
+import org.apache.stratos.autoscaler.policy.model.AutoscalePolicy;
+import org.apache.stratos.autoscaler.registry.RegistryManager;
import org.apache.stratos.autoscaler.rule.ExecutorTaskScheduler;
import org.apache.stratos.autoscaler.topology.AutoscalerTopologyReceiver;
+import org.apache.stratos.autoscaler.util.AutoScalerConstants;
+import org.apache.stratos.autoscaler.util.Deserializer;
import org.apache.stratos.autoscaler.util.ServiceReferenceHolder;
+import org.apache.stratos.cloud.controller.deployment.partition.Partition;
import org.apache.stratos.messaging.broker.subscribe.TopicSubscriber;
import org.apache.stratos.messaging.util.Constants;
+import org.drools.lang.DRLExpressions.type_return;
import org.osgi.service.component.ComponentContext;
import org.wso2.carbon.registry.api.RegistryException;
import org.wso2.carbon.registry.core.service.RegistryService;
@@ -91,7 +103,23 @@ public class AutoscalerServerComponent {
if(log.isDebugEnabled()) {
log.debug("Rules executor thread started");
}
-
+
+ // Adding the registry stored partitions to the information model.
+ ArrayList<Partition> partitions = this.retreivePartitions();
+ Iterator<Partition> it = partitions.iterator();
+ while(it.hasNext()){
+ Partition par = it.next();
+ PartitionManager.getInstance().addPartitionToInformationModel(par);
+ }
+
+ // Adding the registry stored AS policies to the information model.
+ ArrayList<AutoscalePolicy> asPolicies = this.retreiveASPolicies();
+ Iterator<AutoscalePolicy> asItr = asPolicies.iterator();
+ while(asItr.hasNext()){
+ AutoscalePolicy asPolicy = asItr.next();
+ PolicyManager.getInstance().addASPolicyToInformationModel(asPolicy);
+ }
+
if(log.isInfoEnabled()) {
log.info("Autoscaler Server Component activated");
}
@@ -116,4 +144,59 @@ public class AutoscalerServerComponent {
}
ServiceReferenceHolder.getInstance().setRegistry(null);
}
+
+ private ArrayList<Partition> retreivePartitions(){
+ ArrayList<Partition> partitionList = new ArrayList<Partition>();
+ String [] partitionsResourceList = (String [])RegistryManager.getInstance().retrieve(AutoScalerConstants.AUTOSCALER_RESOURCE + AutoScalerConstants.PARTITION_RESOURCE);
+
+ for(String resourcePath : partitionsResourceList){
+ Object partition = RegistryManager.getInstance().retrieve(resourcePath);
+
+ if (partition != null) {
+ try {
+
+ Object dataObj = Deserializer
+ .deserializeFromByteArray((byte[]) partition);
+ if(dataObj instanceof Partition) {
+ partitionList.add( (Partition) dataObj);
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ String msg = "Unable to retrieve data from Registry. Hence, any historical data will not get reflected.";
+ log.warn(msg, e);
+ }
+ }
+ }
+ return partitionList;
+ }
+
+ private ArrayList<AutoscalePolicy> retreiveASPolicies(){
+ ArrayList<AutoscalePolicy> asPolicyList = new ArrayList<AutoscalePolicy>();
+ String [] partitionsResourceList = (String [])RegistryManager.getInstance().retrieve(AutoScalerConstants.AUTOSCALER_RESOURCE + AutoScalerConstants.AS_POLICY_RESOURCE);
+
+ for(String resourcePath : partitionsResourceList){
+ Object asPolicy = RegistryManager.getInstance().retrieve(resourcePath);
+
+ if (asPolicy != null) {
+ try {
+
+ Object dataObj = Deserializer
+ .deserializeFromByteArray((byte[]) asPolicy);
+ if(dataObj instanceof AutoscalePolicy) {
+ asPolicyList.add( (AutoscalePolicy) dataObj);
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ String msg = "Unable to retrieve data from Registry. Hence, any historical data will not get reflected.";
+ log.warn(msg, e);
+ }
+ }
+ }
+ return asPolicyList;
+ }
+
+
+
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/13ca853a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/PartitionManager.java
----------------------------------------------------------------------
diff --git 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
index 51a10e1..5ace9d5 100644
--- 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
@@ -60,7 +60,10 @@ private static final Log log = LogFactory.getLog(PartitionManager.class);
return partitionListMap.containsKey(partitionId);
}
- public boolean addPartition( Partition partition) throws AutoScalerException{
+ /*
+ * Deploy a new partition to Auto Scaler.
+ */
+ public boolean deployNewPartitoion( Partition partition) throws AutoScalerException{
String partitionId = partition.getId();
if(this.partitionExist(partition.getId()))
throw new AutoScalerException("A parition with the ID " + partitionId + " already exist.");
@@ -83,6 +86,10 @@ private static final Log log = LogFactory.getLog(PartitionManager.class);
return true;
}
+ public void addPartitionToInformationModel(Partition partition) {
+ partitionListMap.put(partition.getId(), partition);
+ }
+
public Partition getPartitionById(String partitionId){
@@ -98,22 +105,7 @@ private static final Log log = LogFactory.getLog(PartitionManager.class);
}
- public boolean validatePartition(Partition partition) throws PartitionValidationException{
+ public boolean validatePartition(Partition partition) throws PartitionValidationException{
return CloudControllerClient.getInstance().validatePartition(partition);
}
-
- public void updatePartition(Partition newPartition,Partition oldPartition){
- if(!oldPartition.getId().equals(newPartition.getId()))
- throw new AutoScalerException("Can not update.Id s of the two partitions did not match.");
-
- oldPartition=newPartition;
- //overwrite the registry resource.
- try {
- RegistryManager.getInstance().persist(
- newPartition, this.partitionResourcePath + newPartition.getId());
- } catch (RegistryException e) {
- throw new AutoScalerException(e);
- }
- }
-
}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/13ca853a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/deployers/PartitionDeployer.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/deployers/PartitionDeployer.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/deployers/PartitionDeployer.java
index 840f227..216f5d6 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/deployers/PartitionDeployer.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/deployers/PartitionDeployer.java
@@ -84,7 +84,7 @@ public class PartitionDeployer extends AbstractDeployer {
while (it.hasNext()) {
Partition partition = it.next();
try {
- PartitionManager.getInstance().addPartition(partition);
+ PartitionManager.getInstance().deployNewPartitoion(partition);
} catch (Exception e) {
String msg =
"Invalid partition: " + partition.getId() + " in file: " +
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/13ca853a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/PolicyManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/PolicyManager.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/PolicyManager.java
index 65d7e59..d8a82c9 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/PolicyManager.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/PolicyManager.java
@@ -47,10 +47,8 @@ public class PolicyManager {
private static final String asResourcePath = AutoScalerConstants.AUTOSCALER_RESOURCE+ AutoScalerConstants.AS_POLICY_RESOURCE + "/";
private static Map<String,AutoscalePolicy> autoscalePolicyListMap = new HashMap<String, AutoscalePolicy>();
- private static Map<File,String> autoscalePolicyfileNameMap = new HashMap<File, String>();
private static Map<String,DeploymentPolicy> deploymentPolicyListMap = new HashMap<String, DeploymentPolicy>();
- private static Map<File,String> deploymentPolicyfileNameMap = new HashMap<File, String>();
private static PolicyManager instance = null;
@@ -70,21 +68,19 @@ public class PolicyManager {
* @param policy
* @throws InvalidPolicyException
*/
- public void addAutoscalePolicy(File policyFile,AutoscalePolicy policy) throws InvalidPolicyException {
- if(autoscalePolicyfileNameMap.containsKey(policyFile)){
- removeAutoscalePolicy(autoscalePolicyfileNameMap.get(policyFile));
- autoscalePolicyfileNameMap.remove(policyFile);
- } else{
- autoscalePolicyfileNameMap.put(policyFile, policy.getId());
- }
- if (!autoscalePolicyListMap.containsKey(policy.getId())) {
+ public void deployAutoscalePolicy(AutoscalePolicy policy) throws InvalidPolicyException {
+ this.persitASPolicy(asResourcePath+policy.getId(), policy);
+ this.addASPolicyToInformationModel(policy);
+ }
+
+ public void addASPolicyToInformationModel(AutoscalePolicy asPolicy) throws InvalidPolicyException{
+ if (!autoscalePolicyListMap.containsKey(asPolicy.getId())) {
if(log.isDebugEnabled()){
- log.debug("Adding policy :" + policy.getId());
- }
- autoscalePolicyListMap.put(policy.getId(), policy);
- this.persitASPolicy(asResourcePath+policy.getId(), policy);
+ log.debug("Adding policy :" + asPolicy.getId());
+ }
+ autoscalePolicyListMap.put(asPolicy.getId(), asPolicy);
} else {
- throw new InvalidPolicyException("Specified policy [" + policy.getId()
+ throw new InvalidPolicyException("Specified policy [" + asPolicy.getId()
+ "] already exists");
}
}
@@ -96,15 +92,6 @@ public class PolicyManager {
throw new AutoScalerException(e);
}
}
-
- /**
- * Appends the specified policy
- * @param policy
- * @throws InvalidPolicyException
- */
- public void addAutoscalePolicy(AutoscalePolicy policy) throws InvalidPolicyException {
- addAutoscalePolicy(new File(policy.getId().concat(".xml")), policy);
- }
/**
* Removes the specified policy
@@ -123,18 +110,6 @@ public class PolicyManager {
}
/**
- * Removes the specified policy
- * @param policyFile
- * @throws InvalidPolicyException
- */
- public void removeAutoscalePolicy(File policyFile) throws InvalidPolicyException {
- if(autoscalePolicyfileNameMap.containsKey(policyFile)){
- removeAutoscalePolicy(autoscalePolicyfileNameMap.get(policyFile));
- autoscalePolicyfileNameMap.remove(policyFile);
- }
- }
-
- /**
* Returns a List of the Autoscale policies contained in this manager.
* @return
*/
@@ -157,13 +132,7 @@ public class PolicyManager {
* @param policy
* @throws InvalidPolicyException
*/
- public void addDeploymentPolicy(File policyFile,DeploymentPolicy policy) throws InvalidPolicyException {
- if(deploymentPolicyfileNameMap.containsKey(policyFile)){
- removeDeploymentPolicy(deploymentPolicyfileNameMap.get(policyFile));
- deploymentPolicyfileNameMap.remove(policyFile);
- } else{
- deploymentPolicyfileNameMap.put(policyFile, policy.getId());
- }
+ public void addDeploymentPolicy(DeploymentPolicy policy) throws InvalidPolicyException {
if (!deploymentPolicyListMap.containsKey(policy.getId())) {
if(log.isDebugEnabled()){
log.debug("Adding policy :" + policy.getId());
@@ -174,16 +143,7 @@ public class PolicyManager {
+ "] already exists");
}
}
-
- /**
- * Appends the specified policy
- * @param policy
- * @throws InvalidPolicyException
- */
- public void addDeploymentPolicy(DeploymentPolicy policy) throws InvalidPolicyException {
- addDeploymentPolicy(new File(policy.getId().concat(".xml")), policy);
- }
-
+
/**
* Removes the specified policy
* @param policy
@@ -201,18 +161,6 @@ public class PolicyManager {
}
/**
- * Removes the specified policy
- * @param policyFile
- * @throws InvalidPolicyException
- */
- public void removeDeploymentPolicy(File policyFile) throws InvalidPolicyException {
- if(deploymentPolicyfileNameMap.containsKey(policyFile)){
- removeDeploymentPolicy(deploymentPolicyfileNameMap.get(policyFile));
- deploymentPolicyfileNameMap.remove(policyFile);
- }
- }
-
- /**
* Returns a List of the Deployment policies contained in this manager.
* @return
*/
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/13ca853a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/deployers/AutoscalerPolicyDeployer.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/deployers/AutoscalerPolicyDeployer.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/deployers/AutoscalerPolicyDeployer.java
index 141e95b..861dab8 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/deployers/AutoscalerPolicyDeployer.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/deployers/AutoscalerPolicyDeployer.java
@@ -78,7 +78,7 @@ public class AutoscalerPolicyDeployer extends AbstractDeployer {
AutoscalerPolicyReader reader = new AutoscalerPolicyReader(policyFile);
AutoscalePolicy policy = reader.read();
- PolicyManager.getInstance().addAutoscalePolicy(policyFile,policy);
+ PolicyManager.getInstance().deployAutoscalePolicy(policy);
log.info("Successfully deployed the policy specified at "
+ deploymentFileData.getAbsolutePath());
@@ -95,7 +95,8 @@ public class AutoscalerPolicyDeployer extends AbstractDeployer {
@Override
public void undeploy(String fileName) throws DeploymentException {
- File policyFile = new File(fileName);
+ /*
+
String policyName = policyFile.getName().replaceAll("." + fileExt + "$", "");
try {
PolicyManager.getInstance().removeAutoscalePolicy(policyFile);
@@ -104,7 +105,7 @@ public class AutoscalerPolicyDeployer extends AbstractDeployer {
log.error("unable to remove policy " + policyName , e);
throw new DeploymentException("unable to remove policy " + policyName ,e);
}
-
+ */
}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/13ca853a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/deployers/DeploymentPolicyDeployer.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/deployers/DeploymentPolicyDeployer.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/deployers/DeploymentPolicyDeployer.java
index d56c4c0..0d1ac36 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/deployers/DeploymentPolicyDeployer.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/deployers/DeploymentPolicyDeployer.java
@@ -28,7 +28,6 @@ import org.apache.axis2.deployment.repository.util.DeploymentFileData;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy;
-import org.apache.stratos.autoscaler.exception.InvalidPolicyException;
import org.apache.stratos.autoscaler.policy.PolicyManager;
/**
@@ -78,7 +77,7 @@ public class DeploymentPolicyDeployer extends AbstractDeployer {
DeploymentPolicyReader reader = new DeploymentPolicyReader(policyFile);
DeploymentPolicy policy = reader.read();
- PolicyManager.getInstance().addDeploymentPolicy(policyFile,policy);
+ PolicyManager.getInstance().addDeploymentPolicy(policy);
log.info("Successfully deployed the policy specified at "
+ deploymentFileData.getAbsolutePath());
@@ -95,6 +94,7 @@ public class DeploymentPolicyDeployer extends AbstractDeployer {
@Override
public void undeploy(String fileName) throws DeploymentException {
+ /*
File policyFile = new File(fileName);
String policyName = policyFile.getName().replaceAll("." + fileExt + "$", "");
try {
@@ -104,7 +104,7 @@ public class DeploymentPolicyDeployer extends AbstractDeployer {
log.error("unable to remove policy " + policyName , e);
throw new DeploymentException("unable to remove policy " + policyName ,e);
}
-
+ */
}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/13ca853a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/registry/RegistryManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/registry/RegistryManager.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/registry/RegistryManager.java
index 791e4da..b5ce6be 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/registry/RegistryManager.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/registry/RegistryManager.java
@@ -5,6 +5,7 @@ import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.registry.core.Registry;
import org.wso2.carbon.registry.core.Resource;
import org.wso2.carbon.registry.core.exceptions.RegistryException;
+import org.wso2.carbon.registry.core.exceptions.ResourceNotFoundException;
import org.apache.stratos.autoscaler.exception.AutoScalerException;
import org.apache.stratos.autoscaler.util.AutoScalerConstants;
import org.apache.stratos.autoscaler.util.ServiceReferenceHolder;
@@ -73,11 +74,29 @@ public class RegistryManager {
}
} catch (Exception e) {
- String msg = "Failed to persist the cloud controller data in registry.";
+ String msg = "Failed to persist the data in registry.";
registryService.rollbackTransaction();
log.error(msg, e);
throw new AutoScalerException(msg, e);
}
}
+
+ public Object retrieve(String resourcePath) {
+
+ try {
+ Resource resource = registryService.get(resourcePath);
+
+ return resource.getContent();
+
+ } catch (ResourceNotFoundException ignore) {
+ // this means, we've never persisted info in registry
+ return null;
+ } catch (RegistryException e) {
+ String msg = "Failed to retrieve data from registry.";
+ log.error(msg, e);
+ throw new AutoScalerException(msg, e);
+ }
+
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/13ca853a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
index 4428336..28527f2 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
@@ -163,9 +163,6 @@ public class AutoscalerUtil {
if (!destPartition.isPropertiesSpecified()) {
destPartition.setProperties(srcPartition.getProperties());
}
-
- // update the partitions with the extra properties in the deployment policy.
- PartitionManager.getInstance().updatePartition(destPartition, srcPartition);
}
public static Properties getProperties(final OMElement elt) {
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/13ca853a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/Deserializer.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/Deserializer.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/Deserializer.java
new file mode 100644
index 0000000..5c97143
--- /dev/null
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/Deserializer.java
@@ -0,0 +1,96 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.stratos.autoscaler.util;
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectInputStream;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public class Deserializer {
+
+ private static final Log log = LogFactory.getLog(Deserializer.class);
+
+ /**
+ * We deserialize only if the path to the serialized object file is exists.
+ * @param filePath path to the serialized object file
+ * @return the object obtained after deserialization or null if file isn't valid.
+ * @throws Exception
+ */
+ public static Object deserialize(String filePath) throws Exception {
+
+ ObjectInputStream objIn = null;
+ Object obj = null;
+
+ if(!new File(filePath).isFile()){
+ return obj;
+ }
+
+ try {
+
+ objIn = new ObjectInputStream(new FileInputStream(filePath));
+ obj = objIn.readObject();
+
+ } catch (IOException e) {
+ log.error("Failed to deserialize the file at "+filePath , e);
+ throw e;
+
+ } catch (ClassNotFoundException e) {
+ log.error("Failed to deserialize the file at "+filePath , e);
+ throw e;
+
+ } finally {
+ if (objIn != null) {
+ objIn.close();
+ }
+ }
+
+ return obj;
+
+ }
+
+ /**
+ * Deserialize a byte array and retrieve the object.
+ * @param bytes bytes to be deserialized
+ * @return the deserialized {@link Object}
+ * @throws Exception if the deserialization is failed.
+ */
+ public static Object deserializeFromByteArray(byte[] bytes) throws Exception {
+
+ ByteArrayInputStream bis = new ByteArrayInputStream(bytes);
+ ObjectInput in = null;
+ try {
+ in = new ObjectInputStream(bis);
+ Object o = in.readObject();
+
+ return o;
+
+ } finally {
+ bis.close();
+ if (in != null) {
+ in.close();
+ }
+ }
+ }
+
+}
[6/9] git commit: Merge branch 'master' of
https://git-wip-us.apache.org/repos/asf/incubator-stratos
Posted by ud...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/incubator-stratos
Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/e5fd231f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/e5fd231f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/e5fd231f
Branch: refs/heads/master
Commit: e5fd231f552cc20cdfc58fce318a10dd266240c2
Parents: 7709385 de73990
Author: Udara Liyanage <ud...@wso2.com>
Authored: Tue Dec 10 17:12:43 2013 -0500
Committer: Udara Liyanage <ud...@wso2.com>
Committed: Tue Dec 10 17:12:43 2013 -0500
----------------------------------------------------------------------
.../adc/mgt/client/AutoscalerServiceClient.java | 4 ++--
.../endpoint/bean/util/converter/PojoConverter.java | 14 +++++++-------
.../stratos/rest/endpoint/services/ServiceUtils.java | 2 +-
.../pom.xml | 8 ++++++--
4 files changed, 16 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
[2/9] git commit: Registry based deployment for Auto scaler partitions
Posted by ud...@apache.org.
Registry based deployment for Auto scaler partitions
Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/976e555b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/976e555b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/976e555b
Branch: refs/heads/master
Commit: 976e555b5e9d5c8edd0a6967c982ac2ffb90821e
Parents: f7c9b9c
Author: Udara Liyanage <ud...@wso2.com>
Authored: Sat Dec 7 22:00:12 2013 -0500
Committer: Udara Liyanage <ud...@wso2.com>
Committed: Sat Dec 7 22:22:49 2013 -0500
----------------------------------------------------------------------
.../autoscaler/partition/PartitionManager.java | 16 ++++++++++------
.../stratos/autoscaler/policy/PolicyManager.java | 15 +++++++++++++++
.../autoscaler/policy/model/AutoscalePolicy.java | 5 ++++-
.../autoscaler/policy/model/LoadAverage.java | 7 +++++--
.../autoscaler/policy/model/LoadThresholds.java | 5 ++++-
.../autoscaler/policy/model/MemoryConsumption.java | 7 +++++--
.../autoscaler/policy/model/RequestsInFlight.java | 7 +++++--
.../autoscaler/util/AutoScalerConstants.java | 1 +
.../stratos/autoscaler/util/AutoscalerUtil.java | 5 +++++
9 files changed, 54 insertions(+), 14 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/976e555b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/PartitionManager.java
----------------------------------------------------------------------
diff --git 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
index c86176e..51a10e1 100644
--- 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
@@ -24,6 +24,7 @@ import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.autoscaler.client.cloud.controller.CloudControllerClient;
import org.apache.stratos.autoscaler.exception.AutoScalerException;
import org.apache.stratos.autoscaler.exception.PartitionValidationException;
import org.apache.stratos.autoscaler.registry.RegistryManager;
@@ -97,19 +98,22 @@ private static final Log log = LogFactory.getLog(PartitionManager.class);
}
- public boolean validatePartition(Partition partition) throws PartitionValidationException{
- return true;
- //return CloudControllerClient.getInstance().validatePartition(partition);
+ public boolean validatePartition(Partition partition) throws PartitionValidationException{
+ return CloudControllerClient.getInstance().validatePartition(partition);
}
- public void updatePartition(Partition newPartition,Partition oldPartition) throws RegistryException {
+ public void updatePartition(Partition newPartition,Partition oldPartition){
if(!oldPartition.getId().equals(newPartition.getId()))
throw new AutoScalerException("Can not update.Id s of the two partitions did not match.");
oldPartition=newPartition;
//overwrite the registry resource.
- RegistryManager.getInstance().persist(
- newPartition, this.partitionResourcePath + newPartition.getId());
+ try {
+ RegistryManager.getInstance().persist(
+ newPartition, this.partitionResourcePath + newPartition.getId());
+ } catch (RegistryException e) {
+ throw new AutoScalerException(e);
+ }
}
}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/976e555b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/PolicyManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/PolicyManager.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/PolicyManager.java
index f2ab9ae..65d7e59 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/PolicyManager.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/PolicyManager.java
@@ -29,8 +29,12 @@ import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy;
+import org.apache.stratos.autoscaler.exception.AutoScalerException;
import org.apache.stratos.autoscaler.exception.InvalidPolicyException;
import org.apache.stratos.autoscaler.policy.model.AutoscalePolicy;
+import org.apache.stratos.autoscaler.registry.RegistryManager;
+import org.apache.stratos.autoscaler.util.AutoScalerConstants;
+import org.wso2.carbon.registry.core.exceptions.RegistryException;
/**
*
@@ -39,6 +43,8 @@ import org.apache.stratos.autoscaler.policy.model.AutoscalePolicy;
public class PolicyManager {
private static final Log log = LogFactory.getLog(PolicyManager.class);
+
+ private static final String asResourcePath = AutoScalerConstants.AUTOSCALER_RESOURCE+ AutoScalerConstants.AS_POLICY_RESOURCE + "/";
private static Map<String,AutoscalePolicy> autoscalePolicyListMap = new HashMap<String, AutoscalePolicy>();
private static Map<File,String> autoscalePolicyfileNameMap = new HashMap<File, String>();
@@ -76,12 +82,21 @@ public class PolicyManager {
log.debug("Adding policy :" + policy.getId());
}
autoscalePolicyListMap.put(policy.getId(), policy);
+ this.persitASPolicy(asResourcePath+policy.getId(), policy);
} else {
throw new InvalidPolicyException("Specified policy [" + policy.getId()
+ "] already exists");
}
}
+ private void persitASPolicy(String asResourcePath, AutoscalePolicy policy){
+ try {
+ RegistryManager.getInstance().persist(policy, asResourcePath);
+ } catch (RegistryException e) {
+ throw new AutoScalerException(e);
+ }
+ }
+
/**
* Appends the specified policy
* @param policy
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/976e555b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/AutoscalePolicy.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/AutoscalePolicy.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/AutoscalePolicy.java
index 22727a4..9efde70 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/AutoscalePolicy.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/AutoscalePolicy.java
@@ -19,11 +19,14 @@
package org.apache.stratos.autoscaler.policy.model;
+import java.io.Serializable;
+
/**
* The model class for Autoscale-policy definition.
*/
-public class AutoscalePolicy {
+public class AutoscalePolicy implements Serializable {
+ private static final long serialVersionUID = 1754373171598089271L;
private LoadThresholds loadThresholds;
private String id;
private String displayName;
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/976e555b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/LoadAverage.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/LoadAverage.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/LoadAverage.java
index a8147f2..9a64de0 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/LoadAverage.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/LoadAverage.java
@@ -19,12 +19,15 @@
package org.apache.stratos.autoscaler.policy.model;
+import java.io.Serializable;
+
/**
* The model class for LoadAverage definition.
*/
-public class LoadAverage {
+public class LoadAverage implements Serializable{
- private float average;
+ private static final long serialVersionUID = -2109860338694123343L;
+ private float average;
private float secondDerivative;
private float gradient;
private float scaleDownMarginOfGradient;
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/976e555b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/LoadThresholds.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/LoadThresholds.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/LoadThresholds.java
index abbb868..61677d7 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/LoadThresholds.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/LoadThresholds.java
@@ -19,11 +19,14 @@
package org.apache.stratos.autoscaler.policy.model;
+import java.io.Serializable;
+
/**
* The model class for LoadThresholds definition.
*/
-public class LoadThresholds {
+public class LoadThresholds implements Serializable{
+ private static final long serialVersionUID = -8148571245537655867L;
private RequestsInFlight requestsInFlight;
private MemoryConsumption memoryConsumption;
private LoadAverage loadAverage;
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/976e555b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/MemoryConsumption.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/MemoryConsumption.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/MemoryConsumption.java
index c9a720b..9696f41 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/MemoryConsumption.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/MemoryConsumption.java
@@ -19,12 +19,15 @@
package org.apache.stratos.autoscaler.policy.model;
+import java.io.Serializable;
+
/**
* The model class for MemoryConsumption definition.
*/
-public class MemoryConsumption {
+public class MemoryConsumption implements Serializable {
- private float average;
+ private static final long serialVersionUID = 5755634390464664663L;
+ private float average;
private float secondDerivative;
private float gradient;
private float scaleDownMarginOfGradient;
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/976e555b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/RequestsInFlight.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/RequestsInFlight.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/RequestsInFlight.java
index fc40016..b56e305 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/RequestsInFlight.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/RequestsInFlight.java
@@ -19,12 +19,15 @@
package org.apache.stratos.autoscaler.policy.model;
+import java.io.Serializable;
+
/**
* The model class for RequestsInFlight definition.
*/
-public class RequestsInFlight {
+public class RequestsInFlight implements Serializable{
- private float average;
+ private static final long serialVersionUID = 8113964958155294290L;
+ private float average;
private float secondDerivative;
private float gradient;
private float scaleDownMarginOfGradient;
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/976e555b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoScalerConstants.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoScalerConstants.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoScalerConstants.java
index 462f39f..1a777e5 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoScalerConstants.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoScalerConstants.java
@@ -35,5 +35,6 @@ public final class AutoScalerConstants {
*/
public static final String AUTOSCALER_RESOURCE = "/autoscaler";
public static final String PARTITION_RESOURCE = "/partitions";
+ public static final String AS_POLICY_RESOURCE = "/policies/autoscalingPolicies";
}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/976e555b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
index caacebd..4428336 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
@@ -31,6 +31,7 @@ import org.apache.commons.logging.LogFactory;
import org.apache.stratos.autoscaler.ClusterContext;
import org.apache.stratos.autoscaler.client.cloud.controller.CloudControllerClient;
import org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy;
+import org.apache.stratos.autoscaler.exception.AutoScalerException;
import org.apache.stratos.autoscaler.exception.InvalidPartitionException;
import org.apache.stratos.autoscaler.exception.PartitionValidationException;
import org.apache.stratos.autoscaler.exception.PolicyValidationException;
@@ -42,6 +43,7 @@ import org.apache.stratos.cloud.controller.deployment.partition.Partition;
import org.apache.stratos.cloud.controller.pojo.Properties;
import org.apache.stratos.cloud.controller.pojo.Property;
import org.apache.stratos.messaging.domain.topology.Cluster;
+import org.wso2.carbon.registry.core.exceptions.RegistryException;
/**
* This class contains utility methods used by Autoscaler.
@@ -161,6 +163,9 @@ public class AutoscalerUtil {
if (!destPartition.isPropertiesSpecified()) {
destPartition.setProperties(srcPartition.getProperties());
}
+
+ // update the partitions with the extra properties in the deployment policy.
+ PartitionManager.getInstance().updatePartition(destPartition, srcPartition);
}
public static Properties getProperties(final OMElement elt) {