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 2014/10/24 15:49:35 UTC
[2/2] git commit: Adding update autoscaling/deployment policy methods
to the REST API
Adding update autoscaling/deployment policy methods to the REST API
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/62c70567
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/62c70567
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/62c70567
Branch: refs/heads/master
Commit: 62c7056788d4fde8eb22683038ba58e7c21652e2
Parents: db94b09
Author: Imesh Gunaratne <im...@apache.org>
Authored: Fri Oct 24 19:19:23 2014 +0530
Committer: Imesh Gunaratne <im...@apache.org>
Committed: Fri Oct 24 19:19:23 2014 +0530
----------------------------------------------------------------------
.../manager/client/AutoscalerServiceClient.java | 12 +
.../policy/deployment/DeploymentPolicy.java | 50 +-
.../bean/util/converter/PojoConverter.java | 18 +-
.../stratos/rest/endpoint/mock/MockContext.java | 14 +-
.../rest/endpoint/services/ServiceUtils.java | 57 +-
.../rest/endpoint/services/StratosAdmin.java | 30 +-
.../src/main/resources/AutoScalerService.wsdl | 1554 ++++++++++--------
7 files changed, 986 insertions(+), 749 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/62c70567/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 cd35075..c1f0df8 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
@@ -189,11 +189,23 @@ public class AutoscalerServiceClient {
}
+ public boolean updateDeploymentPolicy(DeploymentPolicy deploymentPolicy) throws RemoteException,
+ AutoScalerServiceInvalidPolicyExceptionException {
+
+ return stub.updateDeploymentPolicy(deploymentPolicy);
+
+ }
+
public boolean deployAutoscalingPolicy(AutoscalePolicy autoScalePolicy) throws RemoteException,
AutoScalerServiceInvalidPolicyExceptionException {
return stub.addAutoScalingPolicy(autoScalePolicy);
+ }
+
+ public boolean updateAutoscalingPolicy(AutoscalePolicy autoScalePolicy) throws RemoteException,
+ AutoScalerServiceInvalidPolicyExceptionException {
+ return stub.updateAutoScalingPolicy(autoScalePolicy);
}
public boolean deployPartition(Partition partition) throws RemoteException,
http://git-wip-us.apache.org/repos/asf/stratos/blob/62c70567/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 d9bde05..419d295 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,15 +29,55 @@ import java.util.List;
@XmlRootElement
public class DeploymentPolicy {
- public String id;
+ private String id;
- public String description;
+ private String description;
- public boolean isPublic;
+ private boolean isPublic;
//partition groups
- public List<PartitionGroup> partitionGroup;
+ private List<PartitionGroup> partitionGroup;
//partitions
- public List<Partition> partition;
+ private List<Partition> partition;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public boolean isPublic() {
+ return isPublic;
+ }
+
+ public void setPublic(boolean isPublic) {
+ this.isPublic = isPublic;
+ }
+
+ public List<PartitionGroup> getPartitionGroup() {
+ return partitionGroup;
+ }
+
+ public void setPartitionGroup(List<PartitionGroup> partitionGroup) {
+ this.partitionGroup = partitionGroup;
+ }
+
+ public List<Partition> getPartition() {
+ return partition;
+ }
+
+ public void setPartition(List<Partition> partition) {
+ this.partition = partition;
+ }
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/62c70567/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 1f37880..40cc88d 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
@@ -335,11 +335,11 @@ 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.partitionGroup != null && !deploymentPolicyBean.partitionGroup.isEmpty()) {
- deploymentPolicy.setPartitionGroups(convertToCCPartitionGroup(deploymentPolicyBean.partitionGroup));
+ deploymentPolicy.setId(deploymentPolicyBean.getId());
+ deploymentPolicy.setDescription(deploymentPolicyBean.getDescription());
+ deploymentPolicy.setIsPublic(deploymentPolicyBean.isPublic());
+ if(deploymentPolicyBean.getPartitionGroup() != null && !deploymentPolicyBean.getPartitionGroup().isEmpty()) {
+ deploymentPolicy.setPartitionGroups(convertToCCPartitionGroup(deploymentPolicyBean.getPartitionGroup()));
}
return deploymentPolicy;
@@ -606,12 +606,12 @@ public class PojoConverter {
return deploymentPolicyBean;
}
- deploymentPolicyBean.id = deploymentPolicy.getId();
- deploymentPolicyBean.description = deploymentPolicy.getDescription();
- deploymentPolicyBean.isPublic = deploymentPolicy.getIsPublic();
+ deploymentPolicyBean.setId(deploymentPolicy.getId());
+ deploymentPolicyBean.setDescription(deploymentPolicy.getDescription());
+ deploymentPolicyBean.setPublic(deploymentPolicy.getIsPublic());
if (deploymentPolicy.getPartitionGroups() != null && deploymentPolicy.getPartitionGroups().length > 0) {
- deploymentPolicyBean.partitionGroup = Arrays.asList(populatePartitionGroupPojos(deploymentPolicy.getPartitionGroups()));
+ deploymentPolicyBean.setPartitionGroup(Arrays.asList(populatePartitionGroupPojos(deploymentPolicy.getPartitionGroups())));
}
/*if (deploymentPolicy.getAllPartitions() != null && deploymentPolicy.getAllPartitions().length > 0) {
http://git-wip-us.apache.org/repos/asf/stratos/blob/62c70567/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 d8d75cc..648e4cd 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
@@ -551,7 +551,7 @@ public class MockContext {
int tenantId = getTenantId();
Map<String,DeploymentPolicy> policies;
- if(!deploymentPolicy.isPublic){
+ if(!deploymentPolicy.isPublic()){
if (deploymentPolicyMap.containsKey(tenantId)){
policies = deploymentPolicyMap.get(tenantId);
}
@@ -570,7 +570,7 @@ public class MockContext {
}
}
- policies.put(deploymentPolicy.id,deploymentPolicy);
+ policies.put(deploymentPolicy.getId(),deploymentPolicy);
StratosAdminResponse stratosAdminResponse = new StratosAdminResponse();
stratosAdminResponse.setMessage("Successfully deployed deployment policy definition");
return stratosAdminResponse;
@@ -622,14 +622,14 @@ public class MockContext {
if(!(deploymentPolicyMap.get(PUBLIC_DEFINITION)).containsKey(deploymentPolicyId)){
throw new RestAPIException(Status.NO_CONTENT,"There is no deployment policy with id: " + deploymentPolicyId);
}
- return (deploymentPolicyMap.get(PUBLIC_DEFINITION)).get(deploymentPolicyId).partition.toArray(new Partition[0]);
+ return (deploymentPolicyMap.get(PUBLIC_DEFINITION)).get(deploymentPolicyId).getPartition().toArray(new Partition[0]);
}
}
if(!(deploymentPolicyMap.get(tenantId)).containsKey(deploymentPolicyId)){
throw new RestAPIException(Status.NO_CONTENT,"There is no deployment policy with id: " + deploymentPolicyId);
}
- return (deploymentPolicyMap.get(tenantId)).get(deploymentPolicyId).partition.toArray(new Partition[0]);
+ return (deploymentPolicyMap.get(tenantId)).get(deploymentPolicyId).getPartition().toArray(new Partition[0]);
}
public PartitionGroup[] getPartitionGroups(String deploymentPolicyId) throws RestAPIException{
@@ -642,14 +642,14 @@ public class MockContext {
if(!(deploymentPolicyMap.get(PUBLIC_DEFINITION)).containsKey(deploymentPolicyId)){
throw new RestAPIException(Status.NO_CONTENT,"There is no deployment policy with id: " + deploymentPolicyId);
}
- return (deploymentPolicyMap.get(PUBLIC_DEFINITION)).get(deploymentPolicyId).partitionGroup.toArray(new PartitionGroup[0]);
+ return (deploymentPolicyMap.get(PUBLIC_DEFINITION)).get(deploymentPolicyId).getPartitionGroup().toArray(new PartitionGroup[0]);
}
}
if(!(deploymentPolicyMap.get(tenantId)).containsKey(deploymentPolicyId)){
throw new RestAPIException(Status.NO_CONTENT,"There is no deployment policy with id: " + deploymentPolicyId);
}
- return (deploymentPolicyMap.get(tenantId)).get(deploymentPolicyId).partitionGroup.toArray(new PartitionGroup[0]);
+ return (deploymentPolicyMap.get(tenantId)).get(deploymentPolicyId).getPartitionGroup().toArray(new PartitionGroup[0]);
}
public AutoscalePolicy[] getAutoscalePolicies() throws RestAPIException{
@@ -811,7 +811,7 @@ public class MockContext {
}
Partition[] partitions = null;
- for(PartitionGroup partitionGroup : deploymentPolicy.partitionGroup){
+ for(PartitionGroup partitionGroup : deploymentPolicy.getPartitionGroup()){
if(partitionGroup.id.equals(partitionGroupId)){
partitions = partitionGroup.partition.toArray(new Partition[0]);
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/62c70567/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java
index 14c5331..da0adcc 100644
--- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java
+++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java
@@ -25,9 +25,7 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.stratos.autoscaler.stub.*;
import org.apache.stratos.autoscaler.stub.deployment.policy.DeploymentPolicy;
-import org.apache.stratos.cloud.controller.stub.CloudControllerServiceInvalidCartridgeDefinitionExceptionException;
import org.apache.stratos.cloud.controller.stub.CloudControllerServiceInvalidCartridgeTypeExceptionException;
-import org.apache.stratos.cloud.controller.stub.CloudControllerServiceInvalidIaasProviderExceptionException;
import org.apache.stratos.cloud.controller.stub.pojo.CartridgeConfig;
import org.apache.stratos.cloud.controller.stub.pojo.CartridgeInfo;
import org.apache.stratos.cloud.controller.stub.pojo.Property;
@@ -171,7 +169,7 @@ public class ServiceUtils {
public static void deployAutoscalingPolicy(AutoscalePolicy autoscalePolicyBean) throws RestAPIException {
- //log.info("***** " + cartridgeDefinitionBean.toString() + " *****");
+ log.info(String.format("Deploying autoscaling policy: %s", autoscalePolicyBean.getDescription()));
AutoscalerServiceClient autoscalerServiceClient = getAutoscalerServiceClient();
if (autoscalerServiceClient != null) {
@@ -191,7 +189,29 @@ public class ServiceUtils {
log.error(message, e);
throw new RestAPIException(message, e);
}
+ }
+ }
+
+ public static void updateAutoscalingPolicy(AutoscalePolicy autoscalePolicyBean) throws RestAPIException {
+
+ log.info(String.format("Updating autoscaling policy: %s", autoscalePolicyBean.getDescription()));
+
+ AutoscalerServiceClient autoscalerServiceClient = getAutoscalerServiceClient();
+ if (autoscalerServiceClient != null) {
+
+ org.apache.stratos.autoscaler.stub.policy.model.AutoscalePolicy autoscalePolicy = PojoConverter.
+ convertToCCAutoscalerPojo(autoscalePolicyBean);
+ try {
+ autoscalerServiceClient.updateAutoscalingPolicy(autoscalePolicy);
+ } 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);
+ }
}
}
@@ -199,7 +219,7 @@ public class ServiceUtils {
org.apache.stratos.rest.endpoint.bean.autoscaler.policy.deployment.DeploymentPolicy deploymentPolicyBean)
throws RestAPIException {
- //log.info("***** " + cartridgeDefinitionBean.toString() + " *****");
+ log.info(String.format("Deploying deployment policy: %s", deploymentPolicyBean.getDescription()));
AutoscalerServiceClient autoscalerServiceClient = getAutoscalerServiceClient();
if (autoscalerServiceClient != null) {
@@ -208,8 +228,7 @@ public class ServiceUtils {
PojoConverter.convetToCCDeploymentPolicyPojo(deploymentPolicyBean);
try {
- autoscalerServiceClient
- .deployDeploymentPolicy(deploymentPolicy);
+ autoscalerServiceClient.deployDeploymentPolicy(deploymentPolicy);
} catch (RemoteException e) {
log.error(e.getMessage(), e);
throw new RestAPIException(e.getMessage(), e);
@@ -222,6 +241,32 @@ public class ServiceUtils {
}
}
+ public static void updateDeploymentPolicy(
+ org.apache.stratos.rest.endpoint.bean.autoscaler.policy.deployment.DeploymentPolicy deploymentPolicyBean)
+ throws RestAPIException {
+
+ log.info(String.format("Updating deployment policy: %s", deploymentPolicyBean.getDescription()));
+
+ AutoscalerServiceClient autoscalerServiceClient = getAutoscalerServiceClient();
+ if (autoscalerServiceClient != null) {
+
+ org.apache.stratos.autoscaler.stub.deployment.policy.DeploymentPolicy deploymentPolicy =
+ PojoConverter.convetToCCDeploymentPolicyPojo(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 {
try {
http://git-wip-us.apache.org/repos/asf/stratos/blob/62c70567/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/StratosAdmin.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/StratosAdmin.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/StratosAdmin.java
index bb9c1a3..2157b58 100644
--- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/StratosAdmin.java
+++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/StratosAdmin.java
@@ -30,7 +30,6 @@ import org.apache.stratos.manager.dto.SubscriptionInfo;
import org.apache.stratos.manager.exception.DomainMappingExistsException;
import org.apache.stratos.manager.exception.ServiceDoesNotExistException;
import org.apache.stratos.manager.subscription.CartridgeSubscription;
-import org.apache.stratos.manager.subscription.SubscriptionDomain;
import org.apache.stratos.manager.user.mgt.StratosUserManager;
import org.apache.stratos.manager.user.mgt.beans.UserInfoBean;
import org.apache.stratos.manager.user.mgt.exception.UserManagerException;
@@ -50,7 +49,6 @@ import org.apache.stratos.rest.endpoint.bean.kubernetes.KubernetesGroup;
import org.apache.stratos.rest.endpoint.bean.kubernetes.KubernetesHost;
import org.apache.stratos.rest.endpoint.bean.kubernetes.KubernetesMaster;
import org.apache.stratos.rest.endpoint.bean.repositoryNotificationInfoBean.Payload;
-import org.apache.stratos.rest.endpoint.bean.repositoryNotificationInfoBean.Repository;
import org.apache.stratos.rest.endpoint.bean.subscription.domain.SubscriptionDomainBean;
import org.apache.stratos.rest.endpoint.bean.topology.Cluster;
import org.apache.stratos.rest.endpoint.exception.RestAPIException;
@@ -179,6 +177,19 @@ public class StratosAdmin extends AbstractAdmin {
return Response.created(url).build();
}
+ @PUT
+ @Path("/policy/autoscale")
+ @Produces("application/json")
+ @Consumes("application/json")
+ @AuthorizationAction("/permission/admin/manage/add/autoscalingPolicy")
+ public Response updateAutoscalingPolicyDefintion(AutoscalePolicy autoscalePolicy)
+ throws RestAPIException {
+
+ ServiceUtils.updateAutoscalingPolicy(autoscalePolicy);
+ URI url = uriInfo.getAbsolutePathBuilder().path(autoscalePolicy.getId()).build();
+ return Response.ok(url).build();
+ }
+
@POST
@Path("/policy/deployment")
@Produces("application/json")
@@ -188,10 +199,23 @@ public class StratosAdmin extends AbstractAdmin {
throws RestAPIException {
ServiceUtils.deployDeploymentPolicy(deploymentPolicy);
- URI url = uriInfo.getAbsolutePathBuilder().path(deploymentPolicy.id).build();
+ URI url = uriInfo.getAbsolutePathBuilder().path(deploymentPolicy.getId()).build();
return Response.created(url).build();
}
+ @PUT
+ @Path("/policy/deployment")
+ @Produces("application/json")
+ @Consumes("application/json")
+ @AuthorizationAction("/permission/admin/manage/add/deploymentPolicy")
+ public Response updateDeploymentPolicyDefinition(DeploymentPolicy deploymentPolicy)
+ throws RestAPIException {
+
+ ServiceUtils.updateDeploymentPolicy(deploymentPolicy);
+ URI url = uriInfo.getAbsolutePathBuilder().path(deploymentPolicy.getId()).build();
+ return Response.ok(url).build();
+ }
+
@GET
@Path("/partition")
@Produces("application/json")