diff --git a/xos/configurations/cord/ceilometer.yaml b/xos/configurations/cord/ceilometer.yaml
index 5384b4f..82e697a 100644
--- a/xos/configurations/cord/ceilometer.yaml
+++ b/xos/configurations/cord/ceilometer.yaml
@@ -51,6 +51,9 @@
     mysite:
       type: tosca.nodes.Site
 
+    trusty-server-multi-nic:
+      type: tosca.nodes.Image
+
     mysite_ceilometer:
       description: Ceilometer Proxy Slice
       type: tosca.nodes.Slice
@@ -61,6 +64,11 @@
           - site:
               node: mysite
               relationship: tosca.relationships.MemberOfSite
+          - default_image:
+                node: trusty-server-multi-nic
+                relationship: tosca.relationships.DefaultImage
+      properties:
+          default_flavor: m1.small
 
     my_ceilometer_tenant:
       description: Ceilometer Service default Tenant
diff --git a/xos/core/xoslib/methods/ceilometerview.py b/xos/core/xoslib/methods/ceilometerview.py
index 5e0ac35..a65bd11 100644
--- a/xos/core/xoslib/methods/ceilometerview.py
+++ b/xos/core/xoslib/methods/ceilometerview.py
@@ -1078,6 +1078,18 @@
         query.append({"field": "meter", "op": "eq", "value": meter_name})
         samples = sample_list(request, meter_name,
                            ceilometer_url=tenant_ceilometer_url, query=query, limit=limit) 
+        if samples:
+            tenant_map = getTenantControllerTenantMap(request.user)
+            resource_map = get_resource_map(request, ceilometer_url=tenant_ceilometer_url)
+            for sample in samples:
+                 if sample["project_id"] in tenant_map.keys():
+                     sample["slice"] = tenant_map[sample["project_id"]]["slice"]
+                 else:
+                     sample["slice"] = sample["project_id"]
+                 if sample["resource_id"] in resource_map.keys():
+                     sample["resource_name"] = resource_map[sample["resource_id"]]
+                 else:
+                     sample["resource_name"] = sample["resource_id"]
         return Response(samples)
 
 class ServiceAdjustScale(APIView):
@@ -1085,7 +1097,7 @@
     method_name = "serviceadjustscale"
 
     def get(self, request, format=None):
-        if (not request.user.is_authenticated()) or (not request.user.is_admin()):
+        if (not request.user.is_authenticated()) or (not request.user.is_admin):
             raise PermissionDenied("You must be authenticated admin user in order to use this API")
         service = request.QUERY_PARAMS.get('service', None)
         slice_hint = request.QUERY_PARAMS.get('slice_hint', None)
@@ -1097,5 +1109,5 @@
         if not services or (not services.get(name=service)):
             raise XOSMissingField("Service not found")
         service = services.get(name=service)
-        service.adjust_scale(slice_hint, scale)
+        service.adjust_scale(slice_hint, int(scale))
         return Response("Success")
diff --git a/xos/observers/monitoring_channel/templates/ceilometer_pub_sub_consumer.py b/xos/observers/monitoring_channel/templates/ceilometer_pub_sub_consumer.py
index ecbabb9..7d111e3 100644
--- a/xos/observers/monitoring_channel/templates/ceilometer_pub_sub_consumer.py
+++ b/xos/observers/monitoring_channel/templates/ceilometer_pub_sub_consumer.py
@@ -7,6 +7,8 @@
 import time, thread, threading
 
 projects_map = {}
+xos_tenant_info_map = {}
+xos_instances_info_map = {}
 
 UDP_IP = "0.0.0.0"
 UDP_PORT = 12346
@@ -43,10 +45,10 @@
    print ""
    print ""
    for project in projects_map.keys():
