diff --git a/views/ngXosViews/diagnostic/src/js/config.js b/views/ngXosViews/diagnostic/src/js/config.js
index 7308995..99112b1 100644
--- a/views/ngXosViews/diagnostic/src/js/config.js
+++ b/views/ngXosViews/diagnostic/src/js/config.js
@@ -18,10 +18,22 @@
       y: -10
     },
     rack: {
-      width: 50,
+      width: 60,
       height: 50,
-      x: -25,
+      x: -30,
       y: -25
+    },
+    computeNode: {
+      width: 50,
+      height: 20,
+      x: -25,
+      y: -10
+    },
+    instance: {
+      width: 40,
+      height: 16,
+      x: -20,
+      y: -8
     }
   })
 
diff --git a/views/ngXosViews/diagnostic/src/js/nodeDrawer.js b/views/ngXosViews/diagnostic/src/js/nodeDrawer.js
index 82349ea..67156d5 100644
--- a/views/ngXosViews/diagnostic/src/js/nodeDrawer.js
+++ b/views/ngXosViews/diagnostic/src/js/nodeDrawer.js
@@ -5,8 +5,11 @@
     cloud: ' M 79.72 49.60 C 86.00 37.29 98.57 29.01 111.96 26.42 C 124.27 24.11 137.53 26.15 148.18 32.90 C 158.08 38.78 165.39 48.87 167.65 60.20 C 176.20 57.90 185.14 56.01 194.00 57.73 C 206.08 59.59 217.92 66.01 224.37 76.66 C 227.51 81.54 228.85 87.33 229.23 93.06 C 237.59 93.33 246.22 95.10 253.04 100.19 C 256.69 103.13 259.87 107.67 258.91 112.59 C 257.95 118.43 252.78 122.38 247.78 124.82 C 235.27 130.43 220.23 130.09 207.98 123.93 C 199.33 127.88 189.76 129.43 180.30 128.57 C 173.70 139.92 161.70 147.65 148.86 149.93 C 133.10 153.26 116.06 148.15 104.42 137.08 C 92.98 143.04 78.96 143.87 66.97 139.04 C 57.75 135.41 49.70 128.00 46.60 118.43 C 43.87 109.95 45.81 100.29 51.30 93.32 C 57.38 85.18 67.10 80.44 76.99 78.89 C 74.38 69.20 74.87 58.52 79.72 49.60 Z'
   }
 
+  var computeNodeId = 0;
+  var instanceId = 0;
+
   angular.module('xos.serviceTopology')
-  .service('NodeDrawer', function(serviceTopologyConfig){
+  .service('NodeDrawer', function(d3, serviceTopologyConfig, Node){
     this.addNetworks = (nodes) => {
       nodes.append('path')
       .attr({
@@ -23,6 +26,15 @@
     }
 
     this.addRack = (nodes) => {
+
+      // NOTE is good to request data here? Probably not.
+
+      Node.queryWithInstances().$promise
+      .then((computeNodes) => {
+        this.drawComputeNodes(nodes, computeNodes);
+      });
+
+      // NOTE should we draw the rack?
       nodes.append('rect')
       .attr(serviceTopologyConfig.rack);
 
@@ -31,8 +43,51 @@
         'text-anchor': 'middle',
         y: serviceTopologyConfig.rack.y - 10
       })
-      .text(d => d.name)
-    }
+      .text(d => d.name);
+    };
+
+    this.drawComputeNodes = (container, nodes) => {
+      console.log('drawComputeNodes');
+      let elements = container.selectAll('.compute-nodes')
+      .data(nodes, d => {
+        if(!angular.isString(d.d3Id)){
+          d.d3Id = `compute-node-${++computeNodeId}`;
+        }
+        return d.d3Id;
+      });
+
+      var nodeContainer = elements.enter().append('g')
+      .attr({
+        class: 'compute-node'
+      });
+
+      nodeContainer.append('rect')
+      .attr(serviceTopologyConfig.computeNode);
+
+      // if there are Compute Nodes
+      if(nodeContainer.length > 0){
+        angular.forEach(nodeContainer.data(), (computeNode) => {
+          this.drawInstances(nodeContainer, computeNode.instances);
+        });
+      }
+
+    };
+
+    this.drawInstances = (container, instances) => {
+      
+      // TODO position instances... How??
+
+      let elements = container.selectAll('.instances')
+      .data(instances, d => angular.isString(d.d3Id) ? d.d3Id : d.d3Id = `instance-${++instanceId}`)
+
+      var instanceContainer = elements.enter().append('g')
+      .attr({
+        class: 'instance'
+      });
+
+      instanceContainer.append('rect')
+      .attr(serviceTopologyConfig.instance);
+    };
 
     this.addPhisical = (nodes) => {
       nodes.append('rect')
diff --git a/views/ngXosViews/diagnostic/src/js/rest_services.js b/views/ngXosViews/diagnostic/src/js/rest_services.js
index 2673bfc..87db711 100644
--- a/views/ngXosViews/diagnostic/src/js/rest_services.js
+++ b/views/ngXosViews/diagnostic/src/js/rest_services.js
@@ -12,7 +12,42 @@
     return $resource('/xos/slices', {id: '@id'});
   })
   .service('Instances', function($resource){
-    return $resource('/xos/instances', {id: '@id'});
+    return $resource('/xos/instances', {id: '@id'}, {});
+  })
+  .service('Node', function($resource, $q, Instances){
+    return $resource('/xos/nodes', {id: '@id'}, {
+      queryWithInstances: {
+        method: 'GET',
+        isArray: true,
+        interceptor: {
+          response: function(res){
+
+            // TODO update the API to include instances in nodes
+            // http://stackoverflow.com/questions/14573102/how-do-i-include-related-model-fields-using-django-rest-framework
+
+            const deferred = $q.defer();
+
+            let requests = [];
+
+            angular.forEach(res.data, (node) => {
+              requests.push(Instances.query({node: node.id}).$promise);
+            })
+
+            $q.all(requests)
+            .then((list) => {
+              res.data.map((node, i) => {
+                node.instances = list[i];
+                return node;
+              });
+
+              deferred.resolve(res.data);
+            })
+
+            return deferred.promise;
+          }
+        }
+      }
+    });
   })
   .service('Subscribers', function($resource, $q, SubscriberDevice){
     return $resource('/xos/subscribers', {id: '@id'}, {
