Added subscriber public IP and higlightig only used vSG instance
diff --git a/views/ngXosViews/diagnostic/src/js/logicTopology.js b/views/ngXosViews/diagnostic/src/js/logicTopology.js
index 5ca0b30..8e7e741 100644
--- a/views/ngXosViews/diagnostic/src/js/logicTopology.js
+++ b/views/ngXosViews/diagnostic/src/js/logicTopology.js
@@ -11,7 +11,7 @@
       bindToController: true,
       controllerAs: 'vm',
       templateUrl: 'templates/logicTopology.tpl.html',
-      controller: function($element, $log, $scope, $rootScope, $timeout, d3, LogicTopologyHelper, Node, Tenant, Ceilometer, serviceTopologyConfig){
+      controller: function($element, $log, $scope, $rootScope, $timeout, d3, LogicTopologyHelper, Node, Tenant, Ceilometer, serviceTopologyConfig, ChartData){
         $log.info('Logic Plane');
 
         var svg;
@@ -26,32 +26,15 @@
           .style('height', `${el.clientHeight}px`);
         }
 
-        $scope.$watch(() => this.subscribers, (subscribers) => {
-          if(subscribers){
-
-            Node.queryWithInstances().$promise
-            .then((computeNodes) => {
-              LogicTopologyHelper.addComputeNodes(computeNodes);
-              LogicTopologyHelper.updateTree(svg);
-            });
-            
-          }
+        ChartData.getLogicTree()
+        .then((tree) => {
+          LogicTopologyHelper.updateTree(svg);
         });
 
         $scope.$watch(() => this.selected, (selected) => {
           if(selected){
-            $log.info(`Update logic layer for subscriber ${selected.humanReadableName}`);
-            
-            // append the device with to config settings
-            serviceTopologyConfig.elWidths.push(160);
-
-            LogicTopologyHelper.addSubscriber(angular.copy(selected));
-
-            Tenant.getSubscriberTag({subscriber_root: selected.id}).$promise
-            .then((tags) => {
-              LogicTopologyHelper.addSubscriberTag(tags);
-              LogicTopologyHelper.updateTree(svg);
-            })
+            ChartData.selectSubscriber(selected);
+            LogicTopologyHelper.updateTree(svg);
           }
         });
 
@@ -59,30 +42,14 @@
           this.hideInstanceStats = true;
           $timeout(() => {
             this.selectedInstances = [];
-            LogicTopologyHelper.getInstanceStatus([]);
+            ChartData.highlightInstances([]);
             LogicTopologyHelper.updateTree(svg);
           }, 500);
         });
 
         $rootScope.$on('instance.detail', (evt, service) => {
-
-          // NOTE consider if subscriber is selected or not,
-          // if not select instances
-          // else select containers (and follow subscriber chain to find the correct instance)
-
-          let param = {
-            'service_vsg': {kind: 'vCPE'},
-            'service_vbng': {kind: 'vBNG'},
-            'service_volt': {kind: 'vOLT'}
-          };
-
-          Tenant.queryVsgInstances(param[service.name]).$promise
+          ChartData.getInstanceStatus(service)
           .then((instances) => {
-
-            return Ceilometer.getInstancesStats(instances);
-          })
-          .then((instances) => {
-            console.log(instances);
             this.hideInstanceStats = false;
             // HACK if array is empty wait for animation
             if(instances.length === 0){
@@ -94,13 +61,8 @@
             else{
               this.selectedInstances = instances;
             }
-            
-            LogicTopologyHelper.getInstanceStatus(instances);
             LogicTopologyHelper.updateTree(svg);
           })
-          .catch((e) => {
-            throw new Error(e);
-          });
         })
 
         handleSvg($element[0]);