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/11/30 10:19:48 UTC

[3/9] git commit: Commiting partition deployer

Commiting partition deployer


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

Branch: refs/heads/master
Commit: dca46e39ff818bea1d8c074ae36f18effab5ee89
Parents: 1747003
Author: Udara Liyanage <ud...@wso2.com>
Authored: Fri Nov 29 09:02:31 2013 -0500
Committer: Udara Liyanage <ud...@wso2.com>
Committed: Fri Nov 29 11:06:18 2013 -0500

----------------------------------------------------------------------
 .../org.apache.stratos.autoscaler/pom.xml       |  47 +-----
 .../stratos/autoscaler/ClusterContext.java      |  24 +---
 .../autoscaler/algorithm/OneAfterAnother.java   |   4 +-
 .../autoscaler/algorithm/RoundRobin.java        |   4 +-
 .../exception/InvalidPartitionException.java    |  40 ++++++
 .../partition/deployers/PartitionDeployer.java  | 103 +++++++++++++
 .../partition/deployers/PartitionReader.java    | 144 +++++++++++++++++++
 .../policy/InvalidPolicyException.java          |   4 +-
 .../autoscaler/util/AutoScalerConstants.java    |  30 ++++
 .../stratos/autoscaler/util/AutoscalerUtil.java |  12 +-
 .../src/main/resources/META-INF/component.xml   |   5 +
 .../messaging/domain/topology/Cluster.java      |  27 ++--
 .../messaging/domain/topology/Topology.java     |   4 +
 .../pom.xml                                     |  13 +-
 products/pom.xml                                |   4 +-
 15 files changed, 373 insertions(+), 92 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/dca46e39/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 b92fc94..7d898d7 100644
--- a/components/org.apache.stratos.autoscaler/pom.xml
+++ b/components/org.apache.stratos.autoscaler/pom.xml
@@ -36,15 +36,11 @@
 
 	<dependencies>
 		<dependency>