-        print "project=%s, alarm_state=%s" % (project, projects_map[project]['alarm'])
+        print "service=%s slice=%s, alarm_state=%s" % (projects_map[project]['xos_tenant_info']['service'] if projects_map[project]['xos_tenant_info'] else None, projects_map[project]['xos_tenant_info']['slice'] if projects_map[project]['xos_tenant_info'] else project, projects_map[project]['alarm'])
         for resource in projects_map[project]['resources'].keys():
-             print "resource=%s" % resource
-             for i in projects_map[project]['resources'][resource]:
+             print "resource=%s" % (projects_map[project]['resources'][resource]['xos_instance_info']['instance_name'] if projects_map[project]['resources'][resource]['xos_instance_info'] else resource)
+             for i in projects_map[project]['resources'][resource]['queue']:
                   print "    time=%s val=%s" % ( i['timestamp'],i['counter_volume'])
 
 def periodic_print():
@@ -64,23 +66,51 @@
 SCALE_UP_ALARM = 'scale_up'
 SCALE_DOWN_ALARM = 'scale_down'
 
-def getXosTenantInfo(project):
-    print "SRIKANTH: Getting XOS info for openstack Project %s" % project
+def loadAllXosTenantInfo():
+    print "SRIKANTH: Loading all XOS tenant info"
     url = "http://ctl:9999/xos/controllerslices/"
     admin_auth=("padmin@vicci.org", "letmein")   # use your XOS username and password
     controller_slices = requests.get(url, auth=admin_auth).json()
     for cslice in controller_slices:
-         if cslice['tenant_id'] == project:
-             print "SRIKANTH: Matching controller_slice=%s" % cslice['humanReadableName']
-             slice = requests.get(cslice['slice'], auth=admin_auth).json()
-             slice_name = slice['humanReadableName']
-             print "SRIKANTH: Matching slice=%s" % slice_name
+         slice = requests.get(cslice['slice'], auth=admin_auth).json()
+         slice_name = slice['humanReadableName']
+         if slice['service']:
              service = requests.get(slice['service'], auth=admin_auth).json()
              service_name = service['humanReadableName']
-             print "SRIKANTH: Matching service=%s" % service_name
-             return {'service':service_name, 'slice':slice_name}
-    logger.warn("SRIKANTH: Project %(project)s has no associated XOS slice" % {'project':project})
-    return None
+         else:
+             service_name = None
+         xos_tenant_info_map[cslice['tenant_id']] = {'service':service_name, 'slice':slice_name}
+         print "SRIKANTH: Project: %s Service:%s Slice:%s" % (cslice['tenant_id'],service_name,slice_name)
+
+def loadAllXosInstanceInfo():
+    print "SRIKANTH: Loading all XOS instance info"
+    url = "http://130.127.133.87:9999/xos/instances/"
+    admin_auth=("padmin@vicci.org", "letmein")   # use your XOS username and password
+    xos_instances = requests.get(url, auth=admin_auth).json()
+    for instance in xos_instances:
+         xos_instances_info_map[instance['instance_uuid']] = {'instance_name':instance['instance_name']}
+
+def getXosTenantInfo(project):
+    xos_tenant_info = xos_tenant_info_map.get(project, None)
+    if xos_tenant_info:
+        return xos_tenant_info
+    else:
+        loadAllXosTenantInfo()
+        xos_tenant_info = xos_tenant_info_map.get(project, None)
+        if not xos_tenant_info:
+            print "SRIKANTH: Project %s has no associated XOS slice" % project
+        return xos_tenant_info
+
+def getXosInstanceInfo(resource):
+    xos_instance_info = xos_instances_info_map.get(resource, None)
+    if xos_instance_info:
+        return xos_instance_info
+    else:
+        loadAllXosInstanceInfo()
+        xos_instance_info = xos_instances_info_map.get(resource, None)
+        if not xos_instance_info:
+            print "SRIKANTH: Resource %s has no associated XOS instance" % project
+        return xos_instance_info
 
 def handle_adjust_scale(project, adjust):
     if (adjust != 'up') and (adjust != 'down'):
