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();
     }
+    
 }