Added image metadata to compute.instance.exists
Added image metadata to compute.instance.exists notification. This information is a convenience to assist billing/usage systems by providing information about the image the instance was built from. Change-Id: I27e8c048ed419858ba2eb3e20c25ac454b0419b6
This commit is contained in:
parent
1d53273d67
commit
53adfd289b
@ -22,6 +22,7 @@ import nova.context
|
||||
from nova import db
|
||||
from nova import exception
|
||||
from nova import flags
|
||||
from nova import image
|
||||
from nova import log
|
||||
from nova import network
|
||||
from nova.network import model as network_model
|
||||
@ -46,6 +47,7 @@ def notify_usage_exists(context, instance_ref, current_period=False,
|
||||
:param ignore_missing_network_data: if True, log any exceptions generated
|
||||
while getting network info; if False, raise the exception.
|
||||
"""
|
||||
|
||||
admin_context = nova.context.get_admin_context(read_deleted='yes')
|
||||
begin, end = utils.last_completed_audit_period()
|
||||
bw = {}
|
||||
@ -86,9 +88,12 @@ def notify_usage_exists(context, instance_ref, current_period=False,
|
||||
|
||||
bw[label] = dict(bw_in=b.bw_in, bw_out=b.bw_out)
|
||||
|
||||
# add image metadata to the notification:
|
||||
image_meta = _get_image_meta(context, instance_ref)
|
||||
|
||||
extra_info = dict(audit_period_beginning=str(audit_start),
|
||||
audit_period_ending=str(audit_end),
|
||||
bandwidth=bw)
|
||||
bandwidth=bw, image_meta=image_meta)
|
||||
|
||||
if extra_usage_info:
|
||||
extra_info.update(extra_usage_info)
|
||||
@ -97,6 +102,12 @@ def notify_usage_exists(context, instance_ref, current_period=False,
|
||||
context, instance_ref, 'exists', extra_usage_info=extra_info)
|
||||
|
||||
|
||||
def _get_image_meta(context, instance_ref):
|
||||
image_service, image_id = image.get_image_service(context,
|
||||
instance_ref["image_ref"])
|
||||
return image_service.show(context, image_id)
|
||||
|
||||
|
||||
def legacy_network_info(network_model):
|
||||
"""
|
||||
Return the legacy network_info representation of the network_model
|
||||
|
@ -98,9 +98,10 @@ class UsageInfoTestCase(test.TestCase):
|
||||
for attr in ('display_name', 'created_at', 'launched_at',
|
||||
'state', 'state_description',
|
||||
'bandwidth', 'audit_period_beginning',
|
||||
'audit_period_ending'):
|
||||
'audit_period_ending', 'image_meta'):
|
||||
self.assertTrue(attr in payload,
|
||||
msg="Key %s not in payload" % attr)
|
||||
self.assertEquals(payload['image_meta']['id'], 1)
|
||||
image_ref_url = "%s/images/1" % utils.generate_glance_url()
|
||||
self.assertEquals(payload['image_ref_url'], image_ref_url)
|
||||
self.compute.terminate_instance(self.context, instance['uuid'])
|
||||
|
Loading…
Reference in New Issue
Block a user