You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by re...@apache.org on 2014/12/19 13:38:23 UTC
[2/2] stratos git commit: adding support to get instances hierarchy
adding support to get instances hierarchy
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/c666e54a
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/c666e54a
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/c666e54a
Branch: refs/heads/master
Commit: c666e54af37cd7d53861753282ffd4a580bc547a
Parents: b9ba5ea
Author: reka <rt...@gmail.com>
Authored: Fri Dec 19 13:32:38 2014 +0530
Committer: reka <rt...@gmail.com>
Committed: Fri Dec 19 17:45:27 2014 +0530
----------------------------------------------------------------------
.../common/beans/topology/ApplicationBean.java | 81 +++++++++++++
.../beans/topology/ApplicationInstanceBean.java | 102 ++++++++++++++++
.../beans/topology/ClusterInstanceBean.java | 114 ++++++++++++++++++
.../beans/topology/GroupInstanceBean.java | 102 ++++++++++++++++
.../rest/endpoint/api/StratosApiV41.java | 25 +++-
.../rest/endpoint/api/StratosApiV41Utils.java | 83 +++++++++++++
.../util/converter/ObjectConverter.java | 119 +++++++++++++++++--
.../src/main/webapp/api/WEB-INF/cxf-servlet.xml | 4 +
8 files changed, 621 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/c666e54a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/topology/ApplicationBean.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/topology/ApplicationBean.java b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/topology/ApplicationBean.java
new file mode 100644
index 0000000..217a588
--- /dev/null
+++ b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/topology/ApplicationBean.java
@@ -0,0 +1,81 @@
+package org.apache.stratos.common.beans.topology;
+
+import javax.xml.bind.annotation.XmlRootElement;
+import java.util.ArrayList;
+import java.util.List;
+
+@XmlRootElement(name="applications")
+public class ApplicationBean {
+
+ private String id;
+ private String name;
+ private String description;
+ private String tenantDomain;
+ private String tenantAdminUsername;
+ private List<ApplicationInstanceBean> applicationInstances;
+
+ public ApplicationBean(){
+ applicationInstances = new ArrayList<ApplicationInstanceBean>();
+ }
+
+ public void addGroupInstance(ApplicationInstanceBean groupInstance) {
+ this.getGroups().add(groupInstance);
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public void setTenantDomain(String tenantDomain) {
+ this.tenantDomain = tenantDomain;
+ }
+
+ public void setTenantAdminUsername(String tenantAdminUsername) {
+ this.tenantAdminUsername = tenantAdminUsername;
+ }
+
+ public String getTenantDomain() {
+ return tenantDomain;
+ }
+
+ public String getTenantAdminUsername() {
+ return tenantAdminUsername;
+ }
+
+
+ public void setApplicationInstances(List<ApplicationInstanceBean> instances) {
+ this.applicationInstances = instances;
+ }
+
+ public List<ApplicationInstanceBean> getGroups() {
+ return applicationInstances;
+ }
+
+ public void setGroups(List<ApplicationInstanceBean> groups) {
+ this.applicationInstances = groups;
+ }
+
+ public List<ApplicationInstanceBean> getApplicationInstances() {
+ return applicationInstances;
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/c666e54a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/topology/ApplicationInstanceBean.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/topology/ApplicationInstanceBean.java b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/topology/ApplicationInstanceBean.java
new file mode 100644
index 0000000..8f72fcc
--- /dev/null
+++ b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/topology/ApplicationInstanceBean.java
@@ -0,0 +1,102 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.stratos.common.beans.topology;
+
+import javax.xml.bind.annotation.XmlRootElement;
+import java.util.ArrayList;
+import java.util.List;
+
+@XmlRootElement(name="applicationInstances")
+public class ApplicationInstanceBean {
+
+ private String status;
+ private String instanceId;
+ private String parentInstanceId;
+ private String applicationId;
+ private List<GroupInstanceBean> groupInstances;
+ private List<ClusterInstanceBean> clusterInstances;
+
+ public ApplicationInstanceBean() {
+ groupInstances = new ArrayList<GroupInstanceBean>();
+ clusterInstances = new ArrayList<ClusterInstanceBean>();
+ }
+
+ public void addGroupInstance(GroupInstanceBean groupInstance) {
+ this.getGroups().add(groupInstance);
+ }
+
+ public void addClusterInstance(ClusterInstanceBean clusterInstance) {
+ this.getClusterInstances().add(clusterInstance);
+ }
+ public List<ClusterInstanceBean> getClusterInstances() {
+ return clusterInstances;
+ }
+
+ public void setGroupInstances(List<GroupInstanceBean> instances) {
+ this.groupInstances = instances;
+ }
+
+ public List<GroupInstanceBean> getGroups() {
+ return groupInstances;
+ }
+
+ public void setGroups(List<GroupInstanceBean> groups) {
+ this.groupInstances = groups;
+ }
+
+ public List<GroupInstanceBean> getGroupInstances() {
+ return groupInstances;
+ }
+
+ public void setClusters(List<ClusterInstanceBean> clusters) {
+ this.clusterInstances = clusters;
+ }
+
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
+ public String getInstanceId() {
+ return instanceId;
+ }
+
+ public void setInstanceId(String instanceId) {
+ this.instanceId = instanceId;
+ }
+
+ public String getParentInstanceId() {
+ return parentInstanceId;
+ }
+
+ public void setParentInstanceId(String parentInstanceId) {
+ this.parentInstanceId = parentInstanceId;
+ }
+
+ public String getApplicationId() {
+ return applicationId;
+ }
+
+ public void setApplicationId(String applicationId) {
+ this.applicationId = applicationId;
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/c666e54a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/topology/ClusterInstanceBean.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/topology/ClusterInstanceBean.java b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/topology/ClusterInstanceBean.java
new file mode 100644
index 0000000..4746a05
--- /dev/null
+++ b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/topology/ClusterInstanceBean.java
@@ -0,0 +1,114 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.stratos.common.beans.topology;
+
+import javax.xml.bind.annotation.XmlRootElement;
+import java.util.List;
+
+@XmlRootElement(name="clusterInstance")
+public class ClusterInstanceBean {
+
+ private String status;
+ private String instanceId;
+ private String parentInstanceId;
+ private String alias;
+ private String serviceName;
+ private String clusterId;
+ private List<Member> member;
+ private String tenantRange;
+ private List<String> hostNames;
+
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
+ public String getInstanceId() {
+ return instanceId;
+ }
+
+ public void setInstanceId(String instanceId) {
+ this.instanceId = instanceId;
+ }
+
+ public String getAlias() {
+ return alias;
+ }
+
+ public void setAlias(String alias) {
+ this.alias = alias;
+ }
+
+ public String getServiceName() {
+ return serviceName;
+ }
+
+ public void setServiceName(String serviceName) {
+ this.serviceName = serviceName;
+ }
+
+ public String getClusterId() {
+ return clusterId;
+ }
+
+ public void setClusterId(String clusterId) {
+ this.clusterId = clusterId;
+ }
+
+ public List<Member> getMember() {
+ return member;
+ }
+
+ public void setMember(List<Member> member) {
+ this.member = member;
+ }
+
+ public String getTenantRange() {
+ return tenantRange;
+ }
+
+ public void setTenantRange(String tenantRange) {
+ this.tenantRange = tenantRange;
+ }
+
+ public List<String> getHostNames() {
+ return hostNames;
+ }
+
+ public void setHostNames(List<String> hostNames) {
+ this.hostNames = hostNames;
+ }
+
+ @Override
+ public String toString() {
+ return "Cluster [serviceName=" + getServiceName() + ", clusterId=" + getClusterId() + ", member=" + getMember()
+ + ", tenantRange=" + getTenantRange() + ", hostNames=" + getHostNames();
+ }
+
+ public String getParentInstanceId() {
+ return parentInstanceId;
+ }
+
+ public void setParentInstanceId(String parentInstanceId) {
+ this.parentInstanceId = parentInstanceId;
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/c666e54a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/topology/GroupInstanceBean.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/topology/GroupInstanceBean.java b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/topology/GroupInstanceBean.java
new file mode 100644
index 0000000..cf489b7
--- /dev/null
+++ b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/topology/GroupInstanceBean.java
@@ -0,0 +1,102 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.stratos.common.beans.topology;
+
+import javax.xml.bind.annotation.XmlRootElement;
+import java.util.ArrayList;
+import java.util.List;
+
+@XmlRootElement(name="groupInstances")
+public class GroupInstanceBean {
+
+ private String status;
+ private String instanceId;
+ private String parentInstanceId;
+ private String groupId;
+ private List<GroupInstanceBean> groupInstances;
+ private List<ClusterInstanceBean> clusterInstances;
+
+ public GroupInstanceBean() {
+ groupInstances = new ArrayList<GroupInstanceBean>();
+ clusterInstances = new ArrayList<ClusterInstanceBean>();
+ }
+
+ public void addGroupInstance(GroupInstanceBean groupInstance) {
+ this.getGroups().add(groupInstance);
+ }
+
+ public void addClusterInstance(ClusterInstanceBean clusterInstance) {
+ this.getClusterInstances().add(clusterInstance);
+ }
+ public List<ClusterInstanceBean> getClusterInstances() {
+ return clusterInstances;
+ }
+
+ public void setGroupInstances(List<GroupInstanceBean> instances) {
+ this.groupInstances = instances;
+ }
+
+ public List<GroupInstanceBean> getGroups() {
+ return groupInstances;
+ }
+
+ public void setGroups(List<GroupInstanceBean> groups) {
+ this.groupInstances = groups;
+ }
+
+ public List<GroupInstanceBean> getGroupInstances() {
+ return groupInstances;
+ }
+
+ public void setClusters(List<ClusterInstanceBean> clusters) {
+ this.clusterInstances = clusters;
+ }
+
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
+ public String getInstanceId() {
+ return instanceId;
+ }
+
+ public void setInstanceId(String instanceId) {
+ this.instanceId = instanceId;
+ }
+
+ public String getParentInstanceId() {
+ return parentInstanceId;
+ }
+
+ public void setParentInstanceId(String parentInstanceId) {
+ this.parentInstanceId = parentInstanceId;
+ }
+
+ public String getGroupId() {
+ return groupId;
+ }
+
+ public void setGroupId(String groupId) {
+ this.groupId = groupId;
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/c666e54a/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 2a1f2eb..0a386dd 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
@@ -445,7 +445,7 @@ public class StratosApiV41 extends AbstractApi {
* @return Json representing the application details with 200 as HTTP status. HTTP 404 is returned when there is
* no application with given Id.
* @throws RestAPIException is thrown in case of failure occurs.
- */
+ *//*
@GET
@Path("/applications/{applicationId}/runtime")
@Consumes("application/json")
@@ -457,6 +457,29 @@ public class StratosApiV41 extends AbstractApi {
} else {
return Response.ok().entity(applicationRuntime).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.
+ *
+ * @param applicationId Id of the application.
+ * @return Json representing the application details with 200 as HTTP status. HTTP 404 is returned when there is
+ * no application with given Id.
+ * @throws RestAPIException is thrown in case of failure occurs.
+ */
+ @GET
+ @Path("/applications/{applicationId}/runtime")
+ @Consumes("application/json")
+ @AuthorizationAction("/permission/protected/manage/monitor/tenants")
+ public Response getApplicationRuntime(@PathParam("applicationId") String applicationId) throws RestAPIException {
+ org.apache.stratos.common.beans.topology.ApplicationBean applicationRuntime = StratosApiV41Utils.
+ getApplicationInstanceRuntime(applicationId);
+ if (applicationRuntime == null) {
+ return Response.status(Response.Status.NOT_FOUND).build();
+ } else {
+ return Response.ok().entity(applicationRuntime).build();
+ }
}
/**
http://git-wip-us.apache.org/repos/asf/stratos/blob/c666e54a/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 ad7cbff..e2028b2 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
@@ -31,6 +31,8 @@ import org.apache.stratos.cloud.controller.stub.domain.CartridgeConfig;
import org.apache.stratos.cloud.controller.stub.domain.CartridgeInfo;
import org.apache.stratos.cloud.controller.stub.domain.Persistence;
import org.apache.stratos.cloud.controller.stub.domain.Volume;
+import org.apache.stratos.common.beans.topology.ApplicationInstanceBean;
+import org.apache.stratos.common.beans.topology.GroupInstanceBean;
import org.apache.stratos.manager.client.AutoscalerServiceClient;
import org.apache.stratos.manager.client.CloudControllerServiceClient;
import org.apache.stratos.manager.composite.application.beans.ApplicationDefinition;
@@ -1114,6 +1116,26 @@ public class StratosApiV41Utils {
return applicationBean;
}
+ public static org.apache.stratos.common.beans.topology.ApplicationBean getApplicationInstanceRuntime(String applicationId) {
+ org.apache.stratos.common.beans.topology.ApplicationBean applicationBean = null;
+ try {
+ ApplicationManager.acquireReadLockForApplication(applicationId);
+ Application application = ApplicationManager.getApplications().getApplication(applicationId);
+ if (application == null) {
+ return null;
+ }
+ applicationBean = ObjectConverter.convertApplicationToApplicationInstanceBean(application);
+ for(ApplicationInstanceBean instanceBean : applicationBean.getApplicationInstances()) {
+ addClustersInstancesToApplicationInstanceBean(instanceBean, application);
+ addGroupsInstancesToApplicationInstanceBean(instanceBean, application);
+ }
+
+ } finally {
+ ApplicationManager.releaseReadLockForApplication(applicationId);
+ }
+ return applicationBean;
+ }
+
private static void addGroupsToApplicationBean(ApplicationBean applicationBean, Application application) {
Collection<Group> groups = application.getGroups();
for (Group group : groups) {
@@ -1123,6 +1145,19 @@ public class StratosApiV41Utils {
}
}
+ private static void addGroupsInstancesToApplicationInstanceBean(ApplicationInstanceBean applicationInstanceBean,
+ Application application) {
+ Collection<Group> groups = application.getGroups();
+ for (Group group : groups) {
+ List<GroupInstanceBean> groupInstanceBeans = ObjectConverter.convertGroupToGroupInstancesBean(
+ applicationInstanceBean.getInstanceId(), group);
+ for(GroupInstanceBean groupInstanceBean : groupInstanceBeans) {
+ setSubGroupInstances(group, groupInstanceBean);
+ applicationInstanceBean.addGroupInstance(groupInstanceBean);
+ }
+ }
+ }
+
private static void addClustersToApplicationBean(ApplicationBean applicationBean, Application application) {
Map<String, ClusterDataHolder> topLevelClusterDataMap = application.getClusterDataMap();
for (Map.Entry<String, ClusterDataHolder> entry : topLevelClusterDataMap.entrySet()) {
@@ -1135,6 +1170,39 @@ public class StratosApiV41Utils {
}
}
+ private static void addClustersInstancesToApplicationInstanceBean(
+ ApplicationInstanceBean applicationInstanceBean,
+ 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 = TopologyManager.getTopology().getService(serviceType).getCluster(clusterId);
+ applicationInstanceBean.getClusterInstances().add(ObjectConverter.
+ convertClusterToClusterInstanceBean(applicationInstanceBean.getInstanceId(),
+ topLevelCluster, entry.getKey()));
+ }
+ }
+
+ private static void addClustersInstancesToGroupInstanceBean(
+ GroupInstanceBean groupInstanceBean,
+ Group group) {
+ Map<String, ClusterDataHolder> topLevelClusterDataMap = group.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 = TopologyManager.getTopology().getService(serviceType).getCluster(clusterId);
+ groupInstanceBean.getClusterInstances().add(ObjectConverter.
+ convertClusterToClusterInstanceBean(groupInstanceBean.getInstanceId(),
+ topLevelCluster, entry.getKey()));
+ }
+ }
+
+
private static void setSubGroups(Group group, GroupBean groupBean) {
Collection<Group> subgroups = group.getGroups();
addClustersToGroupBean(group, groupBean);
@@ -1146,6 +1214,21 @@ public class StratosApiV41Utils {
}
}
+ private static void setSubGroupInstances(Group group, GroupInstanceBean groupInstanceBean) {
+ Collection<Group> subgroups = group.getGroups();
+ addClustersInstancesToGroupInstanceBean(groupInstanceBean, group);
+ for (Group subGroup : subgroups) {
+ List<GroupInstanceBean> groupInstanceBeans = ObjectConverter.
+ convertGroupToGroupInstancesBean(groupInstanceBean.getInstanceId(),
+ subGroup);
+ for(GroupInstanceBean groupInstanceBean1 : groupInstanceBeans) {
+ setSubGroupInstances(subGroup, groupInstanceBean1);
+ groupInstanceBean.addGroupInstance(groupInstanceBean1);
+ }
+
+ }
+ }
+
private static void addClustersToGroupBean(Group group, GroupBean groupBean) {
Map<String, ClusterDataHolder> clustersDatamap = group.getClusterDataMap();
for (Map.Entry<String, ClusterDataHolder> x : clustersDatamap.entrySet()) {
http://git-wip-us.apache.org/repos/asf/stratos/blob/c666e54a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/util/converter/ObjectConverter.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/util/converter/ObjectConverter.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/util/converter/ObjectConverter.java
index b5a7d5d..d173201 100644
--- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/util/converter/ObjectConverter.java
+++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/util/converter/ObjectConverter.java
@@ -41,8 +41,8 @@ import org.apache.stratos.common.beans.kubernetes.KubernetesHost;
import org.apache.stratos.common.beans.kubernetes.KubernetesMaster;
import org.apache.stratos.common.beans.kubernetes.PortRange;
import org.apache.stratos.common.beans.subscription.domain.SubscriptionDomainBean;
+import org.apache.stratos.common.beans.topology.*;
import org.apache.stratos.common.beans.topology.Instance;
-import org.apache.stratos.common.beans.topology.Member;
import org.apache.stratos.common.util.CommonUtil;
import org.apache.stratos.manager.composite.application.beans.*;
import org.apache.stratos.manager.deploy.service.Service;
@@ -50,9 +50,7 @@ import org.apache.stratos.manager.grouping.definitions.DependencyDefinitions;
import org.apache.stratos.manager.subscription.SubscriptionDomain;
import org.apache.stratos.messaging.domain.applications.Application;
import org.apache.stratos.messaging.domain.applications.Group;
-import org.apache.stratos.messaging.domain.instance.ApplicationInstance;
-import org.apache.stratos.messaging.domain.instance.ClusterInstance;
-import org.apache.stratos.messaging.domain.instance.GroupInstance;
+import org.apache.stratos.messaging.domain.instance.*;
import org.apache.stratos.messaging.domain.topology.Cluster;
import org.wso2.carbon.stratos.common.beans.TenantInfoBean;
@@ -647,6 +645,54 @@ public class ObjectConverter {
return clusterBean;
}
+ public static ClusterInstanceBean convertClusterToClusterInstanceBean(String instanceId,
+ Cluster cluster, String alias) {
+ ClusterInstanceBean clusterInstanceBean = new ClusterInstanceBean();
+ clusterInstanceBean.setAlias(alias);
+ clusterInstanceBean.setServiceName(cluster.getServiceName());
+ clusterInstanceBean.setClusterId(cluster.getClusterId());
+ clusterInstanceBean.setInstanceId(instanceId);
+ clusterInstanceBean.setParentInstanceId(instanceId);
+ if(cluster.getInstanceContexts(instanceId) != null) {
+ clusterInstanceBean.setStatus(cluster.getInstanceContexts(instanceId).
+ getStatus().toString());
+ }
+ clusterInstanceBean.setTenantRange(cluster.getTenantRange());
+ clusterInstanceBean.setMember(new ArrayList<Member>());
+ clusterInstanceBean.setHostNames(new ArrayList<String>());
+
+ for (org.apache.stratos.messaging.domain.topology.Member member : cluster.getMembers()) {
+ if(member.getInstanceId().equals(instanceId)) {
+ Member memberBean = new Member();
+ memberBean.setClusterId(member.getClusterId());
+ memberBean.setLbClusterId(member.getLbClusterId());
+ memberBean.setNetworkPartitionId(member.getNetworkPartitionId());
+ memberBean.setPartitionId(member.getPartitionId());
+ memberBean.setMemberId(member.getMemberId());
+ if (member.getMemberIp() == null) {
+ memberBean.setMemberIp("NULL");
+ } else {
+ memberBean.setMemberIp(member.getMemberIp());
+ }
+ if (member.getMemberPublicIp() == null) {
+ memberBean.setMemberPublicIp("NULL");
+ } else {
+ memberBean.setMemberPublicIp(member.getMemberPublicIp());
+ }
+ memberBean.setServiceName(member.getServiceName());
+ memberBean.setStatus(member.getStatus().toString());
+ memberBean.setProperty(convertJavaUtilPropertiesToPropertyBeans(member.getProperties()));
+ clusterInstanceBean.getMember().add(memberBean);
+ }
+
+ }
+
+ for (String hostname : cluster.getHostNames()) {
+ clusterInstanceBean.getHostNames().add(hostname);
+ }
+ return clusterInstanceBean;
+ }
+
private static org.apache.stratos.autoscaler.stub.deployment.partition.Partition[] convertToCCPartitionPojos
(List<Partition> partitionList) {
@@ -1336,20 +1382,38 @@ public class ObjectConverter {
applicationBean.setDescription(application.getDescription());
applicationBean.setTenantDomain(application.getTenantDomain());
applicationBean.setTenantAdminUsername(application.getTenantAdminUserName());
- applicationBean.setInstances(convertApplicationInstancesToInstances(application));
+ //applicationBean.set(convertApplicationToApplicationInstanceBean(application));
+ return applicationBean;
+ }
+
+ public static org.apache.stratos.common.beans.topology.ApplicationBean convertApplicationToApplicationInstanceBean(Application application) {
+ if (application == null) {
+ return null;
+ }
+
+ org.apache.stratos.common.beans.topology.ApplicationBean applicationBean = new
+ org.apache.stratos.common.beans.topology.ApplicationBean();
+ applicationBean.setId(application.getUniqueIdentifier());
+ applicationBean.setName(application.getName());
+ applicationBean.setDescription(application.getDescription());
+ applicationBean.setTenantDomain(application.getTenantDomain());
+ applicationBean.setTenantAdminUsername(application.getTenantAdminUserName());
+ applicationBean.setApplicationInstances(convertApplicationInstancesToApplicationInstances(application));
return applicationBean;
}
- private static List<Instance> convertApplicationInstancesToInstances(
+ private static List<ApplicationInstanceBean> convertApplicationInstancesToApplicationInstances(
Application application) {
- List<Instance> applicationInstanceList = new ArrayList<Instance>();
+ List<ApplicationInstanceBean> applicationInstanceList = new ArrayList<ApplicationInstanceBean>();
Collection<ApplicationInstance> applicationInstancesInTopology =
application.getInstanceIdToInstanceContextMap().values();
if(applicationInstancesInTopology != null) {
for (ApplicationInstance applicationInstance : applicationInstancesInTopology) {
- Instance instance = new Instance();
+ ApplicationInstanceBean instance = new ApplicationInstanceBean();
instance.setInstanceId(applicationInstance.getInstanceId());
+ instance.setApplicationId(application.getUniqueIdentifier());
+ instance.setParentInstanceId(applicationInstance.getParentId());
instance.setStatus(applicationInstance.getStatus().toString());
applicationInstanceList.add(instance);
}
@@ -1369,6 +1433,45 @@ public class ObjectConverter {
return groupBean;
}
+ public static List<GroupInstanceBean> convertGroupToGroupInstancesBean(String instanceId, Group group) {
+ if (group == null) {
+ return null;
+ }
+
+ List<GroupInstanceBean> groupInstanceBeans = new ArrayList<GroupInstanceBean>();
+ if(group.getInstanceContexts(instanceId) != null) {
+ GroupInstance groupInstance = group.getInstanceContexts(instanceId);
+ GroupInstanceBean groupInstanceBean = new GroupInstanceBean();
+ groupInstanceBean.setParentInstanceId(instanceId);
+ groupInstanceBean.setInstanceId(groupInstance.getInstanceId());
+ groupInstanceBean.setStatus(groupInstance.getStatus().toString());
+ groupInstanceBean.setGroupId(group.getUniqueIdentifier());
+ /*for(Group group1 : group.getGroups()) {
+ groupInstanceBean.setGroupInstances(convertGroupToGroupInstancesBean(
+ groupInstance.getInstanceId(), group1));
+ }*/
+ groupInstanceBeans.add(groupInstanceBean);
+
+ } else {
+ List<org.apache.stratos.messaging.domain.instance.Instance> groupInstances =
+ group.getInstanceContextsWithParentId(instanceId);
+ for(org.apache.stratos.messaging.domain.instance.Instance groupInstance : groupInstances) {
+ GroupInstanceBean groupInstanceBean = new GroupInstanceBean();
+ groupInstanceBean.setParentInstanceId(instanceId);
+ groupInstanceBean.setInstanceId(groupInstance.getInstanceId());
+ groupInstanceBean.setStatus(((GroupInstance)groupInstance).getStatus().toString());
+ groupInstanceBean.setGroupId(group.getUniqueIdentifier());
+ /*for(Group group1 : group.getGroups()) {
+ groupInstanceBean.setGroupInstances(convertGroupToGroupInstancesBean(
+ groupInstance.getInstanceId(), group1));
+ }*/
+ groupInstanceBeans.add(groupInstanceBean);
+ }
+ }
+
+ return groupInstanceBeans;
+ }
+
private static List<Instance> convertGroupInstancesToInstances(Group group) {
List<Instance> instanceList = new ArrayList<Instance>();
Collection<GroupInstance> instancesInTopology = group.getInstanceIdToInstanceContextMap().values();
http://git-wip-us.apache.org/repos/asf/stratos/blob/c666e54a/components/org.apache.stratos.rest.endpoint/src/main/webapp/api/WEB-INF/cxf-servlet.xml
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.rest.endpoint/src/main/webapp/api/WEB-INF/cxf-servlet.xml b/components/org.apache.stratos.rest.endpoint/src/main/webapp/api/WEB-INF/cxf-servlet.xml
index a487594..ad9602f 100644
--- a/components/org.apache.stratos.rest.endpoint/src/main/webapp/api/WEB-INF/cxf-servlet.xml
+++ b/components/org.apache.stratos.rest.endpoint/src/main/webapp/api/WEB-INF/cxf-servlet.xml
@@ -130,6 +130,10 @@
<value>partitions</value>
<value>instances</value>
<value>dependencyAliases</value>
+ <value>groupInstances</value>
+ <value>clusterInstances</value>
+ <value>applicationInstances</value>
+
</list>
</property>
</bean>