You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by im...@apache.org on 2013/11/18 13:00:26 UTC
git commit: Refactor policy model / policy deployers
Updated Branches:
refs/heads/master 6bc8e2c8f -> b0535f26b
Refactor policy model / policy deployers
Signed-off-by: Imesh Gunaratne <im...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/b0535f26
Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/b0535f26
Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/b0535f26
Branch: refs/heads/master
Commit: b0535f26ba23616c6b81452eb64f452becae84a7
Parents: 6bc8e2c
Author: Melan Nimesh <me...@gmail.com>
Authored: Mon Nov 18 10:15:45 2013 +0530
Committer: Imesh Gunaratne <im...@apache.org>
Committed: Mon Nov 18 17:30:04 2013 +0530
----------------------------------------------------------------------
.../org.apache.stratos.autoscaler/pom.xml | 3 +-
.../apache/stratos/autoscaler/Constants.java | 71 --------
.../health/HealthEventMessageDelegator.java | 2 +-
.../autoscaler/policy/PolicyManager.java | 131 +++++++++++---
.../policy/deployers/AbstractPolicyReader.java | 90 ++++++++++
.../deployers/AutoscalerPolicyDeployer.java | 113 ++++++++++++
.../deployers/AutoscalerPolicyReader.java | 113 ++++++++++++
.../deployers/DeploymentPolicyDeployer.java | 113 ++++++++++++
.../deployers/DeploymentPolicyReader.java | 94 ++++++++++
.../policy/deployers/PolicyDeployer.java | 113 ------------
.../policy/deployers/PolicyReader.java | 174 -------------------
.../policy/model/AutoscalePolicy.java | 25 ---
.../policy/model/DeploymentPolicy.java | 67 +++++++
.../autoscaler/policy/model/HAPolicy.java | 67 -------
.../autoscaler/policy/model/PartitionGroup.java | 81 +++++++++
.../stratos/autoscaler/util/AutoscalerUtil.java | 16 +-
.../src/main/resources/META-INF/component.xml | 9 +-
.../distribution/src/main/assembly/bin.xml | 14 +-
.../main/autoscale-policies/economyPolicy.xml | 36 ++++
.../deployment-policies/economy-deployment.xml | 26 +++
.../src/main/policies/economyPolicy.xml | 35 ----
21 files changed, 873 insertions(+), 520 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/b0535f26/components/org.apache.stratos.autoscaler/pom.xml
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/pom.xml b/components/org.apache.stratos.autoscaler/pom.xml
index 1d0abde..b92fc94 100644
--- a/components/org.apache.stratos.autoscaler/pom.xml
+++ b/components/org.apache.stratos.autoscaler/pom.xml
@@ -185,7 +185,8 @@
*;resolution:=optional
</Import-Package>
<DynamicImport-Package>*</DynamicImport-Package>
- <Axis2Deployer>PolicyDeployer</Axis2Deployer>
+ <Axis2Deployer>AutoscalerPolicyDeployer</Axis2Deployer>
+ <Axis2Deployer>DeploymentPolicyDeployer</Axis2Deployer>
<Embed-Dependency>*;scope=compile|runtime</Embed-Dependency>
<Embed-Directory>lib</Embed-Directory>
</instructions>
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/b0535f26/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/Constants.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/Constants.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/Constants.java
index bdf0ff7..c600f1e 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/Constants.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/Constants.java
@@ -21,75 +21,4 @@ public class Constants {
public static final String CLOUD_CONTROLLER_SERVICE_SFX = "services/CloudControllerService";
public static final int CLOUD_CONTROLLER_DEFAULT_PORT = 9444;
-// public void a(){
-// Cluster cluster = null;
-//// log.info("cluster " + clusterId);
-// String clusterId = cluster.getClusterId();
-//
-//
-// ClusterContext clusterContext = null;
-//// = $context.getClusterContext(clusterId);
-// AutoscalerContext context = null;
-// if(null==clusterContext){
-//
-// clusterContext = new ClusterContext(cluster.getClusterId(), cluster.getServiceName()) ;
-// AutoscalePolicy policy = PolicyManager.getInstance().getPolicy(cluster.getAutoscalePolicyName());
-//
-// for(Partition partition: policy.getHAPolicy().getPartitions()){
-// clusterContext.addPartitionCount(partition.getId(), 0);
-// }
-// context.addClusterContext(clusterContext);
-//
-// }
-//
-//
-// float lbStatAverage = clusterContext.getAverageRequestsInFlight();
-// float lbStatGradient = clusterContext.getRequestsInFlightGradient();
-// float lbStatSecondDerivative = clusterContext.getRequestsInFlightSecondDerivative();
-//
-// LoadThresholds loadThresholds = manager.getPolicy(cluster.autoscalePolicyName).getLoadThresholds();
-// float averageLimit = loadThresholds.getRequestsInFlight().getAverage();
-// float gradientLimit = loadThresholds.getRequestsInFlight().getGradient();
-// float secondDerivative = loadThresholds.getRequestsInFlight().getSecondDerivative()
-// String partitionAlgorithm = manager.getPolicy(cluster.autoscalePolicyName).getHAPolicy().getPartitionAlgo();
-// log.info("partitionAlgorithm " + partitionAlgorithm);
-//
-// AutoscaleAlgorithm autoscaleAlgorithm = null;
-// if(Constants.ROUND_ROBIN_ALGORITHM_ID.equals(partitionAlgorithm)){
-//
-// autoscaleAlgorithm = new RoundRobin();
-// } else if(Constants.ONE_AFTER_ANOTHER_ALGORITHM_ID.equals(partitionAlgorithm)){
-//
-// autoscaleAlgorithm = new OneAfterAnother();
-// }
-//
-//
-// if(lbStatAverage > averageLimit && lbStatGradient > gradientLimit){
-//// log.info("in scale up " );
-// int i = 0;
-// Partition partition = autoscaleAlgorithm.getScaleUpPartition(clusterId);
-// if(partition != null){
-//// log.info("gonna scale up " );
-// if(lbStatSecondDerivative > secondDerivative){
-// int numberOfInstancesToBeSpawned = 2; // take from a config
-// log.info("gonna scale up by 2 " );
-// evaluator.delegateSpawn(partition,clusterId, numberOfInstancesToBeSpawned);
-// //spawnInstances Two
-//
-// } else {
-// int numberOfInstancesToBeSpawned = 1;
-// evaluator.delegateSpawn(partition,clusterId, numberOfInstancesToBeSpawned);
-// //spawnInstances one
-// }
-// }
-// } else if(lbStatAverage < averageLimit && lbStatGradient < gradientLimit){
-//// log.info("in scale down " );
-// //terminate one
-// Partition partition = autoscaleAlgorithm.getScaleDownPartition(clusterId);
-// if(partition != null){
-//// log.info("gonna scale down " );
-// evaluator.delegateTerminate(partition,clusterId);
-// }
-// }
-// }
}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/b0535f26/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/health/HealthEventMessageDelegator.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/health/HealthEventMessageDelegator.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/health/HealthEventMessageDelegator.java
index ad3f93b..5057553 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/health/HealthEventMessageDelegator.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/health/HealthEventMessageDelegator.java
@@ -68,7 +68,7 @@ public class HealthEventMessageDelegator implements Runnable {
if(!AutoscalerContext.getInstance().clusterExists(clusterId)){
Cluster cluster = service.getCluster(clusterId);
- AutoscalePolicy autoscalePolicy = PolicyManager.getInstance().getPolicy(cluster.getAutoscalePolicyName());
+ AutoscalePolicy autoscalePolicy = PolicyManager.getInstance().getAutoscalePolicy(cluster.getAutoscalePolicyName());
ClusterContext clusterContext = new ClusterContext(clusterId, service.getServiceName());
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/b0535f26/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 90fba2f..093d0b8 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,17 +29,21 @@ import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.stratos.autoscaler.policy.model.AutoscalePolicy;
+import org.apache.stratos.autoscaler.policy.model.DeploymentPolicy;
/**
*
- * Manager class for the purpose of managing Autoscale-policy definitions.
+ * Manager class for the purpose of managing Autoscale/Deployment policy definitions.
*/
public class PolicyManager {
private static final Log log = LogFactory.getLog(PolicyManager.class);
- private static Map<String,AutoscalePolicy> policyListMap = new HashMap<String, AutoscalePolicy>();
- private static Map<File,String> fileNameMap = new HashMap<File, String>();
+ 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;
@@ -59,18 +63,18 @@ public class PolicyManager {
* @param policy
* @throws InvalidPolicyException
*/
- public void addPolicy(File policyFile,AutoscalePolicy policy) throws InvalidPolicyException {
- if(fileNameMap.containsKey(policyFile)){
- removePolicy(fileNameMap.get(policyFile));
- fileNameMap.remove(policyFile);
+ public void addAutoscalePolicy(File policyFile,AutoscalePolicy policy) throws InvalidPolicyException {
+ if(autoscalePolicyfileNameMap.containsKey(policyFile)){
+ removeAutoscalePolicy(autoscalePolicyfileNameMap.get(policyFile));
+ autoscalePolicyfileNameMap.remove(policyFile);
} else{
- fileNameMap.put(policyFile, policy.getId());
+ autoscalePolicyfileNameMap.put(policyFile, policy.getId());
}
- if (!policyListMap.containsKey(policy.getId())) {
+ if (!autoscalePolicyListMap.containsKey(policy.getId())) {
if(log.isDebugEnabled()){
log.debug("Adding policy :" + policy.getId());
}
- policyListMap.put(policy.getId(), policy);
+ autoscalePolicyListMap.put(policy.getId(), policy);
} else {
throw new InvalidPolicyException("Specified policy [" + policy.getId()
+ "] already exists");
@@ -82,8 +86,8 @@ public class PolicyManager {
* @param policy
* @throws InvalidPolicyException
*/
- public void addPolicy(AutoscalePolicy policy) throws InvalidPolicyException {
- addPolicy(new File(policy.getId().concat(".xml")), policy);
+ public void addAutoscalePolicy(AutoscalePolicy policy) throws InvalidPolicyException {
+ addAutoscalePolicy(new File(policy.getId().concat(".xml")), policy);
}
/**
@@ -91,12 +95,12 @@ public class PolicyManager {
* @param policy
* @throws InvalidPolicyException
*/
- public void removePolicy(String policy) throws InvalidPolicyException {
- if (policyListMap.containsKey(policy)) {
+ public void removeAutoscalePolicy(String policy) throws InvalidPolicyException {
+ if (autoscalePolicyListMap.containsKey(policy)) {
if(log.isDebugEnabled()){
log.debug("Removing policy :" + policy);
}
- policyListMap.remove(policy);
+ autoscalePolicyListMap.remove(policy);
} else {
throw new InvalidPolicyException("No such policy [" + policy + "] exists");
}
@@ -107,29 +111,106 @@ public class PolicyManager {
* @param policyFile
* @throws InvalidPolicyException
*/
- public void removePolicy(File policyFile) throws InvalidPolicyException {
- if(fileNameMap.containsKey(policyFile)){
- removePolicy(fileNameMap.get(policyFile));
- fileNameMap.remove(policyFile);
+ public void removeAutoscalePolicy(File policyFile) throws InvalidPolicyException {
+ if(autoscalePolicyfileNameMap.containsKey(policyFile)){
+ removeAutoscalePolicy(autoscalePolicyfileNameMap.get(policyFile));
+ autoscalePolicyfileNameMap.remove(policyFile);
}
}
/**
- * Returns a List of the policies contained in this manager.
+ * Returns a List of the Autoscale policies contained in this manager.
* @return
*/
- public List<AutoscalePolicy> getPolicyList() {
- return Collections.unmodifiableList(new ArrayList<AutoscalePolicy>(policyListMap.values()));
+ public List<AutoscalePolicy> getAutoscalePolicyList() {
+ return Collections.unmodifiableList(new ArrayList<AutoscalePolicy>(autoscalePolicyListMap.values()));
}
/**
- * Returns the policy to which the specified id is mapped or null
+ * Returns the autoscale policy to which the specified id is mapped or null
* @param id
* @return
*/
- public AutoscalePolicy getPolicy(String id) {
- return policyListMap.get(id);
+ public AutoscalePolicy getAutoscalePolicy(String id) {
+ 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());
+ }
+ if (!deploymentPolicyListMap.containsKey(policy.getId())) {
+ if(log.isDebugEnabled()){
+ log.debug("Adding policy :" + policy.getId());
+ }
+ deploymentPolicyListMap.put(policy.getId(), policy);
+ } else {
+ throw new InvalidPolicyException("Specified policy [" + policy.getId()
+ + "] 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
+ * @throws InvalidPolicyException
+ */
+ public void removeDeploymentPolicy(String policy) throws InvalidPolicyException {
+ if (deploymentPolicyListMap.containsKey(policy)) {
+ if(log.isDebugEnabled()){
+ log.debug("Removing policy :" + policy);
+ }
+ deploymentPolicyListMap.remove(policy);
+ } else {
+ throw new InvalidPolicyException("No such policy [" + policy + "] exists");
+ }
+ }
+
+ /**
+ * 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
+ */
+ public List<DeploymentPolicy> getDeploymentPolicyList() {
+ return Collections.unmodifiableList(new ArrayList<DeploymentPolicy>(deploymentPolicyListMap.values()));
+ }
+
+ /**
+ * Returns the deployment policy to which the specified id is mapped or null
+ * @param id
+ * @return
+ */
+ public DeploymentPolicy getDeploymentPolicy(String id) {
+ return deploymentPolicyListMap.get(id);
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/b0535f26/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/deployers/AbstractPolicyReader.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/deployers/AbstractPolicyReader.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/deployers/AbstractPolicyReader.java
new file mode 100644
index 0000000..06d6c62
--- /dev/null
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/deployers/AbstractPolicyReader.java
@@ -0,0 +1,90 @@
+/*
+ * 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.policy.deployers;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamReader;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.autoscaler.policy.InvalidPolicyException;
+
+/**
+ * Abstract super-class, with some common logic, for reading policies. The only
+ * method subclasses must implement is read().
+ */
+public abstract class AbstractPolicyReader<T> {
+
+ private static final Log log = LogFactory.getLog(AbstractPolicyReader.class);
+
+ protected File file;
+ private FileInputStream fStream;
+
+ protected AbstractPolicyReader(File file) {
+ this.setFile(file);
+ }
+
+ public File getFile() {
+ return file;
+ }
+
+ public void setFile(File file) {
+ this.file = file;
+ }
+
+ public abstract T read() throws InvalidPolicyException;
+
+ protected OMElement getDocument() throws Exception {
+ fStream = new FileInputStream(file);
+ XMLStreamReader parser = XMLInputFactory.newInstance().createXMLStreamReader(fStream);
+ StAXOMBuilder builder = new StAXOMBuilder(parser);
+ return builder.getDocumentElement();
+ }
+
+ protected void closeStream() {
+ try {
+ if (fStream != null) {
+ fStream.close();
+ }
+ } catch (IOException e) {
+ log.debug("Unable to close the input stream", e);
+ }
+ }
+
+ protected String readValueAttr(OMElement ele, String qName) {
+ OMElement valueContainer = ele.getFirstChildWithName(new QName(qName));
+ String value = valueContainer.getAttributeValue(new QName("value"));
+ return value;
+ }
+
+ protected String readValue(OMElement ele, String qName) {
+ OMElement valueContainer = ele.getFirstChildWithName(new QName(qName));
+ String value = valueContainer.getText();
+ return value;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/b0535f26/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
new file mode 100644
index 0000000..7579f46
--- /dev/null
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/deployers/AutoscalerPolicyDeployer.java
@@ -0,0 +1,113 @@
+/*
+ * 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.policy.deployers;
+
+import java.io.File;
+
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.deployment.AbstractDeployer;
+import org.apache.axis2.deployment.DeploymentException;
+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.policy.InvalidPolicyException;
+import org.apache.stratos.autoscaler.policy.PolicyManager;
+import org.apache.stratos.autoscaler.policy.model.AutoscalePolicy;
+
+/**
+ *
+ * The Axis2 deployer class for Autoscale-policy definitions.
+ */
+public class AutoscalerPolicyDeployer extends AbstractDeployer {
+
+ private static final Log log = LogFactory.getLog(AutoscalerPolicyDeployer.class);
+
+ private static String fileExt="xml"; //default
+ private static String deployDirectory=null;
+
+ @Override
+ public void init(ConfigurationContext context) {
+ if(deployDirectory!=null){
+ File deployDir = new File(new File(context.getAxisConfiguration().getRepository().getPath()),deployDirectory);
+ if(!deployDir.exists()){
+ //create policies deployment directory if not exist
+ try {
+ deployDir.mkdirs();
+ } catch (Exception e) {
+ log.error("Unable to create policies deployment directory", e);
+ }
+ }
+ }
+ }
+
+ @Override
+ public void setDirectory(String dir) {
+ deployDirectory = dir;
+ }
+
+ @Override
+ public void setExtension(String ext) {
+ fileExt = ext;
+ }
+
+ @Override
+ public void deploy(DeploymentFileData deploymentFileData) throws DeploymentException {
+
+ File policyFile = deploymentFileData.getFile();
+ log.debug("Started to deploy the policy: " + policyFile);
+
+ try {
+
+ AutoscalerPolicyReader reader = new AutoscalerPolicyReader(policyFile);
+
+ AutoscalePolicy policy = reader.read();
+ PolicyManager.getInstance().addAutoscalePolicy(policyFile,policy);
+
+ log.info("Successfully deployed the policy specified at "
+ + deploymentFileData.getAbsolutePath());
+
+ } catch (Exception e) {
+ String msg = "Invalid policy artifact at " + deploymentFileData.getAbsolutePath();
+ // back up the file
+ File fileToBeRenamed = policyFile;
+ fileToBeRenamed.renameTo(new File(deploymentFileData.getAbsolutePath() + ".back"));
+ log.error(msg, e);
+ throw new DeploymentException(msg, e);
+ }
+ }
+
+ @Override
+ public void undeploy(String fileName) throws DeploymentException {
+ File policyFile = new File(fileName);
+ String policyName = policyFile.getName().replaceAll("." + fileExt + "$", "");
+ try {
+ PolicyManager.getInstance().removeAutoscalePolicy(policyFile);
+ log.info("Successfully undeployed the policy specified at " + fileName);
+ } catch (InvalidPolicyException e) {
+ 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/b0535f26/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/deployers/AutoscalerPolicyReader.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/deployers/AutoscalerPolicyReader.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/deployers/AutoscalerPolicyReader.java
new file mode 100644
index 0000000..8d71a5d
--- /dev/null
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/deployers/AutoscalerPolicyReader.java
@@ -0,0 +1,113 @@
+/*
+ * 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.policy.deployers;
+
+import java.io.File;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axis2.deployment.DeploymentException;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.autoscaler.policy.InvalidPolicyException;
+import org.apache.stratos.autoscaler.policy.model.AutoscalePolicy;
+import org.apache.stratos.autoscaler.policy.model.LoadAverage;
+import org.apache.stratos.autoscaler.policy.model.LoadThresholds;
+import org.apache.stratos.autoscaler.policy.model.MemoryConsumption;
+import org.apache.stratos.autoscaler.policy.model.RequestsInFlight;
+
+/**
+ *
+ * The Reader class for Autoscale-policy definitions.
+ */
+public class AutoscalerPolicyReader extends AbstractPolicyReader<AutoscalePolicy> {
+
+ private static final Log log = LogFactory.getLog(AutoscalerPolicyReader.class);
+
+ public AutoscalerPolicyReader(File file) {
+ super(file);
+ }
+
+ public AutoscalePolicy read() throws InvalidPolicyException{
+ AutoscalePolicy policy = new AutoscalePolicy();
+ try {
+ OMElement docEle = getDocument();
+ if("autoscalePolicy".equalsIgnoreCase(docEle.getLocalName())){
+ policy.setId(docEle.getAttributeValue(new QName("id")));
+ OMElement displayNameEle = docEle.getFirstChildWithName(new QName("displayName"));
+ if(displayNameEle!=null){
+ policy.setDisplayName(displayNameEle.getText());
+ }
+ OMElement descriptionEle = docEle.getFirstChildWithName(new QName("description"));
+ if(descriptionEle!=null){
+ policy.setDescription(descriptionEle.getText());
+ }
+
+ //LoadThresholds
+ OMElement loadThresholdsEle = docEle.getFirstChildWithName(new QName("loadThresholds"));
+ LoadThresholds loadThresholds = new LoadThresholds();
+
+ //RequestsInFlight
+ OMElement reqInFlightEle = loadThresholdsEle.getFirstChildWithName(new QName("requestsInFlight"));
+ RequestsInFlight reqInFlight = new RequestsInFlight();
+ reqInFlight.setAverage(Float.valueOf(readValueAttr(reqInFlightEle,"average")));
+ reqInFlight.setGradient(Float.valueOf(readValueAttr(reqInFlightEle,"gradient")));
+ reqInFlight.setSecondDerivative(Float.valueOf(readValueAttr(reqInFlightEle,"secondDerivative")));
+ reqInFlight.setScaleDownMarginOfGradient(Float.valueOf(readValueAttr(reqInFlightEle,"scaleDownMarginOfGradient")));
+ reqInFlight.setScaleDownMarginOfSecondDerivative(Float.valueOf(readValueAttr(reqInFlightEle,"scaleDownMarginOfSecondDerivative")));
+ loadThresholds.setRequestsInFlight(reqInFlight);
+
+ //MemoryConsumption
+ OMElement memConsumptionEle = loadThresholdsEle.getFirstChildWithName(new QName("memoryConsumption"));
+ MemoryConsumption memConsumption = new MemoryConsumption();
+ memConsumption.setAverage(Float.valueOf(readValueAttr(memConsumptionEle,"average")));
+ memConsumption.setGradient(Float.valueOf(readValueAttr(memConsumptionEle,"gradient")));
+ memConsumption.setSecondDerivative(Float.valueOf(readValueAttr(memConsumptionEle,"secondDerivative")));
+ memConsumption.setScaleDownMarginOfGradient(Float.valueOf(readValueAttr(memConsumptionEle,"scaleDownMarginOfGradient")));
+ memConsumption.setScaleDownMarginOfSecondDerivative(Float.valueOf(readValueAttr(memConsumptionEle,"scaleDownMarginOfSecondDerivative")));
+ loadThresholds.setMemoryConsumption(memConsumption);
+
+ //LoadAverage
+ OMElement loadAvrEle = loadThresholdsEle.getFirstChildWithName(new QName("loadAverage"));
+ LoadAverage loadAvr = new LoadAverage();
+ loadAvr.setAverage(Float.valueOf(readValueAttr(loadAvrEle,"average")));
+ loadAvr.setGradient(Float.valueOf(readValueAttr(loadAvrEle,"gradient")));
+ loadAvr.setSecondDerivative(Float.valueOf(readValueAttr(loadAvrEle,"secondDerivative")));
+ loadAvr.setScaleDownMarginOfGradient(Float.valueOf(readValueAttr(loadAvrEle,"scaleDownMarginOfGradient")));
+ loadAvr.setScaleDownMarginOfSecondDerivative(Float.valueOf(readValueAttr(loadAvrEle,"scaleDownMarginOfSecondDerivative")));
+ loadThresholds.setLoadAverage(loadAvr);
+
+ policy.setLoadThresholds(loadThresholds);
+
+ } else{
+ throw new DeploymentException("File is not a valid autoscale policy");
+ }
+
+ } catch (Exception e){
+ log.error("Malformed autoscale policy file", e);
+ throw new InvalidPolicyException("Malformed autoscale policy file",e);
+ } finally{
+ closeStream();
+ }
+ return policy;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/b0535f26/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
new file mode 100644
index 0000000..d74a384
--- /dev/null
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/deployers/DeploymentPolicyDeployer.java
@@ -0,0 +1,113 @@
+/*
+ * 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.policy.deployers;
+
+import java.io.File;
+
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.deployment.AbstractDeployer;
+import org.apache.axis2.deployment.DeploymentException;
+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.policy.InvalidPolicyException;
+import org.apache.stratos.autoscaler.policy.PolicyManager;
+import org.apache.stratos.autoscaler.policy.model.DeploymentPolicy;
+
+/**
+ *
+ * The Axis2 deployer class for Deployment-Policy definitions.
+ */
+public class DeploymentPolicyDeployer extends AbstractDeployer {
+
+ private static final Log log = LogFactory.getLog(DeploymentPolicyDeployer.class);
+
+ private static String fileExt="xml"; //default
+ private static String deployDirectory=null;
+
+ @Override
+ public void init(ConfigurationContext context) {
+ if(deployDirectory!=null){
+ File deployDir = new File(new File(context.getAxisConfiguration().getRepository().getPath()),deployDirectory);
+ if(!deployDir.exists()){
+ //create policies deployment directory if not exist
+ try {
+ deployDir.mkdirs();
+ } catch (Exception e) {
+ log.error("Unable to create policies deployment directory", e);
+ }
+ }
+ }
+ }
+
+ @Override
+ public void setDirectory(String dir) {
+ deployDirectory = dir;
+ }
+
+ @Override
+ public void setExtension(String ext) {
+ fileExt = ext;
+ }
+
+ @Override
+ public void deploy(DeploymentFileData deploymentFileData) throws DeploymentException {
+
+ File policyFile = deploymentFileData.getFile();
+ log.debug("Started to deploy the policy: " + policyFile);
+
+ try {
+
+ DeploymentPolicyReader reader = new DeploymentPolicyReader(policyFile);
+
+ DeploymentPolicy policy = reader.read();
+ PolicyManager.getInstance().addDeploymentPolicy(policyFile,policy);
+
+ log.info("Successfully deployed the policy specified at "
+ + deploymentFileData.getAbsolutePath());
+
+ } catch (Exception e) {
+ String msg = "Invalid policy artifact at " + deploymentFileData.getAbsolutePath();
+ // back up the file
+ File fileToBeRenamed = policyFile;
+ fileToBeRenamed.renameTo(new File(deploymentFileData.getAbsolutePath() + ".back"));
+ log.error(msg, e);
+ throw new DeploymentException(msg, e);
+ }
+ }
+
+ @Override
+ public void undeploy(String fileName) throws DeploymentException {
+ File policyFile = new File(fileName);
+ String policyName = policyFile.getName().replaceAll("." + fileExt + "$", "");
+ try {
+ PolicyManager.getInstance().removeDeploymentPolicy(policyFile);
+ log.info("Successfully undeployed the policy specified at " + fileName);
+ } catch (InvalidPolicyException e) {
+ 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/b0535f26/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/deployers/DeploymentPolicyReader.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/deployers/DeploymentPolicyReader.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/deployers/DeploymentPolicyReader.java
new file mode 100644
index 0000000..fd0aceb
--- /dev/null
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/deployers/DeploymentPolicyReader.java
@@ -0,0 +1,94 @@
+/*
+ * 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.policy.deployers;
+
+import java.io.File;
+import java.util.Iterator;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axis2.deployment.DeploymentException;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.autoscaler.policy.InvalidPolicyException;
+import org.apache.stratos.autoscaler.policy.model.DeploymentPolicy;
+import org.apache.stratos.autoscaler.policy.model.Partition;
+import org.apache.stratos.autoscaler.policy.model.PartitionGroup;
+
+/**
+ *
+ * The Reader class for Deployment-policy definitions.
+ */
+public class DeploymentPolicyReader extends AbstractPolicyReader<DeploymentPolicy> {
+
+ private static final Log log = LogFactory.getLog(DeploymentPolicyReader.class);
+
+
+ public DeploymentPolicyReader(File file) {
+ super(file);
+ }
+
+ public DeploymentPolicy read() throws InvalidPolicyException{
+ DeploymentPolicy policy = new DeploymentPolicy();
+ try {
+ OMElement docEle = getDocument();
+ if("deploymentPolicy".equalsIgnoreCase(docEle.getLocalName())){
+ policy.setId(docEle.getAttributeValue(new QName("id")));
+ //Partition-Groups
+ OMElement partitionGroupsEle = docEle.getFirstChildWithName(new QName("partitionGroups"));
+ Iterator<?> partitionGroupItr = partitionGroupsEle.getChildrenWithLocalName("partitionGroup");
+ while(partitionGroupItr.hasNext()){
+ Object nextGroup = partitionGroupItr.next();
+ if(nextGroup instanceof OMElement){
+ OMElement groupEle = (OMElement) nextGroup;
+ PartitionGroup group = new PartitionGroup();
+ group.setPartitionAlgo(readValue(groupEle, "PartitionAlgo"));
+ //Partitions
+ OMElement partitionsEle = groupEle.getFirstChildWithName(new QName("partitions"));
+ Iterator<?> partitionItr = partitionsEle.getChildrenWithLocalName("partition");
+ while(partitionItr.hasNext()){
+ Object next = partitionItr.next();
+ if(next instanceof OMElement){
+ OMElement partitionEle = (OMElement) next;
+ Partition partition = new Partition();
+ partition.setId(partitionEle.getAttributeValue(new QName("id")));
+ partition.setPartitionMax(Integer.valueOf(readValue(partitionEle, "max")));
+ partition.setPartitionMin(Integer.valueOf(readValue(partitionEle, "min")));
+ group.getPartitions().add(partition);
+ }
+ }
+ policy.getPartitionGroups().add(group);
+ }
+ }
+ } else{
+ throw new DeploymentException("File is not a valid deployment policy");
+ }
+
+ } catch (Exception e){
+ log.error("Malformed deployment policy file", e);
+ throw new InvalidPolicyException("Malformed deployment policy file",e);
+ } finally{
+ closeStream();
+ }
+ return policy;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/b0535f26/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/deployers/PolicyDeployer.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/deployers/PolicyDeployer.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/deployers/PolicyDeployer.java
deleted file mode 100644
index 3f5eaad..0000000
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/deployers/PolicyDeployer.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * 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.policy.deployers;
-
-import java.io.File;
-
-import org.apache.axis2.context.ConfigurationContext;
-import org.apache.axis2.deployment.AbstractDeployer;
-import org.apache.axis2.deployment.DeploymentException;
-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.policy.InvalidPolicyException;
-import org.apache.stratos.autoscaler.policy.PolicyManager;
-import org.apache.stratos.autoscaler.policy.model.AutoscalePolicy;
-
-/**
- *
- * The Axis2 deployer class for Autoscale-policy definitions.
- */
-public class PolicyDeployer extends AbstractDeployer {
-
- private static final Log log = LogFactory.getLog(PolicyDeployer.class);
-
- private static String fileExt="xml"; //default
- private static String deployDirectory=null;
-
- @Override
- public void init(ConfigurationContext context) {
- if(deployDirectory!=null){
- File deployDir = new File(new File(context.getAxisConfiguration().getRepository().getPath()),deployDirectory);
- if(!deployDir.exists()){
- //create policies deployment directory if not exist
- try {
- deployDir.mkdirs();
- } catch (Exception e) {
- log.error("Unable to create policies deployment directory", e);
- }
- }
- }
- }
-
- @Override
- public void setDirectory(String dir) {
- deployDirectory = dir;
- }
-
- @Override
- public void setExtension(String ext) {
- fileExt = ext;
- }
-
- @Override
- public void deploy(DeploymentFileData deploymentFileData) throws DeploymentException {
-
- File policyFile = deploymentFileData.getFile();
- log.debug("Started to deploy the policy: " + policyFile);
-
- try {
-
- PolicyReader reader = new PolicyReader(policyFile);
-
- AutoscalePolicy policy = reader.read();
- PolicyManager.getInstance().addPolicy(policyFile,policy);
-
- log.info("Successfully deployed the policy specified at "
- + deploymentFileData.getAbsolutePath());
-
- } catch (Exception e) {
- String msg = "Invalid policy artifact at " + deploymentFileData.getAbsolutePath();
- // back up the file
- File fileToBeRenamed = policyFile;
- fileToBeRenamed.renameTo(new File(deploymentFileData.getAbsolutePath() + ".back"));
- log.error(msg, e);
- throw new DeploymentException(msg, e);
- }
- }
-
- @Override
- public void undeploy(String fileName) throws DeploymentException {
- File policyFile = new File(fileName);
- String policyName = policyFile.getName().replaceAll("." + fileExt + "$", "");
- try {
- PolicyManager.getInstance().removePolicy(policyFile);
- log.info("Successfully undeployed the policy specified at " + fileName);
- } catch (InvalidPolicyException e) {
- 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/b0535f26/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/deployers/PolicyReader.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/deployers/PolicyReader.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/deployers/PolicyReader.java
deleted file mode 100644
index 67d0154..0000000
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/deployers/PolicyReader.java
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * 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.policy.deployers;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.util.Iterator;
-
-import javax.xml.namespace.QName;
-import javax.xml.stream.XMLInputFactory;
-import javax.xml.stream.XMLStreamReader;
-
-import org.apache.axiom.om.OMElement;
-import org.apache.axiom.om.impl.builder.StAXOMBuilder;
-import org.apache.axis2.deployment.DeploymentException;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.stratos.autoscaler.policy.InvalidPolicyException;
-import org.apache.stratos.autoscaler.policy.model.AutoscalePolicy;
-import org.apache.stratos.autoscaler.policy.model.HAPolicy;
-import org.apache.stratos.autoscaler.policy.model.LoadAverage;
-import org.apache.stratos.autoscaler.policy.model.LoadThresholds;
-import org.apache.stratos.autoscaler.policy.model.MemoryConsumption;
-import org.apache.stratos.autoscaler.policy.model.Partition;
-import org.apache.stratos.autoscaler.policy.model.RequestsInFlight;
-
-/**
- *
- * The Reader class for Autoscale-policy definitions.
- */
-public class PolicyReader {
-
- private static final Log log = LogFactory.getLog(PolicyReader.class);
-
- private File file;
-
- public PolicyReader(File file) {
- this.setFile(file);
- }
-
- public File getFile() {
- return file;
- }
-
- public void setFile(File file) {
- this.file = file;
- }
-
- public AutoscalePolicy read() throws InvalidPolicyException{
- FileInputStream fStream = null;
- AutoscalePolicy policy = new AutoscalePolicy();
- try {
- fStream = new FileInputStream(file);
- XMLStreamReader parser = XMLInputFactory.newInstance().createXMLStreamReader(fStream);
- StAXOMBuilder builder = new StAXOMBuilder(parser);
- OMElement docEle = builder.getDocumentElement();
- if("AutoscalePolicy".equalsIgnoreCase(docEle.getLocalName())){
- policy.setId(docEle.getAttributeValue(new QName("id")));
- OMElement displayNameEle = docEle.getFirstChildWithName(new QName("displayName"));
- if(displayNameEle!=null){
- policy.setDisplayName(displayNameEle.getText());
- }
- OMElement descriptionEle = docEle.getFirstChildWithName(new QName("description"));
- if(descriptionEle!=null){
- policy.setDescription(descriptionEle.getText());
- }
-
- //LoadThresholds
- OMElement loadThresholdsEle = docEle.getFirstChildWithName(new QName("LoadThresholds"));
- LoadThresholds loadThresholds = new LoadThresholds();
-
- //RequestsInFlight
- OMElement reqInFlightEle = loadThresholdsEle.getFirstChildWithName(new QName("RequestsInFlight"));
- RequestsInFlight reqInFlight = new RequestsInFlight();
- reqInFlight.setAverage(Float.valueOf(readValueAttr(reqInFlightEle,"Average")));
- reqInFlight.setGradient(Float.valueOf(readValueAttr(reqInFlightEle,"Gradient")));
- reqInFlight.setSecondDerivative(Float.valueOf(readValueAttr(reqInFlightEle,"SecondDerivative")));
- reqInFlight.setScaleDownMarginOfGradient(Float.valueOf(readValueAttr(reqInFlightEle,"ScaleDownMarginOfGradient")));
- reqInFlight.setScaleDownMarginOfSecondDerivative(Float.valueOf(readValueAttr(reqInFlightEle,"ScaleDownMarginOfSecondDerivative")));
- loadThresholds.setRequestsInFlight(reqInFlight);
-
- //MemoryConsumption
- OMElement memConsumptionEle = loadThresholdsEle.getFirstChildWithName(new QName("MemoryConsumption"));
- MemoryConsumption memConsumption = new MemoryConsumption();
- memConsumption.setAverage(Float.valueOf(readValueAttr(memConsumptionEle,"Average")));
- memConsumption.setGradient(Float.valueOf(readValueAttr(memConsumptionEle,"Gradient")));
- memConsumption.setSecondDerivative(Float.valueOf(readValueAttr(memConsumptionEle,"SecondDerivative")));
- memConsumption.setScaleDownMarginOfGradient(Float.valueOf(readValueAttr(memConsumptionEle,"ScaleDownMarginOfGradient")));
- memConsumption.setScaleDownMarginOfSecondDerivative(Float.valueOf(readValueAttr(memConsumptionEle,"ScaleDownMarginOfSecondDerivative")));
- loadThresholds.setMemoryConsumption(memConsumption);
-
- //LoadAverage
- OMElement loadAvrEle = loadThresholdsEle.getFirstChildWithName(new QName("LoadAverage"));
- LoadAverage loadAvr = new LoadAverage();
- loadAvr.setAverage(Float.valueOf(readValueAttr(loadAvrEle,"Average")));
- loadAvr.setGradient(Float.valueOf(readValueAttr(loadAvrEle,"Gradient")));
- loadAvr.setSecondDerivative(Float.valueOf(readValueAttr(loadAvrEle,"SecondDerivative")));
- loadAvr.setScaleDownMarginOfGradient(Float.valueOf(readValueAttr(loadAvrEle,"ScaleDownMarginOfGradient")));
- loadAvr.setScaleDownMarginOfSecondDerivative(Float.valueOf(readValueAttr(loadAvrEle,"ScaleDownMarginOfSecondDerivative")));
- loadThresholds.setLoadAverage(loadAvr);
-
- policy.setLoadThresholds(loadThresholds);
-
- //HAPolicy
- OMElement haPolicyEle = docEle.getFirstChildWithName(new QName("HAPolicy"));
- HAPolicy haPolicy = new HAPolicy();
- haPolicy.setPartitionAlgo(readValue(haPolicyEle, "PartitionAlgo"));
-
- //Partitions
- OMElement partitions = haPolicyEle.getFirstChildWithName(new QName("Partitions"));
- Iterator<?> partitionItr = partitions.getChildrenWithLocalName("Partition");
- while(partitionItr.hasNext()){
- Object next = partitionItr.next();
- if(next instanceof OMElement){
- OMElement partitionEle = (OMElement) next;
- Partition partition = new Partition();
- partition.setId(partitionEle.getAttributeValue(new QName("id")));
- partition.setPartitionMax(Integer.valueOf(readValue(partitionEle, "PartitionMax")));
- partition.setPartitionMin(Integer.valueOf(readValue(partitionEle, "PartitionMin")));
- haPolicy.getPartitions().add(partition);
- }
- }
-
- policy.setHAPolicy(haPolicy);
-
- } else{
- throw new DeploymentException("File is not a valid autoscale policy");
- }
-
- } catch (Exception e){
- throw new InvalidPolicyException("Malformed policy file",e);
- } finally{
- try {
- if(fStream!=null){
- fStream.close();
- }
- } catch (IOException e) {
- log.debug("Unable to close the input stream", e);
- }
- }
- return policy;
- }
-
- private String readValueAttr(OMElement ele, String qName){
- OMElement valueContainer = ele.getFirstChildWithName(new QName(qName));
- String value = valueContainer.getAttributeValue(new QName("value"));
- return value;
- }
-
- private String readValue(OMElement ele, String qName){
- OMElement valueContainer = ele.getFirstChildWithName(new QName(qName));
- String value = valueContainer.getText();
- return value;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/b0535f26/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 9bf4cf0..22727a4 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
@@ -25,7 +25,6 @@ package org.apache.stratos.autoscaler.policy.model;
public class AutoscalePolicy {
private LoadThresholds loadThresholds;
- private HAPolicy haPolicy;
private String id;
private String displayName;
private String description;
@@ -55,30 +54,6 @@ public class AutoscalePolicy {
}
/**
- * Gets the value of the haPolicy property.
- *
- * @return
- * possible object is
- * {@link HAPolicy }
- *
- */
- public HAPolicy getHAPolicy() {
- return haPolicy;
- }
-
- /**
- * Sets the value of the haPolicy property.
- *
- * @param value
- * allowed object is
- * {@link HAPolicy }
- *
- */
- public void setHAPolicy(HAPolicy value) {
- this.haPolicy = value;
- }
-
- /**
* Gets the value of the id property.
*
* @return
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/b0535f26/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/DeploymentPolicy.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/DeploymentPolicy.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/DeploymentPolicy.java
new file mode 100644
index 0000000..50f9006
--- /dev/null
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/DeploymentPolicy.java
@@ -0,0 +1,67 @@
+/*
+ * 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.policy.model;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * The model class for Deployment-Policy definition.
+ */
+public class DeploymentPolicy {
+
+ private String id;
+ private List<PartitionGroup> partitionGroups;
+
+ /**
+ * Gets the value of the id property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * Sets the value of the id property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setId(String value) {
+ this.id = value;
+ }
+
+ /**
+ * Gets the value of the partition-groups.
+ */
+ public List<PartitionGroup> getPartitionGroups() {
+ if (partitionGroups == null) {
+ partitionGroups = new ArrayList<PartitionGroup>();
+ }
+ return this.partitionGroups;
+ }
+
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/b0535f26/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/HAPolicy.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/HAPolicy.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/HAPolicy.java
deleted file mode 100644
index 4e21687..0000000
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/HAPolicy.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * 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.policy.model;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * The model class for HAPolicy definition.
- */
-public class HAPolicy {
-
- private String partitionAlgo;
- private List<Partition> partitions;
-
- /**
- * Gets the value of the partitionAlgo property.
- *
- * @return
- * possible object is
- * {@link String }
- *
- */
- public String getPartitionAlgo() {
- return partitionAlgo;
- }
-
- /**
- * Sets the value of the partitionAlgo property.
- *
- * @param value
- * allowed object is
- * {@link String }
- *
- */
- public void setPartitionAlgo(String value) {
- this.partitionAlgo = value;
- }
-
- /**
- * Gets the value of the partitions.
- */
- public List<Partition> getPartitions() {
- if (partitions == null) {
- partitions = new ArrayList<Partition>();
- }
- return this.partitions;
- }
-
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/b0535f26/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/PartitionGroup.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/PartitionGroup.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/PartitionGroup.java
new file mode 100644
index 0000000..2db5e67
--- /dev/null
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/PartitionGroup.java
@@ -0,0 +1,81 @@
+/*
+ * 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.policy.model;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * The model class for PartitionGroup definition.
+ */
+public class PartitionGroup {
+
+ private String id;
+ private String partitionAlgo;
+ private List<Partition> partitions;
+
+ /**
+ * Gets the value of the partitionAlgo property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getPartitionAlgo() {
+ return partitionAlgo;
+ }
+
+ /**
+ * Sets the value of the partitionAlgo property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setPartitionAlgo(String value) {
+ this.partitionAlgo = value;
+ }
+
+ /**
+ * Gets the value of the partitions.
+ */
+ public List<Partition> getPartitions() {
+ if (partitions == null) {
+ partitions = new ArrayList<Partition>();
+ }
+ return this.partitions;
+ }
+
+ /**
+ * Gets the value of the id.
+ */
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * sets the value of the id.
+ */
+ public void setId(String id) {
+ this.id = id;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/b0535f26/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 7f4468d..49865e9 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
@@ -23,8 +23,10 @@ import org.apache.stratos.autoscaler.AutoscalerContext;
import org.apache.stratos.autoscaler.ClusterContext;
import org.apache.stratos.autoscaler.policy.PolicyManager;
import org.apache.stratos.autoscaler.policy.model.AutoscalePolicy;
+import org.apache.stratos.autoscaler.policy.model.DeploymentPolicy;
import org.apache.stratos.autoscaler.policy.model.LoadThresholds;
import org.apache.stratos.autoscaler.policy.model.Partition;
+import org.apache.stratos.autoscaler.policy.model.PartitionGroup;
import org.apache.stratos.messaging.domain.topology.Cluster;
/**
@@ -47,7 +49,7 @@ public class AutoscalerUtil {
if (null == clusterContext) {
clusterContext = new ClusterContext(cluster.getClusterId(), cluster.getServiceName());
- AutoscalePolicy policy = PolicyManager.getInstance().getPolicy(cluster.getAutoscalePolicyName());
+ AutoscalePolicy policy = PolicyManager.getInstance().getAutoscalePolicy(cluster.getAutoscalePolicyName());
if(policy!=null){
@@ -62,9 +64,15 @@ public class AutoscalerUtil {
clusterContext.setRequestsInFlightSecondDerivative(secondDerivative);
clusterContext.setAverageRequestsInFlight(averageLimit);
- for (Partition partition : policy.getHAPolicy().getPartitions()) {
- clusterContext.addPartitionCount(partition.getId(), 0);
- }
+ DeploymentPolicy deploymentPolicy = PolicyManager.getInstance().getDeploymentPolicy(cluster.getHaPolicyName());
+ if(deploymentPolicy!=null){
+ for(PartitionGroup group :deploymentPolicy.getPartitionGroups()){
+ for (Partition partition : group.getPartitions()) {
+ clusterContext.addPartitionCount(partition.getId(), 0);
+ }
+ }
+ }
+
}
context.addClusterContext(clusterContext);
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/b0535f26/components/org.apache.stratos.autoscaler/src/main/resources/META-INF/component.xml
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/resources/META-INF/component.xml b/components/org.apache.stratos.autoscaler/src/main/resources/META-INF/component.xml
index d383e94..cbab84f 100644
--- a/components/org.apache.stratos.autoscaler/src/main/resources/META-INF/component.xml
+++ b/components/org.apache.stratos.autoscaler/src/main/resources/META-INF/component.xml
@@ -19,9 +19,14 @@
<component xmlns="http://products.wso2.org/carbon">
<deployers>
<deployer>
- <directory>policies</directory>
+ <directory>autoscale-policies</directory>
<extension>xml</extension>
- <class>org.apache.stratos.autoscaler.policy.deployers.PolicyDeployer</class>
+ <class>org.apache.stratos.autoscaler.policy.deployers.AutoscalerPolicyDeployer</class>
+ </deployer>
+ <deployer>
+ <directory>deployment-policies</directory>
+ <extension>xml</extension>
+ <class>org.apache.stratos.autoscaler.policy.deployers.DeploymentPolicyDeployer</class>
</deployer>
</deployers>
</component>
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/b0535f26/products/autoscaler/modules/distribution/src/main/assembly/bin.xml
----------------------------------------------------------------------
diff --git a/products/autoscaler/modules/distribution/src/main/assembly/bin.xml b/products/autoscaler/modules/distribution/src/main/assembly/bin.xml
index ed08150..04e9898 100644
--- a/products/autoscaler/modules/distribution/src/main/assembly/bin.xml
+++ b/products/autoscaler/modules/distribution/src/main/assembly/bin.xml
@@ -172,13 +172,23 @@
</fileSet>
<fileSet>
- <directory>src/main/policies</directory>
- <outputDirectory>apache-stratos-autoscaler-${pom.version}/repository/deployment/server/policies</outputDirectory>
+ <directory>src/main/autoscale-policies</directory>
+ <outputDirectory>apache-stratos-autoscaler-${pom.version}/repository/deployment/server/autoscale-policies</outputDirectory>
<directoryMode>0755</directoryMode>
<includes>
<include>*.xml</include>
</includes>
</fileSet>
+
+ <fileSet>
+ <directory>src/main/deployment-policies</directory>
+ <outputDirectory>apache-stratos-autoscaler-${pom.version}/repository/deployment/server/deployment-policies</outputDirectory>
+ <directoryMode>0755</directoryMode>
+ <includes>
+ <include>*.xml</include>
+ </includes>
+ </fileSet>
+
</fileSets>
<dependencySets>
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/b0535f26/products/autoscaler/modules/distribution/src/main/autoscale-policies/economyPolicy.xml
----------------------------------------------------------------------
diff --git a/products/autoscaler/modules/distribution/src/main/autoscale-policies/economyPolicy.xml b/products/autoscaler/modules/distribution/src/main/autoscale-policies/economyPolicy.xml
new file mode 100644
index 0000000..1a3aad3
--- /dev/null
+++ b/products/autoscaler/modules/distribution/src/main/autoscale-policies/economyPolicy.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<deploymentPolicy id ="economy-deployment">
+ <partitionGroups>
+ <partitionGroup id="group1" >
+ <partitionAlgo>OneAfterAnother</partitionAlgo>
+ <partition id="partition1" >
+ <max>3</max>
+ <min>1</min>
+ </partition>
+ <partition id="partition2" >
+ <max>5</max>
+ <min>1</min>
+ </partition>
+ <partition id="partition3">
+ <max>20</max>
+ <min>1</min>
+ </partition>
+ </partitionGroup>
+ <partitionGroup id="group2" >
+ <partitionAlgo>RoundRobin</partitionAlgo>
+ <partition id="partition4" >
+ <max>3</max>
+ <min>1</min>
+ </partition>
+ <partition id="partition5" >
+ <max>5</max>
+ <min>1</min>
+ </partition>
+ <partition id="partition6">
+ <max>20</max>
+ <min>1</min>
+ </partition>
+ </partitionGroup>
+ </partitionGroups>
+</deploymentPolicy>
+
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/b0535f26/products/autoscaler/modules/distribution/src/main/deployment-policies/economy-deployment.xml
----------------------------------------------------------------------
diff --git a/products/autoscaler/modules/distribution/src/main/deployment-policies/economy-deployment.xml b/products/autoscaler/modules/distribution/src/main/deployment-policies/economy-deployment.xml
new file mode 100644
index 0000000..9a734fa
--- /dev/null
+++ b/products/autoscaler/modules/distribution/src/main/deployment-policies/economy-deployment.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<autoscalePolicy id="economyPolicy">
+ <loadThresholds>
+ <requestsInFlight>
+ <average value="6000" />
+ <gradient value="0" />
+ <secondDerivative value="0" />
+ <scaleDownMarginOfGradient value="1.0" />
+ <scaleDownMarginOfSecondDerivative value="0.2" />
+ </requestsInFlight>
+ <memoryConsumption>
+ <average value="6000" />
+ <gradient value="0" />
+ <secondDerivative value="0" />
+ <scaleDownMarginOfGradient value="1.0" />
+ <scaleDownMarginOfSecondDerivative value="0.2" />
+ </memoryConsumption>
+ <loadAverage>
+ <average value="6000" />
+ <gradient value="0" />
+ <secondDerivative value="0" />
+ <scaleDownMarginOfGradient value="1.0" />
+ <scaleDownMarginOfSecondDerivative value="0.2" />
+ </loadAverage>
+ </loadThresholds>
+</autoscalePolicy>
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/b0535f26/products/autoscaler/modules/distribution/src/main/policies/economyPolicy.xml
----------------------------------------------------------------------
diff --git a/products/autoscaler/modules/distribution/src/main/policies/economyPolicy.xml b/products/autoscaler/modules/distribution/src/main/policies/economyPolicy.xml
deleted file mode 100644
index 2a82964..0000000
--- a/products/autoscaler/modules/distribution/src/main/policies/economyPolicy.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<AutoscalePolicy id="economyPolicy">
- <LoadThresholds>
- <RequestsInFlight>
- <Average value="20" />
- <Gradient value="1" />
- <SecondDerivative value="0" />
- <ScaleDownMarginOfGradient value="1.0" />
- <ScaleDownMarginOfSecondDerivative value="0.2" />
- </RequestsInFlight>
- <MemoryConsumption>
- <Average value="20" />
- <Gradient value="1" />
- <SecondDerivative value="0" />
- <ScaleDownMarginOfGradient value="1.0" />
- <ScaleDownMarginOfSecondDerivative value="0.2" />
- </MemoryConsumption>
- <LoadAverage>
- <Average value="20" />
- <Gradient value="1" />
- <SecondDerivative value="0" />
- <ScaleDownMarginOfGradient value="1.0" />
- <ScaleDownMarginOfSecondDerivative value="0.2" />
- </LoadAverage>
- </LoadThresholds>
- <HAPolicy>
- <PartitionAlgo>one-after-another</PartitionAlgo>
- <Partitions>
- <Partition id="part1">
- <PartitionMax>3</PartitionMax>
- <PartitionMin>1</PartitionMin>
- </Partition>
- </Partitions>
- </HAPolicy>
-</AutoscalePolicy>