Repository: stratos Updated Branches: refs/heads/docker-grouping-merge 46edc50db -> 08b7cac1a
Introducing new resource in REST API to get applications and removing un-subscribe resource Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/37ebabe3 Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/37ebabe3 Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/37ebabe3 Branch: refs/heads/docker-grouping-merge Commit: 37ebabe3e3660a5cdaf10091d5b7df1152f691fc Parents: f7b64ca Author: Imesh Gunaratne <[email protected]> Authored: Fri Nov 7 16:03:24 2014 +0530 Committer: Imesh Gunaratne <[email protected]> Committed: Fri Nov 7 16:03:24 2014 +0530 ---------------------------------------------------------------------- .../rest/endpoint/api/StratosApiV41.java | 24 ++++--- .../rest/endpoint/api/StratosApiV41Utils.java | 74 +++++++++++++------- 2 files changed, 62 insertions(+), 36 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/37ebabe3/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 a7702c1..21d5c61 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 @@ -407,6 +407,19 @@ public class StratosApiV41 extends AbstractApi { return Response.ok().entity(subscriptions).build(); } + @GET + @Path("/application/") + @Consumes("application/json") + @AuthorizationAction("/permission/protected/manage/monitor/tenants") + public Response getApplications() throws RestAPIException { + ApplicationBean[] applications = StratosApiV41Utils.getApplications(); + if(applications == null) { + return Response.status(Response.Status.NOT_FOUND).build(); + }else{ + return Response.ok().entity(applications).build(); + } + } + /** * This API resource provides information about the application denoted by the given appId. Details includes, * Application details, top level cluster details, details of the group and sub groups. @@ -421,7 +434,7 @@ public class StratosApiV41 extends AbstractApi { @Consumes("application/json") @AuthorizationAction("/permission/protected/manage/monitor/tenants") public Response getApplicationInfo(@PathParam("appId") String applicationId) throws RestAPIException { - ApplicationBean application = StratosApiV41Utils.getApplicationInfo(applicationId, getConfigContext()); + ApplicationBean application = StratosApiV41Utils.getApplicationInfo(applicationId); if(application == null) { return Response.status(Response.Status.NOT_FOUND).build(); }else{ @@ -621,15 +634,6 @@ public class StratosApiV41 extends AbstractApi { } @POST - @Path("/cartridge/unsubscribe") - @Consumes("application/json") - @AuthorizationAction("/permission/protected/manage/monitor/tenants") - public Response unsubscribe(String alias) throws RestAPIException { - StratosApiV41Utils.unsubscribe(alias, getTenantDomain()); - return Response.noContent().build(); - } - - @POST @Path("/tenant") @Consumes("application/json") @Produces("application/json") http://git-wip-us.apache.org/repos/asf/stratos/blob/37ebabe3/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 25008aa..c58c9b5 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 @@ -1492,7 +1492,25 @@ public class StratosApiV41Utils { log.info("Successfully undeployed the Service Group Definition with name " + serviceGroupDefinitionName); } - public static ApplicationBean getApplicationInfo(String applicationId, ConfigurationContext configContext) { + public static ApplicationBean[] getApplications() { + List<ApplicationBean> applicationBeanList = new ArrayList<ApplicationBean>(); + try { + ApplicationManager.acquireReadLockForApplications(); + ApplicationBean applicationBean; + for(Application application : ApplicationManager.getApplications().getApplications().values()) { + applicationBean = PojoConverter.applicationToBean(application); + addClustersToApplicationBean(applicationBean, application); + addGroupsToApplicationBean(applicationBean, application); + applicationBeanList.add(applicationBean); + } + } finally { + ApplicationManager.releaseReadLockForApplications(); + } + + return applicationBeanList.toArray(new ApplicationBean[applicationBeanList.size()]); + } + + public static ApplicationBean getApplicationInfo(String applicationId) { ApplicationBean applicationBean = null; try { ApplicationManager.acquireReadLockForApplication(applicationId); @@ -1501,36 +1519,40 @@ public class StratosApiV41Utils { return null; } applicationBean = PojoConverter.applicationToBean(application); - - Map<String, ClusterDataHolder> topLevelClusterDataMap = application.getClusterDataMap(); - for (Map.Entry<String, ClusterDataHolder> entry : topLevelClusterDataMap.entrySet()) { - ClusterDataHolder clusterDataHolder = entry.getValue(); - String clusterId = clusterDataHolder.getClusterId(); - String serviceType = clusterDataHolder.getServiceType(); - TopologyManager.acquireReadLockForCluster(serviceType, clusterId); - Cluster topLevelCluster; - - try { - TopologyManager.acquireReadLockForCluster(serviceType, clusterId); - topLevelCluster = TopologyManager.getTopology().getService(serviceType).getCluster(clusterId); - } finally { - TopologyManager.releaseReadLockForCluster(serviceType, clusterId); - } - applicationBean.clusters.add(PojoConverter.populateClusterPojos(topLevelCluster)); - } - - Collection<Group> groups = application.getGroups(); - for (Group group : groups) { - GroupBean groupBean = PojoConverter.toGroupBean(group); - setSubGroups(group, groupBean); - applicationBean.addGroup(groupBean); - } + addClustersToApplicationBean(applicationBean, application); + addGroupsToApplicationBean(applicationBean, application); } finally { ApplicationManager.releaseReadLockForApplication(applicationId); } + return applicationBean; + } + + private static void addGroupsToApplicationBean(ApplicationBean applicationBean, Application application) { + Collection<Group> groups = application.getGroups(); + for (Group group : groups) { + GroupBean groupBean = PojoConverter.toGroupBean(group); + setSubGroups(group, groupBean); + applicationBean.addGroup(groupBean); + } + } + private static void addClustersToApplicationBean(ApplicationBean applicationBean, Application application) { + Map<String, ClusterDataHolder> topLevelClusterDataMap = application.getClusterDataMap(); + for (Map.Entry<String, ClusterDataHolder> entry : topLevelClusterDataMap.entrySet()) { + ClusterDataHolder clusterDataHolder = entry.getValue(); + String clusterId = clusterDataHolder.getClusterId(); + String serviceType = clusterDataHolder.getServiceType(); + TopologyManager.acquireReadLockForCluster(serviceType, clusterId); + Cluster topLevelCluster; - return applicationBean; + try { + TopologyManager.acquireReadLockForCluster(serviceType, clusterId); + topLevelCluster = TopologyManager.getTopology().getService(serviceType).getCluster(clusterId); + } finally { + TopologyManager.releaseReadLockForCluster(serviceType, clusterId); + } + applicationBean.clusters.add(PojoConverter.populateClusterPojos(topLevelCluster)); + } } private static void setSubGroups(Group group, GroupBean groupBean) {
