Introducing a new REST API to update subscription properties.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/ca4bd740 Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/ca4bd740 Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/ca4bd740 Branch: refs/heads/master Commit: ca4bd740c10d1b40866673d0c8296234ad4811ae Parents: c655f8e Author: Nirmal Fernando <[email protected]> Authored: Sun Oct 12 19:25:27 2014 +0530 Committer: Nirmal Fernando <[email protected]> Committed: Sun Oct 12 19:25:45 2014 +0530 ---------------------------------------------------------------------- .../manager/client/AutoscalerServiceClient.java | 5 +++++ .../model/TopologyClusterInformationModel.java | 10 +++++++++ .../rest/endpoint/services/ServiceUtils.java | 23 ++++++++++++++++++++ .../rest/endpoint/services/StratosAdmin.java | 13 +++++++++++ 4 files changed, 51 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/ca4bd740/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 321b095..8445095 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 @@ -31,6 +31,7 @@ import org.apache.stratos.autoscaler.stub.kubernetes.KubernetesHost; import org.apache.stratos.autoscaler.stub.kubernetes.KubernetesMaster; import org.apache.stratos.autoscaler.stub.policy.model.AutoscalePolicy; import org.apache.stratos.cloud.controller.stub.deployment.partition.Partition; +import org.apache.stratos.cloud.controller.stub.pojo.Properties; import org.apache.stratos.manager.internal.DataHolder; import org.apache.stratos.manager.utils.CartridgeConstants; @@ -263,4 +264,8 @@ public class AutoscalerServiceClient { AutoScalerServiceNonExistingKubernetesHostExceptionException { return stub.updateKubernetesHost(kubernetesHost); } + + public void updateClusterMonitor(String clusterId, Properties properties) throws RemoteException { + stub.updateClusterMonitor(clusterId, properties); + } } http://git-wip-us.apache.org/repos/asf/stratos/blob/ca4bd740/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/topology/model/TopologyClusterInformationModel.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/topology/model/TopologyClusterInformationModel.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/topology/model/TopologyClusterInformationModel.java index 2b73dff..b947b1c 100644 --- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/topology/model/TopologyClusterInformationModel.java +++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/topology/model/TopologyClusterInformationModel.java @@ -88,6 +88,16 @@ public class TopologyClusterInformationModel { return cluster; } + public Cluster getCluster (int tenantId, String subscriptionAlias) { + + String clusterId = dataInsertionNRetrievalMgr.getCartridgeSubscription(tenantId, subscriptionAlias).getClusterDomain(); + Cluster cluster = clusterIdToClusterMap.get(clusterId); + if(log.isDebugEnabled()) { + log.debug(" Found cluster ["+cluster+"] with id ["+clusterId+"] "); + } + return cluster; + } + public Cluster getCluster (String cartridgeType) { Service service; http://git-wip-us.apache.org/repos/asf/stratos/blob/ca4bd740/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 c582664..461a5f7 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 @@ -62,6 +62,7 @@ import org.apache.stratos.rest.endpoint.bean.autoscaler.partition.PartitionGroup import org.apache.stratos.rest.endpoint.bean.autoscaler.policy.autoscale.AutoscalePolicy; import org.apache.stratos.rest.endpoint.bean.cartridge.definition.CartridgeDefinitionBean; import org.apache.stratos.rest.endpoint.bean.cartridge.definition.PersistenceBean; +import org.apache.stratos.rest.endpoint.bean.cartridge.definition.PropertyBean; import org.apache.stratos.rest.endpoint.bean.cartridge.definition.ServiceDefinitionBean; import org.apache.stratos.rest.endpoint.bean.kubernetes.KubernetesGroup; import org.apache.stratos.rest.endpoint.bean.kubernetes.KubernetesHost; @@ -70,8 +71,10 @@ import org.apache.stratos.rest.endpoint.bean.repositoryNotificationInfoBean.Payl import org.apache.stratos.rest.endpoint.bean.subscription.domain.SubscriptionDomainBean; import org.apache.stratos.rest.endpoint.bean.util.converter.PojoConverter; import org.apache.stratos.rest.endpoint.exception.RestAPIException; + import javax.ws.rs.core.Response; import javax.ws.rs.core.Response.Status; + import java.rmi.RemoteException; import java.util.*; import java.util.regex.Pattern; @@ -1475,4 +1478,24 @@ public class ServiceUtils { } return false; } + + public static void updateSubscriptionProperties(ConfigurationContext context, String alias, List<PropertyBean> property) throws RestAPIException { + AutoscalerServiceClient autoscalerServiceClient = getAutoscalerServiceClient(); + if (autoscalerServiceClient != null) { + try { + Cluster cluster = TopologyClusterInformationModel.getInstance().getCluster(ApplicationManagementUtil.getTenantId(context) + , alias); + if (cluster == null) { + throw new RestAPIException("No matching cluster found for [alias] " + alias); + } + if (property != null) { + autoscalerServiceClient.updateClusterMonitor(cluster.getClusterId(), PojoConverter.getProperties(property)); + } + } catch(Exception e) { + log.error(e.getMessage(), e); + throw new RestAPIException(e.getMessage(), e); + } + } + + } } http://git-wip-us.apache.org/repos/asf/stratos/blob/ca4bd740/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 77f69c7..bb9c1a3 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 @@ -479,6 +479,18 @@ public class StratosAdmin extends AbstractAdmin { } return Response.ok().entity(cluster).build(); } + + @PUT + @Path("/subscriptions/{subscriptionAlias}/properties") + @Consumes("application/json") + @AuthorizationAction("/permission/admin/manage/add/subscription") + public Response updateSubscriptionProperties(@PathParam("subscriptionAlias") String alias, CartridgeInfoBean cartridgeInfoBean) throws RestAPIException { + if (cartridgeInfoBean == null) { + Response.notModified().build(); + } + ServiceUtils.updateSubscriptionProperties(getConfigContext(), alias, cartridgeInfoBean.getProperty()); + return Response.ok().build(); + } @POST @Path("/cartridge/unsubscribe") @@ -1384,4 +1396,5 @@ public class StratosAdmin extends AbstractAdmin { } return Response.noContent().build(); } + }
