Repository: stratos
Updated Branches:
  refs/heads/4.0.0-grouping f8ca4b278 -> 66042d444


adding a method to get all cluster info. in an App recursively


Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/787b554e
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/787b554e
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/787b554e

Branch: refs/heads/4.0.0-grouping
Commit: 787b554ee993045b079d9c59aedd0522f1c23a13
Parents: f1ccd9b
Author: Isuru Haththotuwa <[email protected]>
Authored: Thu Sep 25 11:50:22 2014 +0530
Committer: Isuru Haththotuwa <[email protected]>
Committed: Thu Sep 25 11:50:22 2014 +0530

----------------------------------------------------------------------
 .../impl/CloudControllerServiceImpl.java        | 37 ++++++++++++++++++--
 .../controller/topology/TopologyBuilder.java    | 12 +++++--
 .../messaging/domain/topology/Application.java  | 29 +++++++++++++++
 3 files changed, 73 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/787b554e/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
index 6f72e63..5b04df2 100644
--- 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
@@ -35,6 +35,7 @@ import org.apache.stratos.cloud.controller.interfaces.Iaas;
 import org.apache.stratos.cloud.controller.persist.Deserializer;
 import org.apache.stratos.cloud.controller.pojo.*;
 import org.apache.stratos.cloud.controller.pojo.application.ApplicationContext;
+import org.apache.stratos.cloud.controller.pojo.payload.MetaDataHolder;
 import 
org.apache.stratos.cloud.controller.publisher.CartridgeInstanceDataPublisher;
 import org.apache.stratos.cloud.controller.registry.RegistryManager;
 import org.apache.stratos.cloud.controller.runtime.FasterLookUpDataHolder;
@@ -48,6 +49,11 @@ import 
org.apache.stratos.messaging.domain.topology.ConfigCompositeApplication;
 import org.apache.stratos.messaging.domain.topology.Member;
 import org.apache.stratos.messaging.domain.topology.MemberStatus;
 import org.apache.stratos.messaging.util.Constants;
+import org.apache.stratos.metadata.client.DefaultMetaDataServiceClient;
+import org.apache.stratos.metadata.client.MetaDataServiceClient;
+import org.apache.stratos.metadata.client.config.MetaDataClientConfig;
+import 
org.apache.stratos.metadata.client.exception.MetaDataServiceClientExeption;
+import org.apache.stratos.metadata.client.exception.RestClientException;
 import org.jclouds.compute.ComputeService;
 import org.jclouds.compute.domain.NodeMetadata;
 import org.jclouds.compute.domain.NodeMetadataBuilder;
@@ -1436,8 +1442,35 @@ public class CloudControllerServiceImpl implements 
CloudControllerService {
                     applicationClusterContext.getHostName(), 
applicationClusterContext.isLbCluster()));
         }
 
-        //TODO: publish data to meta data service
-        applicationParser.getPayloadData();
+        //TODO: improve
+//        Set<MetaDataHolder> medaDataHolders = 
applicationParser.getPayloadData();
+//        if (medaDataHolders != null) {
+//
+//            MetaDataServiceClient metaDataServiceClient;
+//            try {
+//
+//                metaDataServiceClient = new 
DefaultMetaDataServiceClient(MetaDataClientConfig.getInstance().getMetaDataServiceBaseUrl());
+//                metaDataServiceClient.initialize();
+//
+//            } catch (RestClientException e) {
+//                log.error("Error creating instance of Metadata Service 
Client", e);
+//                throw new ApplicationDefinitionException(e);
+//            }
+//
+//            for (MetaDataHolder metaDataHolder : medaDataHolders) {
+//                for (Map.Entry<Object, Object> metaDataEntry : 
metaDataHolder.getProperties().entrySet()) {
+//                    try {
+//                        
metaDataServiceClient.addPropertyToCluster(metaDataHolder.getAppId(), 
metaDataHolder.getClusterId(),
+//                                (String)metaDataEntry.getKey(), 
(String)metaDataEntry.getValue());
+//
+//                    } catch (MetaDataServiceClientExeption e) {
+//                        log.error("Error publishing data to Metadata 
Service", e);
+//                        throw new ApplicationDefinitionException(e);
+//                    }
+//                }
+//            }
+//        }
+
 
         TopologyBuilder.handleApplicationDeployed(application, 
applicationParser.getApplicationClusterContexts(),
                 applicationParser.getPayloadData());

http://git-wip-us.apache.org/repos/asf/stratos/blob/787b554e/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java
index 25dc027..28de73e 100644
--- 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java
@@ -672,10 +672,16 @@ public class TopologyBuilder {
             } else {
                 Application application = 
topology.getApplication(applicationId);
                 // remove clusters
-                for (Map.Entry<String, ClusterDataHolder> 
clusterDataHolderEntry : application.getClusterDataMap().entrySet()) {
-                    Service service = 
topology.getService(clusterDataHolderEntry.getValue().getServiceType());
+                for (ClusterDataHolder clusterDataHolder : 
application.getClusterDataRecursively()) {
+                    Service service = 
topology.getService(clusterDataHolder.getServiceType());
                     if (service != null) {
-                        
service.removeCluster(clusterDataHolderEntry.getValue().getClusterId());
+                        
service.removeCluster(clusterDataHolder.getClusterId());
+                        if (log.isDebugEnabled()) {
+                            log.debug("Removed cluster with id " + 
clusterDataHolder.getClusterId());
+                        }
+                    } else {
+                        log.warn("Unable to remove cluster with cluster id: " 
+ clusterDataHolder.getClusterId() + " from Topology, " +
+                                " associated Service [ " + 
clusterDataHolder.getServiceType() + " ] npt found");
                     }
                 }
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/787b554e/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Application.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Application.java
 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Application.java
index cc7c588..ec9c1fd 100644
--- 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Application.java
+++ 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Application.java
@@ -78,6 +78,35 @@ public class Application implements ParentBehavior {
         return this.aliasToClusterDataMap;
     }
 
+    public Set<ClusterDataHolder> getClusterDataRecursively () {
+
+        Set<ClusterDataHolder> appClusterData = new 
HashSet<ClusterDataHolder>();
+
+        // get top level Cluster Data
+        if (this.aliasToClusterDataMap != null && 
!this.aliasToClusterDataMap.isEmpty()) {
+            appClusterData.addAll(this.aliasToClusterDataMap.values());
+        }
+
+        // find other nested Cluster Data (in the Groups)
+        if (getGroups() != null) {
+            getClusterData(appClusterData, getGroups());
+        }
+
+        return appClusterData;
+    }
+
+    private void getClusterData (Set<ClusterDataHolder> clusterData, 
Collection<Group> groups) {
+
+        for (Group group : groups) {
+            if (group.getClusterDataMap() != null && 
!group.getClusterDataMap().isEmpty()) {
+                clusterData.addAll(group.getClusterDataMap().values());
+                if (group.getGroups() != null) {
+                    getClusterData(clusterData, group.getGroups());
+                }
+            }
+        }
+    }
+
     @Override
     public Group getGroupRecursively(String groupAlias) {
 

Reply via email to