@@ -93,7 +123,8 @@
     if (current_instances >=2 and adjust == 'up'):
         print "SRIKANTH: %s is running with already maximum instances and can not scale up further " % project
         return
-    xos_tenant = getXosTenantInfo(project)
+    #xos_tenant = getXosTenantInfo(project)
+    xos_tenant = projects_map[project]['xos_tenant_info']
     if not xos_tenant:
         print "SRIKANTH: Can not handle adjust_scale for Project %s because not associated with any slice" % project
         return
@@ -111,8 +142,8 @@
 
 def periodic_cpu_threshold_evaluator():
      for project in projects_map.keys():
-          aggregate_cpu_util = sum([resource_queue[-1]['counter_volume'] \
-                                     for resource_queue in projects_map[project]['resources'].values()]) \
+          aggregate_cpu_util = sum([resource['queue'][-1]['counter_volume'] \
+                                     for resource in projects_map[project]['resources'].values()]) \
                                      /len(projects_map[project]['resources'].keys())
 
           if (projects_map[project]['alarm'] == INITIAL_STATE or
@@ -172,14 +203,17 @@
               continue
          if sample['project_id'] not in projects_map.keys():
               projects_map[sample['project_id']] = {}
+              projects_map[sample['project_id']]['xos_tenant_info'] = getXosTenantInfo(sample['project_id'])
               projects_map[sample['project_id']]['resources'] = {}
               projects_map[sample['project_id']]['uthreadshold_count'] = 0
               projects_map[sample['project_id']]['lthreadshold_count'] = 0
               projects_map[sample['project_id']]['alarm'] = INITIAL_STATE
          resource_map = projects_map[sample['project_id']]['resources']
          if sample['resource_id'] not in resource_map.keys():
-              resource_map[sample['resource_id']] = collections.deque(maxlen=10)
-         samples_map = resource_map[sample['resource_id']]
+              resource_map[sample['resource_id']] = {}
+              resource_map[sample['resource_id']]['xos_instance_info'] = getXosInstanceInfo(sample['resource_id'])
+              resource_map[sample['resource_id']]['queue'] = collections.deque(maxlen=10)
+         samples_map = resource_map[sample['resource_id']]['queue']
          sample = {'counter_name':sample['counter_name'],
                    'project_id':sample['project_id'],
                    'resource_id':sample['resource_id'],
@@ -195,6 +229,8 @@
    if not monitoring_channel:
         print 'SRIKANTH: XOS monitoring_channel is not created... Create it before using this app'
         return
+   loadAllXosTenantInfo()
+   loadAllXosInstanceInfo()
    thread.start_new(read_notification_from_ceilometer,(UDP_IP,UDP_PORT,))
    ceilometer_url = monitoring_channel['ceilometer_url']
    subscribe_data = {"sub_info":"cpu_util","app_id":"xos_auto_scale","target":"udp://10.11.10.1:12346"}
diff --git a/xos/tosca/samples/helloworld-chain.yaml b/xos/tosca/samples/helloworld-chain.yaml
index c72aa3d..8959f7f 100644
--- a/xos/tosca/samples/helloworld-chain.yaml
+++ b/xos/tosca/samples/helloworld-chain.yaml
@@ -16,6 +16,9 @@
     mysite:
       type: tosca.nodes.Site
 
+    trusty-server-multi-nic:
+      type: tosca.nodes.Image
+
     service_vcpe:
       type: tosca.nodes.Service
       requirements:
@@ -50,6 +53,11 @@
           - site:
               node: mysite
               relationship: tosca.relationships.MemberOfSite
+          - default_image:
+                node: trusty-server-multi-nic
+                relationship: tosca.relationships.DefaultImage
+      properties:
+          default_flavor: m1.small
 
     helloworld_access:
       type: tosca.nodes.network.Network
