diff --git a/openstack-slothd.py b/openstack-slothd.py index 07cea0b5a895f46f399af2b969adb8981e762b07..cd15e51cf5907433ef77e85cb34a2575f98a1777 100755 --- a/openstack-slothd.py +++ b/openstack-slothd.py @@ -151,7 +151,16 @@ def get_hypervisor_hostname(client,resource): pass pass #LOG.debug("resource: " + pp.pformat(resource)) - hh = resource.metadata['host'] + hh = None + try: + hh = resource.metadata['host'] + except: + if 'instance_id' in resource.metadata: + LOG.info("no hostname info for resource %s; trying instance_id" % (str(resource),)) + return get_hypervisor_hostname(client,get_resource(client,resource.metadata['instance_id'])) + else: + LOG.exception("no 'host' field in metadata for resource %s" % (str(resource,))) + pass if not hh in r_hostnames.keys(): LOG.error("hostname hash %s doesn't map to a known hypervisor hostname!" % (hh,)) return None @@ -236,7 +245,8 @@ def fetchall(client): if not hostname in vm_dict: vm_dict[hostname] = {} pass - if not vmrid in vm_dict[hostname]: + if not vmrid in vm_dict[hostname] and 'display_name' in resource.metadata \ + and 'image.name' in resource.metadata and 'status' in resource.metadata: vm_dict[hostname][vmrid] = dict(name=resource.metadata['display_name'], image=resource.metadata['image.name'], status=resource.metadata['status']) diff --git a/setup-controller.sh b/setup-controller.sh index 0fe759fbebf4a08db38351962a164c20f9564886..32d25712b3181fdfd0253626697e10f15e500d7c 100755 --- a/setup-controller.sh +++ b/setup-controller.sh @@ -2721,7 +2721,7 @@ fi # # Install and startup the slothd-for-openstack idleness detector # -if [ $OSVERSION -ge $OSLIBERTY ]; then +if [ $OSVERSION -ge $OSKILO ]; then cp -p $DIRNAME/openstack-slothd.py $OURDIR/ cat </etc/systemd/system/openstack-slothd.service