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;
