Implementing  https://issues.apache.org/jira/browse/STRATOS-1020


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

Branch: refs/heads/master
Commit: 82e80be8f570c0de38bbbbcb3ac51bccebcf05e4
Parents: ec53b9f
Author: Nirmal Fernando <[email protected]>
Authored: Wed Dec 3 11:58:01 2014 +0530
Committer: Nirmal Fernando <[email protected]>
Committed: Wed Dec 3 11:58:20 2014 +0530

----------------------------------------------------------------------
 .../autoscaler/api/AutoScalerServiceImpl.java   |    6 +-
 .../interfaces/AutoScalerServiceInterface.java  |    2 +-
 .../autoscaler/pojo/policy/PolicyManager.java   |   33 +-
 .../manager/client/AutoscalerServiceClient.java |    2 +-
 .../rest/endpoint/api/StratosApiV40Utils.java   |   11 +-
 .../rest/endpoint/api/StratosApiV41.java        |    4 +-
 .../rest/endpoint/api/StratosApiV41Utils.java   |   55 +-
 .../policy/deployment/DeploymentPolicy.java     |    2 -
 .../bean/util/converter/PojoConverter.java      |    2 -
 .../stratos/rest/endpoint/mock/MockContext.java |    2 +-
 .../src/main/resources/AutoScalerService.wsdl   | 1669 +++++++++---------
 11 files changed, 855 insertions(+), 933 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/82e80be8/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