-			<groupId>org.drools</groupId>
-			<artifactId>drools-core</artifactId>
-			<version>${drools.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>org.drools</groupId>
-			<artifactId>drools-compiler</artifactId>
-			<version>${drools.version}</version>
-		</dependency>
+                        <groupId>org.drools</groupId>
+                        <artifactId>knowledge-api</artifactId>
+                        <version>${drools.version}</version>
+                </dependency>
+
 		<dependency>
 			<groupId>com.thoughtworks.xstream</groupId>
 			<artifactId>xstream</artifactId>
@@ -61,11 +57,6 @@
 			<version>3.3</version>
 		</dependency>
 		<dependency>
-			<groupId>org.drools</groupId>
-			<artifactId>drools-decisiontables</artifactId>
-			<version>${drools.version}</version>
-		</dependency>
-		<dependency>
 			<groupId>org.antlr</groupId>
 			<artifactId>antlr-runtime</artifactId>
 			<version>3.3</version>
@@ -76,21 +67,6 @@
 			<version>3.2.1</version>
 		</dependency>
 		<dependency>
-			<groupId>org.drools</groupId>
-			<artifactId>drools-jsr94</artifactId>
-			<version>${drools.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>org.drools</groupId>
-			<artifactId>knowledge-internal-api</artifactId>
-			<version>${drools.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>org.drools</groupId>
-			<artifactId>knowledge-api</artifactId>
-			<version>${drools.version}</version>
-		</dependency>
-		<dependency>
 			<groupId>org.mvel</groupId>
 			<artifactId>mvel2</artifactId>
 			<version>2.1.3.Final</version>
@@ -106,16 +82,6 @@
 			<version>1.6.4</version>
 		</dependency-->
 		<dependency>
-			<groupId>org.drools</groupId>
-			<artifactId>drools-verifier</artifactId>
-			<version>${drools.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>org.drools</groupId>
-			<artifactId>drools-templates</artifactId>
-			<version>${drools.version}</version>
-		</dependency>
-		<dependency>
 			<groupId>org.eclipse.jdt.core.compiler</groupId>
 			<artifactId>ecj</artifactId>
 			<version>3.5.1</version>
@@ -185,8 +151,9 @@
 							*;resolution:=optional
                         </Import-Package>
 						<DynamicImport-Package>*</DynamicImport-Package>
-						<Axis2Deployer>AutoscalerPolicyDeployer</Axis2Deployer>
 						<Axis2Deployer>DeploymentPolicyDeployer</Axis2Deployer>
+						<Axis2Deployer>AutoscalerPolicyDeployer</Axis2Deployer>
+						<Axis2Deployer>PartitionDeployer</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/dca46e39/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/ClusterContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/ClusterContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/ClusterContext.java
index 10e09f7..c28a237 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/ClusterContext.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/ClusterContext.java
@@ -65,12 +65,10 @@ public class ClusterContext {
     }
 
     public Properties getProperties() {
-
         return properties;
     }
 
     public void setProperties(Properties properties) {
-
         this.properties = properties;
     }
 
@@ -79,27 +77,22 @@ public class ClusterContext {
     }
 
     public void setAverageRequestsInFlight(float averageRequestsInFlight) {
-
         this.averageRequestsInFlight = averageRequestsInFlight;
     }
 
     public float getRequestsInFlightSecondDerivative() {
-
         return requestsInFlightSecondDerivative;
     }
 
     public void setRequestsInFlightSecondDerivative(float requestsInFlightSecondDerivative) {
-
         this.requestsInFlightSecondDerivative = requestsInFlightSecondDerivative;
     }
 
     public float getRequestsInFlightGradient() {
-
         return requestsInFlightGradient;
     }
 
     public void setRequestsInFlightGradient(float requestsInFlightGradient) {
-
         this.requestsInFlightGradient = requestsInFlightGradient;
     }
 
@@ -108,7 +101,6 @@ public class ClusterContext {
      * @param memberContext will be added to map
      */
     public void addMemberContext(MemberContext memberContext) {
-
         memberContextMap.put(memberContext.getMemberId(), memberContext);
     }
 
@@ -117,27 +109,23 @@ public class ClusterContext {
      * @param memberId
      */
     public void removeMemberContext(String memberId){
-
         memberContextMap.remove(memberId);
     }
 
     public void increaseMemberCount(int count){
         memberCount += count;
-
     }
+    
     public void decreaseMemberCount(){
         memberCount --;
-
     }
 
-   public void increaseMemberCountInPartitionBy(String partitionId, int count){
-
-        partitionCountMap.put(partitionId, getMemberCount(partitionId) + count);
+    public void increaseMemberCountInPartitionBy(String partitionId, int count){
+        partitionCountMap.put(partitionId, getMemberCountInPartition(partitionId) + count);
     }
 
     public void decreaseMemberCountInPartitionBy(String partitionId, int count){
-
-        partitionCountMap.put(partitionId, getMemberCount(partitionId) - count);
+        partitionCountMap.put(partitionId, getMemberCountInPartition(partitionId) - count);
     }
 
     public void addPartitionCount(String partitionId, int count){    	
@@ -145,7 +133,6 @@ public class ClusterContext {
     }
 
     public void removePartitionCount(String partitionId){
-
         partitionCountMap.remove(partitionId);
     }
 
@@ -153,7 +140,7 @@ public class ClusterContext {
         return partitionCountMap.containsKey(partitionId);
     }
 
-    public int getMemberCount(String partitionId){
+    public int getMemberCountInPartition(String partitionId){
         if(partitionCountMap.containsKey(partitionId)) {
             return partitionCountMap.get(partitionId);
         }
@@ -161,7 +148,6 @@ public class ClusterContext {
     }
 
     public void setMemberContextMap(Map<String, MemberContext> memberContextMap) {
-
         this.memberContextMap = memberContextMap;
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/dca46e39/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/OneAfterAnother.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/OneAfterAnother.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/OneAfterAnother.java
index 3c06c13..71f3180 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/OneAfterAnother.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/OneAfterAnother.java
@@ -52,7 +52,7 @@ public class OneAfterAnother implements AutoscaleAlgorithm {
     			clusterContext.addPartitionCount(currentPartitionId, 0);
     		}
     		
-    		 if(clusterContext.getMemberCount(currentPartitionId) < currentPartition.getPartitionMembersMax()){
+    		 if(clusterContext.getMemberCountInPartition(currentPartitionId) < currentPartition.getPartitionMembersMax()){
  	        	// current partition is free    	        	
  	        	clusterContext.increaseMemberCountInPartitionBy(currentPartitionId, 1);
  	        	if(log.isDebugEnabled()) 	        		
@@ -91,7 +91,7 @@ public class OneAfterAnother implements AutoscaleAlgorithm {
 	        String currentPartitionId =  currentPartition.getId();
 	        	            
 	        // has more than minimum instances.
-	        if(clusterContext.getMemberCount(currentPartitionId) > currentPartition.getPartitionMembersMin()){
+	        if(clusterContext.getMemberCountInPartition(currentPartitionId) > currentPartition.getPartitionMembersMin()){
 	        	// current partition is free    	        	
 	        	clusterContext.decreaseMemberCountInPartitionBy(currentPartitionId, 1);
 	        	if(log.isDebugEnabled())

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/dca46e39/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/RoundRobin.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/RoundRobin.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/RoundRobin.java
index d75f11a..f925b47 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/RoundRobin.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithm/RoundRobin.java
@@ -55,7 +55,7 @@ public class RoundRobin implements AutoscaleAlgorithm{
 	        	if(!clusterContext.partitionCountExists(currentPartitionId))    	        		
 	        		AutoscalerContext.getInstance().getClusterContext(clusterId).addPartitionCount(currentPartitionId, 0);
 	        	
-    	        if(clusterContext.getMemberCount(currentPartitionId) < currentPartition.getPartitionMembersMax()){
+    	        if(clusterContext.getMemberCountInPartition(currentPartitionId) < currentPartition.getPartitionMembersMax()){
     	        	// current partition is free    	        	
     	        	clusterContext.increaseMemberCountInPartitionBy(currentPartitionId, 1);
     	        	if(log.isDebugEnabled())
@@ -102,7 +102,7 @@ public class RoundRobin implements AutoscaleAlgorithm{
     	        if(!clusterContext.partitionCountExists(currentPartitionId))    	        		
 	        		AutoscalerContext.getInstance().getClusterContext(clusterId).addPartitionCount(currentPartitionId, 0);
     	        // has more than minimum instances.
-    	        if(clusterContext.getMemberCount(currentPartitionId) > currentPartition.getPartitionMembersMin()){
+    	        if(clusterContext.getMemberCountInPartition(currentPartitionId) > currentPartition.getPartitionMembersMin()){
     	        	// current partition is free    	        	
     	        	clusterContext.decreaseMemberCountInPartitionBy(currentPartitionId, 1);
     	        	if(log.isDebugEnabled())

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/dca46e39/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/exception/InvalidPartitionException.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/exception/InvalidPartitionException.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/exception/InvalidPartitionException.java
new file mode 100644
index 0000000..c02824d
--- /dev/null
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/exception/InvalidPartitionException.java
@@ -0,0 +1,40 @@
+/*
+ * 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.exception;
+
+public class InvalidPartitionException extends Exception {
+
+	private static final long serialVersionUID = -4914522749282514366L;
+	
+	public InvalidPartitionException(String message) {
+		super(message);
+	}
+	
+	public InvalidPartitionException(String message,Throwable e) {
+		super(message,e);
+	}
+	
+	public InvalidPartitionException(Throwable e) {
+		super(e);
+	}
+	
+	
+	
+}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/dca46e39/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
new file mode 100644
index 0000000..6bba10e
--- /dev/null
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/deployers/PartitionDeployer.java
@@ -0,0 +1,103 @@
+/*
+ * 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.partition.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;
+
+/**
+ * 
+ * The Axis2 deployer class for party definitions definitions.
+ */
+public class PartitionDeployer extends AbstractDeployer {
+	
+	 private static final Log log = LogFactory.getLog(PartitionDeployer.class);
+	 
+	 private static String fileExt="xml"; //default
+	 private static String deployDirectory=null;
+
+	@Override
+	public void init(ConfigurationContext context) {
+		System.out.println("********Deploying init");
+		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 partitionFile = deploymentFileData.getFile();
+		log.debug("Started to deploy the policy: " + partitionFile);
+		System.out.println("********Deploying stated " + partitionFile);
+
+		try {
+			/*
+			PartitionReader reader = new PartitionReader(partitionFile);
+			
+			List<Partition> partitionList = reader.getPartitionList();
+			
+
+			log.info("Successfully deployed the partition specified at "
+					+ deploymentFileData.getAbsolutePath());
+			 */
+		} catch (Exception e) {
+			String msg = "Invalid partition artifact at " + deploymentFileData.getAbsolutePath();
+			// back up the file
+			File fileToBeRenamed = partitionFile;
+			fileToBeRenamed.renameTo(new File(deploymentFileData.getAbsolutePath() + ".back"));
+			log.error(msg, e);
+			throw new DeploymentException(msg, e);
+		}
+	}
+	
+	@Override
+	public void undeploy(String fileName) throws DeploymentException {
+		System.out.println("****************************************************");
+
+	}
+	
+	
+	
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/dca46e39/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/deployers/PartitionReader.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/deployers/PartitionReader.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/deployers/PartitionReader.java
new file mode 100644
index 0000000..a6c45f1
--- /dev/null
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/deployers/PartitionReader.java
@@ -0,0 +1,144 @@
+/*
+ * 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.partition.deployers;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNode;
+import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+import org.apache.axiom.om.xpath.AXIOMXPath;
+import org.apache.axis2.deployment.DeploymentException;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.autoscaler.exception.InvalidPartitionException;
+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.util.AutoScalerConstants;
+import org.jaxen.JaxenException;
+
+/**
+ * 
+ * The Reader class for Deployment-policy definitions.
+ */
+public class PartitionReader{
+	
+	private static final Log log = LogFactory.getLog(PartitionReader.class);
+	private static OMElement documentElement;
+	private File partitionFIle;
+	
+	public PartitionReader(File partitionFile){
+		this.partitionFIle = partitionFile;
+	}
+	
+	public List<Partition> getPartitionList() throws InvalidPartitionException{
+			this.parse(this.partitionFIle);
+			List<OMNode> partitionXMLNodes = getMatchingNodes("/partitions/partition");
+			Iterator<OMNode> itr = partitionXMLNodes.iterator();
+			List<Partition> partitonList = new ArrayList<Partition>();
+			while(itr.hasNext()){
+				 OMNode node  = itr.next();
+				 //System.out.println("node " + node);
+				 partitonList.add(this.getPartition(node));
+			 }
+		return partitonList;
+	}
+	
+	private  Partition getPartition(final OMNode item) {
+        Partition partition = null;
+        String id = null;
+
+        if (item.getType() == OMNode.ELEMENT_NODE) {
+
+            OMElement iaasElt = (OMElement) item;
+            Iterator<?> it =
+                    iaasElt.getChildrenWithName(new QName(AutoScalerConstants.ID_ELEMENT));
+
+            if (it.hasNext()) {
+                OMElement providerElt = (OMElement) it.next();
+                id = providerElt.getText();
+            }
+
+            if (it.hasNext()) {
+                log.warn( " contains more than one " + AutoScalerConstants.ID_ELEMENT +
+                        " elements!" + " Elements other than the first will be neglected.");
+            }
+
+            if (id == null) {
+                String msg ="Essential " + AutoScalerConstants.ID_ELEMENT + "element " +
+                                "has not specified in ";
+                // handleException(msg);
+            }
+            //boolean partitionExist = TopologyManager.getInstance().getTopology().partitionExist(id);
+            boolean partitionExist =false;
+            if(!partitionExist){
+            	partition = new Partition();
+                partition.setId(id);
+                //loadProperties(iaasElt, partition.getProperties());
+                //handle partition created event
+                //TopologyBuilder.handlePartitionCreated(partition);
+            }            
+        }
+        return partition;
+    }
+	
+	public void parse(File xmlSource) {
+
+        if (xmlSource.exists()) {
+            try {
+                documentElement = new StAXOMBuilder(xmlSource.getPath()).getDocumentElement();
+
+            } catch (Exception ex) {
+                String msg = "Error occurred when parsing the " + xmlSource.getPath() + ".";
+                //handleException(msg, ex);
+            }
+        } else {
+            String msg = "Configuration file cannot be found : " + xmlSource.getPath();
+            //handleException(msg);
+        }
+    }
+	/**
+     * @param xpath XPATH expression to be read.
+     * @return List matching OMNode list
+     */
+    @SuppressWarnings("unchecked")
+    public static List<OMNode> getMatchingNodes(final String xpath) {
+
+        AXIOMXPath axiomXpath;
+        List<OMNode> nodeList = null;
+        try {
+            axiomXpath = new AXIOMXPath(xpath);
+            nodeList = axiomXpath.selectNodes(documentElement);
+        } catch (JaxenException e) {
+            String msg = "Error occurred while reading the Xpath (" + xpath + ")";
+            //log.error(msg, e);
+            //throw new CloudControllerException(msg, e);
+        }
+
+        return nodeList;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/dca46e39/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/InvalidPolicyException.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/InvalidPolicyException.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/InvalidPolicyException.java
index 5df3b24..9b73179 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/InvalidPolicyException.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/InvalidPolicyException.java
@@ -21,8 +21,8 @@ package org.apache.stratos.autoscaler.policy;
 
 public class InvalidPolicyException extends Exception {
 
-	private static final long serialVersionUID = -4914522749282514366L;
-	
+	private static final long serialVersionUID = 1L;
+
 	public InvalidPolicyException(String message) {
 		super(message);
 	}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/dca46e39/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
new file mode 100644
index 0000000..b1fd9c5
--- /dev/null
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoScalerConstants.java
@@ -0,0 +1,30 @@
+/*
+ * 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;
+
+public final class AutoScalerConstants {
+
+    /**
+     * Constant values for Auto Scaler
+     */
+    public static final String ID_ELEMENT = "id";
+    public static final String PARTITION_ELEMENT = "partition";
+    public static final String PARTITIONS_ELEMENT = "partitions";
+       
+}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/dca46e39/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 16143f9..10c6a9e 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
@@ -60,19 +60,9 @@ public class AutoscalerUtil {
                 float gradientLimit = loadThresholds.getRequestsInFlight().getGradient();
                 float secondDerivative  = loadThresholds.getRequestsInFlight().getSecondDerivative();
 
-
                 clusterContext.setRequestsInFlightGradient(gradientLimit);
                 clusterContext.setRequestsInFlightSecondDerivative(secondDerivative);
-                clusterContext.setAverageRequestsInFlight(averageLimit);
-                DeploymentPolicy deploymentPolicy = PolicyManager.getInstance().getDeploymentPolicy(cluster.getDeploymentPolicyName());
-                if(deploymentPolicy!=null){
-                	for(PartitionGroup group :deploymentPolicy.getPartitionGroups()){
-                		for (Partition partition : group.getPartitions()) {
-                            clusterContext.addPartitionCount(partition.getId(), 0);
-                    }
-                	}
-                }
-                
+                clusterContext.setAverageRequestsInFlight(averageLimit);                                
              }
 
 			context.addClusterContext(clusterContext);

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/dca46e39/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 cbab84f..ba5fc5a 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
@@ -28,5 +28,10 @@
             <extension>xml</extension>
             <class>org.apache.stratos.autoscaler.policy.deployers.DeploymentPolicyDeployer</class>
         </deployer>
+        <deployer>
+            <directory>partitions</directory>
+            <extension>xml</extension>
+            <class>org.apache.stratos.autoscaler.partition.deployers.PartitionDeployer</class>
+        </deployer>
     </deployers>
 </component>

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/dca46e39/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Cluster.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Cluster.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Cluster.java
index a3fd9e8..209d1a4 100644
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Cluster.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Cluster.java
@@ -42,9 +42,12 @@ public class Cluster implements Serializable {
     private Region region;
     private Zone zone;
     
-    // Key: Member.memberId
+    // Key- Member.memberId, Value- Member
     private Map<String, Member> memberMap;
+    
     private Properties properties;
+    
+    // Key- IAAS node id, Value- Member
     private Map<String, Member> membertoNodeIdMap;
 
     public Cluster(String serviceName, String clusterId, String autoscalePolicyName) {
@@ -141,20 +144,20 @@ public class Cluster implements Serializable {
     }
 
     public void addMemberToIaasNodeId(Member member) {
-           membertoNodeIdMap.put(member.getIaasNodeId(), member);
-       }
+    	membertoNodeIdMap.put(member.getIaasNodeId(), member);
+    }
 
-       public void removeMemberFromIaasNodeId(Member member) {
-           membertoNodeIdMap.remove(member.getIaasNodeId());
-       }
+    public void removeMemberFromIaasNodeId(Member member) {
+    	membertoNodeIdMap.remove(member.getIaasNodeId());
+    }
 
-       public Member getMemberFromIaasNodeId(String iaasNodeId) {
-           return membertoNodeIdMap.get(iaasNodeId);
-       }
+    public Member getMemberFromIaasNodeId(String iaasNodeId) {
+    	return membertoNodeIdMap.get(iaasNodeId);
+    }
 
-       public boolean memberExistsFromIaasNodeId(String iaasNodeId) {
-           return this.membertoNodeIdMap.containsKey(iaasNodeId);
-       }
+    public boolean memberExistsFromIaasNodeId(String iaasNodeId) {
+    	return this.membertoNodeIdMap.containsKey(iaasNodeId);
+    }
 
 	public String getDeploymentPolicyName() {
 		return deploymentPolicyName;

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/dca46e39/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Topology.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Topology.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Topology.java
index 2b93188..5f5da7b 100644
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Topology.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Topology.java
@@ -78,6 +78,10 @@ public class Topology implements Serializable {
     public Partition getPartition(String id) {
         return  this.partitionMap.get(id);
     }
+    
+    public boolean partitionExist(String id) {
+        return  null != this.partitionMap.get(id);
+    }
 
     public void setPartitionMap(Map<String, Partition> partitionMap) {
         this.partitionMap = partitionMap;

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/dca46e39/features/autoscaler/org.apache.stratos.autoscaler.feature/pom.xml
----------------------------------------------------------------------
diff --git a/features/autoscaler/org.apache.stratos.autoscaler.feature/pom.xml b/features/autoscaler/org.apache.stratos.autoscaler.feature/pom.xml
index 7ed781f..270b3e2 100644
--- a/features/autoscaler/org.apache.stratos.autoscaler.feature/pom.xml
+++ b/features/autoscaler/org.apache.stratos.autoscaler.feature/pom.xml
@@ -40,6 +40,12 @@
             <artifactId>org.apache.stratos.autoscaler</artifactId>
             <version>${project.version}</version>
          </dependency>
+	<dependency>
+		<groupId>org.drools</groupId>
+		<artifactId>knowledge-api</artifactId>
+		<version>${drools.version}</version>
+	</dependency>
+
     </dependencies>
     <build>
         <plugins>
@@ -65,7 +71,8 @@
                             </adviceFile>
                             <bundles>
                                 <bundleDef>org.apache.stratos:org.apache.stratos.autoscaler:${project.version}</bundleDef>
-                                <bundleDef>org.apache.stratos:org.apache.stratos.cloud.controller.service.stub:${project.version}</bundleDef>
+				<bundleDef>org.apache.stratos:org.apache.stratos.cloud.controller.service.stub:${project.version}</bundleDef>
+                                <bundleDef>org.drools:knowledge-api:${drools.version}</bundleDef>
                             </bundles>
                             <importFeatures>
                                 <importFeatureDef>org.wso2.carbon.core.server:${wso2carbon.version}</importFeatureDef>
@@ -76,6 +83,8 @@
             </plugin>
         </plugins>
     </build>
-
+    <properties>
+	<drools.version>5.5.0.Final</drools.version>
+    </properties>
 </project>
 

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/dca46e39/products/pom.xml
----------------------------------------------------------------------
diff --git a/products/pom.xml b/products/pom.xml
index 5deef6d..b4700ec 100644
--- a/products/pom.xml
+++ b/products/pom.xml
@@ -36,11 +36,11 @@
 
     <modules>
         <module>autoscaler</module>
-        <module>cloud-controller</module>
+        <!--<module>cloud-controller</module>
         <module>load-balancer</module>
         <module>stratos-cli</module>
         <module>stratos-controller</module>
-        <module>cartridge-agent</module>
+        <module>cartridge-agent</module>-->
     </modules>
 </project>