You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by ni...@apache.org on 2014/10/12 15:56:08 UTC
[4/4] git commit: Introducing a new REST API to update subscription
properties.
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 <ni...@gmail.com>
Authored: Sun Oct 12 19:25:27 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
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();
}
+
}