Merge "Ignore the image name when booting from volume"

This commit is contained in:
Jenkins 2014-03-05 23:45:33 +00:00 committed by Gerrit Code Review
commit c07a46707d
2 changed files with 14 additions and 5 deletions

View File

@ -968,10 +968,11 @@ class ComputeManager(manager.Manager):
if request_spec and request_spec.get('image'):
image_meta = request_spec['image']
extra_usage_info = {"image_name": image_meta['name']}
else:
image_meta = {}
extra_usage_info = {"image_name": image_meta.get('name', '')}
notify("start") # notify that build is starting
instance, network_info = self._build_instance(context,

View File

@ -3213,25 +3213,24 @@ class ComputeTestCase(BaseTestCase):
self.compute.terminate_instance(self.context,
self._objectify(instance), [], [])
def test_run_instance_usage_notification(self):
def test_run_instance_usage_notification(self, request_spec={}):
# Ensure run instance generates appropriate usage notification.
instance = jsonutils.to_primitive(self._create_fake_instance())
instance_uuid = instance['uuid']
request_spec = {'image': {'name': 'fake_name'}}
expected_image_name = request_spec.get('image', {}).get('name', '')
self.compute.run_instance(self.context, instance, request_spec,
{}, [], None, None, True, None, False)
self.assertEqual(len(fake_notifier.NOTIFICATIONS), 2)
inst_ref = db.instance_get_by_uuid(self.context, instance_uuid)
msg = fake_notifier.NOTIFICATIONS[0]
self.assertEqual(msg.event_type, 'compute.instance.create.start')
self.assertEqual(msg.payload['image_name'], 'fake_name')
# The last event is the one with the sugar in it.
msg = fake_notifier.NOTIFICATIONS[1]
self.assertEqual(msg.priority, 'INFO')
self.assertEqual(msg.event_type, 'compute.instance.create.end')
payload = msg.payload
self.assertEqual(payload['tenant_id'], self.project_id)
self.assertEqual(payload['image_name'], 'fake_name')
self.assertEqual(expected_image_name, payload['image_name'])
self.assertEqual(payload['user_id'], self.user_id)
self.assertEqual(payload['instance_id'], inst_ref['uuid'])
self.assertEqual(payload['instance_type'], 'm1.tiny')
@ -3251,6 +3250,15 @@ class ComputeTestCase(BaseTestCase):
self.compute.terminate_instance(self.context,
self._objectify(inst_ref), [], [])
def test_run_instance_image_usage_notification(self):
request_spec = {'image': {'name': 'fake_name', 'key': 'value'}}
self.test_run_instance_usage_notification(request_spec=request_spec)
def test_run_instance_usage_notification_volume_meta(self):
# Volume's image metadata won't contain the image name
request_spec = {'image': {'key': 'value'}}
self.test_run_instance_usage_notification(request_spec=request_spec)
def test_run_instance_end_notification_on_abort(self):
# Test that an end notif is sent if the build is aborted
instance = jsonutils.to_primitive(self._create_fake_instance())