def make_vnic_sample(instance, name, type, unit, volume, vnic_data): metadata = copy.copy(vnic_data) resource_metadata = dict(zip(metadata._fields, metadata)) resource_metadata['instance_id'] = instance.id resource_metadata['instance_type'] = (instance.flavor['id'] if instance.flavor else None) compute_util.add_reserved_user_metadata(instance.metadata, resource_metadata) if vnic_data.fref is not None: rid = vnic_data.fref else: instance_name = util.instance_name(instance) rid = "%s-%s-%s" % (instance_name, instance.id, vnic_data.name) return sample.Sample(name=name, type=type, unit=unit, volume=volume, user_id=instance.user_id, project_id=instance.tenant_id, resource_id=rid, timestamp=timeutils.utcnow().isoformat(), resource_metadata=resource_metadata)
def make_vnic_sample(instance, name, type, unit, volume, vnic_data): metadata = copy.copy(vnic_data) resource_metadata = dict(zip(metadata._fields, metadata)) resource_metadata['instance_id'] = instance.id resource_metadata['instance_type'] = (instance.flavor['id'] if instance.flavor else None) compute_util.add_reserved_user_metadata(instance.metadata, resource_metadata) if vnic_data.fref is not None: rid = vnic_data.fref else: instance_name = util.instance_name(instance) rid = "%s-%s-%s" % (instance_name, instance.id, vnic_data.name) return sample.Sample( name=name, type=type, unit=unit, volume=volume, user_id=instance.user_id, project_id=instance.tenant_id, resource_id=rid, timestamp=timeutils.isotime(), resource_metadata=resource_metadata )
def process_notification(self, message): instance_properties = self.get_instance_properties(message) if isinstance(instance_properties.get('metadata'), dict): src_metadata = instance_properties['metadata'] del instance_properties['metadata'] util.add_reserved_user_metadata(src_metadata, instance_properties) return self.get_sample(message)
def _get_metadata_from_object(instance): """Return a metadata dictionary for the instance. """ metadata = { 'display_name': instance.name, 'name': getattr(instance, 'OS-EXT-SRV-ATTR:instance_name', u''), 'instance_type': (instance.flavor['id'] if instance.flavor else None), 'host': instance.hostId, 'flavor': instance.flavor, # Image properties 'image': instance.image, 'image_ref': (instance.image['id'] if instance.image else None), } # Images that come through the conductor API in the nova notifier # plugin will not have links. if instance.image and instance.image.get('links'): metadata['image_ref_url'] = instance.image['links'][0]['href'] else: metadata['image_ref_url'] = None for name in INSTANCE_PROPERTIES: if hasattr(instance, name): metadata[name] = getattr(instance, name) metadata['vcpus'] = instance.flavor['vcpus'] metadata['memory_mb'] = instance.flavor['ram'] metadata['disk_gb'] = instance.flavor['disk'] metadata['ephemeral_gb'] = instance.flavor['ephemeral'] metadata['root_gb'] = int(metadata['disk_gb']) - \ int(metadata['ephemeral_gb']) return compute_util.add_reserved_user_metadata(instance.metadata, metadata)