summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.openstack.org>2017-12-22 19:48:47 +0000
committerGerrit Code Review <review@openstack.org>2017-12-22 19:48:47 +0000
commit506e4f5fce02c743e149c051e0d2924291aa51aa (patch)
tree9bc299ddf1a7e81cb19e7df5d25bed49645689ab
parentd67cfbc8ca60c7820883daa2d0917dedc0958d65 (diff)
parent99b9cff2e49c42b4ba7fbaad8393fd89268f1f6b (diff)
downloadnova-506e4f5fce02c743e149c051e0d2924291aa51aa.tar.gz
Merge "Use instance.project_id when creating request specs for old instances" into stable/newton
-rw-r--r--nova/objects/request_spec.py9
-rw-r--r--nova/tests/functional/db/test_request_spec.py7
2 files changed, 11 insertions, 5 deletions
diff --git a/nova/objects/request_spec.py b/nova/objects/request_spec.py
index 99fcea6a3b..660bc5a21b 100644
--- a/nova/objects/request_spec.py
+++ b/nova/objects/request_spec.py
@@ -365,7 +365,7 @@ class RequestSpec(base.NovaObject):
@classmethod
def from_components(cls, context, instance_uuid, image, flavor,
numa_topology, pci_requests, filter_properties, instance_group,
- availability_zone):
+ availability_zone, project_id=None):
"""Returns a new RequestSpec object hydrated by various components.
This helper is useful in creating the RequestSpec from the various
@@ -382,6 +382,8 @@ class RequestSpec(base.NovaObject):
:param filter_properties: a dict of properties for scheduling
:param instance_group: None or an instance group NovaObject
:param availability_zone: an availability_zone string
+ :param project_id: The project_id for the requestspec (should match
+ the instance project_id).
"""
spec_obj = cls(context)
spec_obj.num_instances = 1
@@ -389,7 +391,7 @@ class RequestSpec(base.NovaObject):
spec_obj.instance_group = instance_group
if spec_obj.instance_group is None and filter_properties:
spec_obj._populate_group_info(filter_properties)
- spec_obj.project_id = context.project_id
+ spec_obj.project_id = project_id or context.project_id
spec_obj._image_meta_from_image(image)
spec_obj._from_flavor(flavor)
spec_obj._from_instance_pci_requests(pci_requests)
@@ -555,7 +557,8 @@ def _create_minimal_request_spec(context, instance):
context, instance.uuid, image,
instance.flavor, instance.numa_topology,
instance.pci_requests,
- filter_properties, None, instance.availability_zone
+ filter_properties, None, instance.availability_zone,
+ project_id=instance.project_id
)
request_spec.create()
diff --git a/nova/tests/functional/db/test_request_spec.py b/nova/tests/functional/db/test_request_spec.py
index c012172bf1..a5c560d162 100644
--- a/nova/tests/functional/db/test_request_spec.py
+++ b/nova/tests/functional/db/test_request_spec.py
@@ -138,9 +138,12 @@ class RequestSpecInstanceMigrationTestCase(
self.assertEqual(0, done)
# Make sure all instances have now a related RequestSpec
- for uuid in [instance.uuid for instance in self.instances]:
+ for instance in self.instances:
+ uuid = instance.uuid
try:
- objects.RequestSpec.get_by_instance_uuid(self.context, uuid)
+ spec = objects.RequestSpec.get_by_instance_uuid(
+ self.context, uuid)
+ self.assertEqual(instance.project_id, spec.project_id)
except exception.RequestSpecNotFound:
self.fail("RequestSpec not found for instance UUID :%s ", uuid)