index 91745d8..a84a412 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
@@ -111,8 +111,8 @@ public class AutoScalerServiceImpl implements 
AutoScalerServiceInterface {
 //    }
 
     @Override
-    public boolean addDeploymentPolicy(DeploymentPolicy deploymentPolicy) 
throws InvalidPolicyException {
-        boolean hasDeployed = 
PolicyManager.getInstance().deployDeploymentPolicy(deploymentPolicy);
+    public String addDeploymentPolicy(DeploymentPolicy deploymentPolicy) 
throws InvalidPolicyException {
+        String policyId = 
PolicyManager.getInstance().deployDeploymentPolicy(deploymentPolicy);
         //Need to start the application Monitor after validation of the 
deployment policies.
 
         //Check whether all the clusters are there
@@ -139,7 +139,7 @@ public class AutoScalerServiceImpl implements 
AutoScalerServiceInterface {
                     "Waiting for them to be created");
         }
 
-        return hasDeployed;
+        return policyId;
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/stratos/blob/82e80be8/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/interfaces/AutoScalerServiceInterface.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/interfaces/AutoScalerServiceInterface.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/interfaces/AutoScalerServiceInterface.java
index 69531b2..a531071 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/interfaces/AutoScalerServiceInterface.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/interfaces/AutoScalerServiceInterface.java
@@ -42,7 +42,7 @@ public interface AutoScalerServiceInterface {
 
     public DeploymentPolicy[] getAllDeploymentPolicies();
 
-    public boolean addDeploymentPolicy(DeploymentPolicy depPolicy) throws 
InvalidPolicyException;
+    public String addDeploymentPolicy(DeploymentPolicy depPolicy) throws 
InvalidPolicyException;
 
     public boolean updateDeploymentPolicy(DeploymentPolicy depPolicy) throws 
InvalidPolicyException;
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/82e80be8/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/PolicyManager.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/PolicyManager.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/PolicyManager.java
index ca9a4a7..ac05b55 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/PolicyManager.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/PolicyManager.java
@@ -21,6 +21,8 @@ package org.apache.stratos.autoscaler.pojo.policy;
 
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Random;
+import java.util.UUID;
 
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.logging.Log;
@@ -87,27 +89,14 @@ public class PolicyManager {
     }
 
     // Add the deployment policy to information model and persist.
-    public boolean deployDeploymentPolicy(DeploymentPolicy policy) throws 
InvalidPolicyException {
-        if(StringUtils.isEmpty(policy.getId())){
-            throw new AutoScalerException("Deploying policy id cannot be 
empty");
-        }
-        try {
-            if(log.isInfoEnabled()) {
-                log.info(String.format("Deploying deployment policy: [id] %s", 
policy.getId()));
-            }
-            fillPartitions(policy);
-        } catch (InvalidPartitionException e) {
-               log.error(e);
-            throw new InvalidPolicyException(String.format("Deployment policy 
is invalid: [id] %s", policy.getId()), e);
-        }
-
-        addDeploymentPolicyToInformationModel(policy);
+    public String deployDeploymentPolicy(DeploymentPolicy policy) throws 
InvalidPolicyException {
+        String policyId = addDeploymentPolicyToInformationModel(policy);
         RegistryManager.getInstance().persistDeploymentPolicy(policy);
 
         if (log.isInfoEnabled()) {
-            log.info(String.format("Deployment policy is deployed 
successfully: [id] %s", policy.getId()));
+            log.info(String.format("Deployment policy is deployed 
successfully: [id] %s", policyId));
         }
-        return true;
+        return policyId;
     }
 
     public boolean updateDeploymentPolicy(DeploymentPolicy policy) throws 
InvalidPolicyException {
@@ -223,18 +212,24 @@ public class PolicyManager {
     }
 
     // Add the deployment policy to As in memmory information model. Does not 
persist.
-    public void addDeploymentPolicyToInformationModel(DeploymentPolicy policy) 
throws InvalidPolicyException {
+    public String addDeploymentPolicyToInformationModel(DeploymentPolicy 
policy) throws InvalidPolicyException {
+        if (StringUtils.isEmpty(policy.getId())) {
+            // id = application id + random string
+            String id = policy.getApplicationId() + 
UUID.randomUUID().getLeastSignificantBits();
+            policy.setId(id);
+        }
         if (!deploymentPolicyListMap.containsKey(policy.getId())) {
             if (log.isDebugEnabled()) {
                 log.debug("Adding deployment policy: " + policy.getId());
             }
-//            
PartitionManager.getInstance().deployNewNetworkPartitions(policy);
             deploymentPolicyListMap.put(policy.getId(), policy);
         } else {
                String errMsg = "Specified deployment policy [" + 
policy.getId()+ "] already exists";
                log.error(errMsg);
             throw new InvalidPolicyException(errMsg);
         }
+        
+        return policy.getId();
     }
 
     public void updateDeploymentPolicyToInformationModel(DeploymentPolicy 
policy) throws InvalidPolicyException {

http://git-wip-us.apache.org/repos/asf/stratos/blob/82e80be8/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/client/AutoscalerServiceClient.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/client/AutoscalerServiceClient.java
 
b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/client/AutoscalerServiceClient.java
index 15fc690..c41b5fc 100644
--- 
a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/client/AutoscalerServiceClient.java
+++ 
b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/client/AutoscalerServiceClient.java
@@ -192,7 +192,7 @@ public class AutoscalerServiceClient {
         return deploymentPolicy;
     }
 
-    public boolean deployDeploymentPolicy(DeploymentPolicy deploymentPolicy) 
throws RemoteException,
+    public String deployDeploymentPolicy(DeploymentPolicy deploymentPolicy) 
throws RemoteException,
             AutoScalerServiceInvalidPolicyExceptionException {
 
         return stub.addDeploymentPolicy(deploymentPolicy);

http://git-wip-us.apache.org/repos/asf/stratos/blob/82e80be8/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV40Utils.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV40Utils.java
 
b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV40Utils.java
index 496e170..fb28910 100644
--- 
a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV40Utils.java
+++ 
b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV40Utils.java
@@ -230,17 +230,15 @@ public class StratosApiV40Utils {
             
org.apache.stratos.rest.endpoint.bean.autoscaler.policy.deployment.DeploymentPolicy
 deploymentPolicyBean)
             throws RestAPIException {
 
-        //log.info("***** " + cartridgeDefinitionBean.toString() + " *****");
+        String policyId = null;
 
         AutoscalerServiceClient autoscalerServiceClient = 
getAutoscalerServiceClient();
         if (autoscalerServiceClient != null) {
 
-            DeploymentPolicy deploymentPolicy =
-                    
PojoConverter.convetToASDeploymentPolicyPojo(deploymentPolicyBean);
+            DeploymentPolicy deploymentPolicy = 
PojoConverter.convetToASDeploymentPolicyPojo(deploymentPolicyBean);
 
             try {
-                autoscalerServiceClient
-                        .deployDeploymentPolicy(deploymentPolicy);
+                policyId = 
autoscalerServiceClient.deployDeploymentPolicy(deploymentPolicy);
             } catch (RemoteException e) {
                 log.error(e.getMessage(), e);
                 throw new RestAPIException(e.getMessage(), e);
@@ -253,8 +251,7 @@ public class StratosApiV40Utils {
         }
 
         StratosApiResponse stratosApiResponse = new StratosApiResponse();
-        stratosApiResponse.setMessage("Successfully deployed deployment policy 
definition with type "
-                + deploymentPolicyBean.id);
+        stratosApiResponse.setMessage("Successfully deployed deployment policy 
definition with type " + policyId);
         return stratosApiResponse;
     }
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/82e80be8/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41.java
 
b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41.java
index f50869f..036900a 100644
--- 
a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41.java
+++ 
b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41.java
@@ -320,8 +320,8 @@ public class StratosApiV41 extends AbstractApi {
     public Response deployDeploymentPolicyDefinition(DeploymentPolicy 
deploymentPolicy)
             throws RestAPIException {
 
-        StratosApiV41Utils.deployDeploymentPolicy(deploymentPolicy);
-        URI url = 
uriInfo.getAbsolutePathBuilder().path(deploymentPolicy.id).build();
+        String policyId = 
StratosApiV41Utils.deployDeploymentPolicy(deploymentPolicy);
+        URI url = uriInfo.getAbsolutePathBuilder().path(policyId).build();
         return Response.created(url).build();
     }
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/82e80be8/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java
 
b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java
index 401d701..67f7830 100644
--- 
a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java
+++ 
b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java
@@ -394,11 +394,16 @@ public class StratosApiV41Utils {
         }
     }
 
-    public static void deployDeploymentPolicy(
+    public static String deployDeploymentPolicy(
             
org.apache.stratos.rest.endpoint.bean.autoscaler.policy.deployment.DeploymentPolicy
 deploymentPolicyBean)
             throws RestAPIException {
 
-        log.info(String.format("Deploying deployment policy: [id] %s", 
deploymentPolicyBean.id));
+        String policyId = null;
+
+        if (log.isDebugEnabled()) {
+            log.debug("Starting to deploy a deployment policy of application: "
+                    + deploymentPolicyBean.applicationPolicy.applicationId);
+        }
 
         AutoscalerServiceClient autoscalerServiceClient = 
getAutoscalerServiceClient();
         if (autoscalerServiceClient != null) {
@@ -407,7 +412,7 @@ public class StratosApiV41Utils {
                     
PojoConverter.convetToASDeploymentPolicyPojo(deploymentPolicyBean);
 
             try {
-                
autoscalerServiceClient.deployDeploymentPolicy(deploymentPolicy);
+                policyId = 
autoscalerServiceClient.deployDeploymentPolicy(deploymentPolicy);
             } catch (RemoteException e) {
                 log.error(e.getMessage(), e);
                 throw new RestAPIException(e.getMessage(), e);
@@ -417,33 +422,37 @@ public class StratosApiV41Utils {
                 throw new RestAPIException(message, e);
             }
 
+            log.info(String.format("Deployed deployment policy: [id] %s", 
policyId));
         }
+        
+        return policyId;
     }
 
     public static void updateDeploymentPolicy(
             
org.apache.stratos.rest.endpoint.bean.autoscaler.policy.deployment.DeploymentPolicy
 deploymentPolicyBean)
             throws RestAPIException {
 
-        log.info(String.format("Updating deployment policy: [id] %s", 
deploymentPolicyBean.id));
-
-        AutoscalerServiceClient autoscalerServiceClient = 
getAutoscalerServiceClient();
-        if (autoscalerServiceClient != null) {
-
-            
org.apache.stratos.autoscaler.stub.deployment.policy.DeploymentPolicy 
deploymentPolicy =
-                    
PojoConverter.convetToASDeploymentPolicyPojo(deploymentPolicyBean);
-
-
-            try {
-                
autoscalerServiceClient.updateDeploymentPolicy(deploymentPolicy);
-            } catch (RemoteException e) {
-                log.error(e.getMessage(), e);
-                throw new RestAPIException(e.getMessage(), e);
-            } catch (AutoScalerServiceInvalidPolicyExceptionException e) {
-                String message = 
e.getFaultMessage().getInvalidPolicyException().getMessage();
-                log.error(message, e);
-                throw new RestAPIException(message, e);
-            }
-        }
+        //FIXME we do not have any use-case now?? - Nirmal
+//        log.info(String.format("Updating deployment policy: [id] %s", 
deploymentPolicyBean.id));
+//
+//        AutoscalerServiceClient autoscalerServiceClient = 
getAutoscalerServiceClient();
+//        if (autoscalerServiceClient != null) {
+//
+//            
org.apache.stratos.autoscaler.stub.deployment.policy.DeploymentPolicy 
deploymentPolicy =
+//                    
PojoConverter.convetToASDeploymentPolicyPojo(deploymentPolicyBean);
+//
+//
+//            try {
+//                
autoscalerServiceClient.updateDeploymentPolicy(deploymentPolicy);
+//            } catch (RemoteException e) {
+//                log.error(e.getMessage(), e);
+//                throw new RestAPIException(e.getMessage(), e);
+//            } catch (AutoScalerServiceInvalidPolicyExceptionException e) {
+//                String message = 
e.getFaultMessage().getInvalidPolicyException().getMessage();
+//                log.error(message, e);
+//                throw new RestAPIException(message, e);
+//            }
+//        }
     }
 
     private static CloudControllerServiceClient 
getCloudControllerServiceClient() throws RestAPIException {

http://git-wip-us.apache.org/repos/asf/stratos/blob/82e80be8/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/autoscaler/policy/deployment/DeploymentPolicy.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/autoscaler/policy/deployment/DeploymentPolicy.java
 
b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/autoscaler/policy/deployment/DeploymentPolicy.java
index c16671d..9b5c70f 100644
--- 
a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/autoscaler/policy/deployment/DeploymentPolicy.java
+++ 
b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/autoscaler/policy/deployment/DeploymentPolicy.java
@@ -29,8 +29,6 @@ import java.util.List;
 @XmlRootElement
 public class DeploymentPolicy {
 
-    public String id;
-    
     public String description;
     
     public boolean isPublic;

http://git-wip-us.apache.org/repos/asf/stratos/blob/82e80be8/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/converter/PojoConverter.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/converter/PojoConverter.java
 
b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/converter/PojoConverter.java
index 29be626..75dea28 100644
--- 
a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/converter/PojoConverter.java
+++ 
b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/converter/PojoConverter.java
@@ -378,7 +378,6 @@ public class PojoConverter {
         org.apache.stratos.autoscaler.stub.deployment.policy.DeploymentPolicy 
deploymentPolicy =
                 new 
org.apache.stratos.autoscaler.stub.deployment.policy.DeploymentPolicy();
 
-        deploymentPolicy.setId(deploymentPolicyBean.id);
         deploymentPolicy.setDescription(deploymentPolicyBean.description);
         deploymentPolicy.setIsPublic(deploymentPolicyBean.isPublic);
         if (deploymentPolicyBean.applicationPolicy != null
@@ -724,7 +723,6 @@ public class PojoConverter {
             return deploymentPolicyBean;
         }
 
-        deploymentPolicyBean.id = deploymentPolicy.getId();
         deploymentPolicyBean.description = deploymentPolicy.getDescription();
         deploymentPolicyBean.isPublic = deploymentPolicy.getIsPublic();
 //TODO populate the Network partition based on new policy structure

http://git-wip-us.apache.org/repos/asf/stratos/blob/82e80be8/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/mock/MockContext.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/mock/MockContext.java
 
b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/mock/MockContext.java
index 19c4d14..7270371 100644
--- 
a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/mock/MockContext.java
+++ 
b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/mock/MockContext.java
@@ -570,7 +570,7 @@ public class MockContext {
                }
        }
        
-       policies.put(deploymentPolicy.id,deploymentPolicy);
+       
policies.put(deploymentPolicy.applicationPolicy.applicationId+UUID.randomUUID().getLeastSignificantBits(),deploymentPolicy);
         StratosApiResponse stratosApiResponse = new StratosApiResponse();
         stratosApiResponse.setMessage("Successfully deployed deployment policy 
definition");
         return stratosApiResponse;

Reply via email to