Skip to content

Commit f6667b0

Browse files
Tetsuro Nakamuratetsuro0907
authored andcommitted
Add in_tree field to RequestGroup object
This patch adds new `in_tree` field to `RequestGroup` object. This field is used to store the target compute node uuid. Change-Id: Ic9444c60b3bba00c5a3b3c724c418c7629d41743 Blueprint: use-placement-in-tree
1 parent e25d590 commit f6667b0

File tree

3 files changed

+24
-3
lines changed

3 files changed

+24
-3
lines changed

nova/objects/request_spec.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -989,7 +989,8 @@ class RequestGroup(base.NovaObject):
989989
"""
990990
# Version 1.0: Initial version
991991
# Version 1.1: add requester_id and provider_uuids fields
992-
VERSION = '1.1'
992+
# Version 1.2: add in_tree field
993+
VERSION = '1.2'
993994

994995
fields = {
995996
'use_same_provider': fields.BooleanField(default=True),
@@ -1010,6 +1011,7 @@ class RequestGroup(base.NovaObject):
10101011
# NOTE(gibi): this can be more than one if this is the unnumbered
10111012
# request group (i.e. use_same_provider=False)
10121013
'provider_uuids': fields.ListOfUUIDField(default=[]),
1014+
'in_tree': fields.UUIDField(nullable=True, default=None),
10131015
}
10141016

10151017
def __init__(self, context=None, **kwargs):
@@ -1054,6 +1056,9 @@ def obj_make_compatible(self, primitive, target_version):
10541056
super(RequestGroup, self).obj_make_compatible(
10551057
primitive, target_version)
10561058
target_version = versionutils.convert_version_to_tuple(target_version)
1059+
if target_version < (1, 2):
1060+
if 'in_tree' in primitive:
1061+
del primitive['in_tree']
10571062
if target_version < (1, 1):
10581063
if 'requester_id' in primitive:
10591064
del primitive['requester_id']

nova/tests/unit/objects/test_objects.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1120,7 +1120,7 @@ def obj_name(cls):
11201120
'PowerVMLiveMigrateData': '1.4-a745f4eda16b45e1bc5686a0c498f27e',
11211121
'Quotas': '1.3-40fcefe522111dddd3e5e6155702cf4e',
11221122
'QuotasNoOp': '1.3-347a039fc7cfee7b225b68b5181e0733',
1123-
'RequestGroup': '1.1-5a330f65df2d91356b1da19f10540ec8',
1123+
'RequestGroup': '1.2-b9f9db748fe8cde0573af69db771c5ce',
11241124
'RequestSpec': '1.12-25010470f219af9b6163f2a457a513f5',
11251125
'S3ImageMapping': '1.0-7dd7366a890d82660ed121de9092276e',
11261126
'SCSIDeviceBus': '1.0-61c1e89a00901069ab1cf2991681533b',

nova/tests/unit/objects/test_request_spec.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -930,8 +930,9 @@ def test_fields_defaulted_at_create(self):
930930
self.assertEqual(set(), rg.required_traits)
931931
self.assertEqual(set(), rg.forbidden_traits)
932932
self.assertEqual([], rg.aggregates)
933-
self.assertIsNone(None, rg.requester_id)
933+
self.assertIsNone(rg.requester_id)
934934
self.assertEqual([], rg.provider_uuids)
935+
self.assertIsNone(rg.in_tree)
935936

936937
def test_from_port_request(self):
937938
port_resource_request = {
@@ -982,9 +983,24 @@ def test_compat_requester_and_provider(self):
982983
requester_id=uuids.requester, provider_uuids=[uuids.rp1],
983984
required_traits=set(['CUSTOM_PHYSNET_2']))
984985
versions = ovo_base.obj_tree_get_versions('RequestGroup')
986+
primitive = req_obj.obj_to_primitive(
987+
target_version='1.2',
988+
version_manifest=versions)['nova_object.data']
989+
self.assertIn('in_tree', primitive)
990+
self.assertIn('requester_id', primitive)
991+
self.assertIn('provider_uuids', primitive)
992+
self.assertIn('required_traits', primitive)
993+
primitive = req_obj.obj_to_primitive(
994+
target_version='1.1',
995+
version_manifest=versions)['nova_object.data']
996+
self.assertNotIn('in_tree', primitive)
997+
self.assertIn('requester_id', primitive)
998+
self.assertIn('provider_uuids', primitive)
999+
self.assertIn('required_traits', primitive)
9851000
primitive = req_obj.obj_to_primitive(
9861001
target_version='1.0',
9871002
version_manifest=versions)['nova_object.data']
1003+
self.assertNotIn('in_tree', primitive)
9881004
self.assertNotIn('requester_id', primitive)
9891005
self.assertNotIn('provider_uuids', primitive)
9901006
self.assertIn('required_traits', primitive)

0 commit comments

Comments
 (0)