Merge "Use cell targeted context to query BDMs for metadata" into stable/victoria
This commit is contained in:
commit
8fab5fc7c7
|
@ -124,8 +124,13 @@ class InstanceMetadata(object):
|
|||
if not content:
|
||||
content = []
|
||||
|
||||
# NOTE(gibi): this is not a cell targeted context even if we are called
|
||||
# in a situation when the instance is in a different cell than the
|
||||
# metadata service itself.
|
||||
ctxt = context.get_admin_context()
|
||||
|
||||
self.mappings = _format_instance_mapping(instance)
|
||||
|
||||
# NOTE(danms): Sanitize the instance to limit the amount of stuff
|
||||
# inside that may not pickle well (i.e. context). We also touch
|
||||
# some of the things we'll lazy load later to make sure we keep their
|
||||
|
@ -147,8 +152,6 @@ class InstanceMetadata(object):
|
|||
self.security_groups = security_group_api.get_instance_security_groups(
|
||||
ctxt, instance)
|
||||
|
||||
self.mappings = _format_instance_mapping(ctxt, instance)
|
||||
|
||||
if instance.user_data is not None:
|
||||
self.userdata_raw = base64.decode_as_bytes(instance.user_data)
|
||||
else:
|
||||
|
@ -696,9 +699,8 @@ def get_metadata_by_instance_id(instance_id, address, ctxt=None):
|
|||
return InstanceMetadata(instance, address)
|
||||
|
||||
|
||||
def _format_instance_mapping(ctxt, instance):
|
||||
bdms = objects.BlockDeviceMappingList.get_by_instance_uuid(
|
||||
ctxt, instance.uuid)
|
||||
def _format_instance_mapping(instance):
|
||||
bdms = instance.get_bdms()
|
||||
return block_device.instance_block_mapping(instance, bdms)
|
||||
|
||||
|
||||
|
|
|
@ -322,12 +322,14 @@ class MetadataTestCase(test.TestCase):
|
|||
'uuid': 'e5fe5518-0288-4fa3-b0c4-c79764101b85',
|
||||
'root_device_name': None,
|
||||
'default_ephemeral_device': None,
|
||||
'default_swap_device': None})
|
||||
'default_swap_device': None,
|
||||
'context': self.context})
|
||||
instance_ref1 = objects.Instance(**{'id': 0,
|
||||
'uuid': 'b65cee2f-8c69-4aeb-be2f-f79742548fc2',
|
||||
'root_device_name': '/dev/sda1',
|
||||
'default_ephemeral_device': None,
|
||||
'default_swap_device': None})
|
||||
'default_swap_device': None,
|
||||
'context': self.context})
|
||||
|
||||
def fake_bdm_get(ctxt, uuid):
|
||||
return [fake_block_device.FakeDbBlockDeviceDict(
|
||||
|
@ -366,10 +368,12 @@ class MetadataTestCase(test.TestCase):
|
|||
'swap': '/dev/sdc',
|
||||
'ebs0': '/dev/sdh'}
|
||||
|
||||
self.assertEqual(base._format_instance_mapping(self.context,
|
||||
instance_ref0), block_device._DEFAULT_MAPPINGS)
|
||||
self.assertEqual(base._format_instance_mapping(self.context,
|
||||
instance_ref1), expected)
|
||||
self.assertEqual(
|
||||
base._format_instance_mapping(instance_ref0),
|
||||
block_device._DEFAULT_MAPPINGS)
|
||||
self.assertEqual(
|
||||
base._format_instance_mapping(instance_ref1),
|
||||
expected)
|
||||
|
||||
def test_pubkey(self):
|
||||
md = fake_InstanceMetadata(self, self.instance.obj_clone())
|
||||
|
|
Loading…
Reference in New Issue