Skip to content

Commit 4cc5db8

Browse files
Zuulopenstack-gerrit
authored andcommitted
Merge "Use real SDK objects in tests"
2 parents e351b7d + dc60874 commit 4cc5db8

File tree

2 files changed

+105
-82
lines changed

2 files changed

+105
-82
lines changed

nova/tests/unit/api/openstack/compute/test_baremetal_nodes.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ def test_index_ironic(self):
5555
'host': 'IRONIC MANAGED',
5656
'disk_gb': properties['local_gb'],
5757
'interfaces': [],
58-
'task_state': None,
58+
'task_state': 'available',
5959
'id': node.id,
6060
'cpus': properties['cpus']}]}
6161
self.assertEqual(expected_output, res_dict)
@@ -73,7 +73,7 @@ def test_index_ironic_missing_properties(self):
7373
'host': 'IRONIC MANAGED',
7474
'disk_gb': 0,
7575
'interfaces': [],
76-
'task_state': None,
76+
'task_state': 'available',
7777
'id': node.id,
7878
'cpus': properties['cpus']}]}
7979
self.assertEqual(expected_output, res_dict)
@@ -94,7 +94,7 @@ def test_show_ironic(self):
9494
'host': 'IRONIC MANAGED',
9595
'disk_gb': properties['local_gb'],
9696
'interfaces': [{'address': port.address}],
97-
'task_state': None,
97+
'task_state': 'available',
9898
'id': node.id,
9999
'cpus': properties['cpus']}}
100100
self.assertEqual(expected_output, res_dict)
@@ -116,7 +116,7 @@ def test_show_ironic_no_properties(self):
116116
'host': 'IRONIC MANAGED',
117117
'disk_gb': 0,
118118
'interfaces': [{'address': port.address}],
119-
'task_state': None,
119+
'task_state': 'available',
120120
'id': node.id,
121121
'cpus': 0}}
122122
self.assertEqual(expected_output, res_dict)

nova/tests/unit/virt/ironic/utils.py

Lines changed: 101 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@
1414
# under the License.
1515

1616
from openstack.baremetal.v1 import node as _node
17+
from openstack.baremetal.v1 import port as _port
18+
from openstack.baremetal.v1 import port_group as _port_group
19+
from openstack.baremetal.v1 import volume_connector as _volume_connector
20+
from openstack.baremetal.v1 import volume_target as _volume_target
1721

1822
from nova import objects
1923
from nova.virt.ironic import ironic_states
@@ -36,71 +40,78 @@ def get_test_node(fields=None, **kw):
3640
if 'uuid' in kw or 'instance_uuid' in kw or 'maintenance' in kw:
3741
raise Exception('Invalid property provided')
3842

39-
node = {'id': kw.get('id', 'eeeeeeee-dddd-cccc-bbbb-aaaaaaaaaaaa'),
40-
'chassis_uuid': kw.get('chassis_uuid'),
41-
'power_state': kw.get('power_state', ironic_states.NOSTATE),
42-
'target_power_state': kw.get('target_power_state',
43+
node = {
44+
'id': kw.get('id', 'eeeeeeee-dddd-cccc-bbbb-aaaaaaaaaaaa'),
45+
'chassis_uuid': kw.get('chassis_uuid'),
46+
'power_state': kw.get('power_state', ironic_states.NOSTATE),
47+
'target_power_state': kw.get('target_power_state',
48+
ironic_states.NOSTATE),
49+
'provision_state': kw.get('provision_state', ironic_states.AVAILABLE),
50+
'target_provision_state': kw.get('target_provision_state',
4351
ironic_states.NOSTATE),
44-
'provision_state': kw.get('provision_state',
45-
ironic_states.NOSTATE),
46-
'target_provision_state': kw.get('target_provision_state',
47-
ironic_states.NOSTATE),
48-
'last_error': kw.get('last_error'),
49-
'instance_id': kw.get('instance_id'),
50-
'instance_info': kw.get('instance_info'),
51-
'driver': kw.get('driver', 'fake'),
52-
'driver_info': kw.get('driver_info', {}),
53-
'properties': kw.get('properties', {}),
54-
'reservation': kw.get('reservation'),
55-
'is_maintenance': kw.get('is_maintenance'),
56-
'network_interface': kw.get('network_interface'),
57-
'resource_class': kw.get('resource_class'),
58-
'traits': kw.get('traits', []),
59-
'extra': kw.get('extra', {}),
60-
'updated_at': kw.get('created_at'),
61-
'created_at': kw.get('updated_at')}
52+
'last_error': kw.get('last_error'),
53+
'instance_id': kw.get('instance_id'),
54+
'instance_info': kw.get('instance_info'),
55+
'driver': kw.get('driver', 'fake'),
56+
'driver_info': kw.get('driver_info', {}),
57+
'properties': kw.get('properties', {}),
58+
'reservation': kw.get('reservation'),
59+
'is_maintenance': kw.get('is_maintenance'),
60+
'network_interface': kw.get('network_interface'),
61+
'resource_class': kw.get('resource_class'),
62+
'traits': kw.get('traits', []),
63+
'extra': kw.get('extra', {}),
64+
'updated_at': kw.get('created_at'),
65+
'created_at': kw.get('updated_at'),
66+
}
6267

6368
if fields is not None:
6469
node = {key: value for key, value in node.items() if key in fields}
6570

66-
return type('node', (object,), node)()
71+
return _node.Node(**node)
6772

6873

6974
def get_test_port(**kw):
7075
# NOTE(stephenfin): Prevent invalid properties making their way through
7176
if 'uuid' in kw or 'node_uuid' in kw or 'portgroup_uuid' in kw:
7277
raise Exception('Invalid property provided')
7378

74-
return type('port', (object,),
75-
{'id': kw.get('id', 'gggggggg-uuuu-qqqq-ffff-llllllllllll'),
76-
'node_id': kw.get('node_id', get_test_node().id),
77-
'address': kw.get('address', 'FF:FF:FF:FF:FF:FF'),
78-
'extra': kw.get('extra', {}),
79-
'internal_info': kw.get('internal_info', {}),
80-
'port_group_id': kw.get('port_group_id'),
81-
'created_at': kw.get('created_at'),
82-
'updated_at': kw.get('updated_at')})()
79+
port = {
80+
'id': kw.get('id', 'gggggggg-uuuu-qqqq-ffff-llllllllllll'),
81+
'node_id': kw.get('node_id', get_test_node().id),
82+
'address': kw.get('address', 'FF:FF:FF:FF:FF:FF'),
83+
'extra': kw.get('extra', {}),
84+
'internal_info': kw.get('internal_info', {}),
85+
'port_group_id': kw.get('port_group_id'),
86+
'created_at': kw.get('created_at'),
87+
'updated_at': kw.get('updated_at'),
88+
}
89+
90+
return _port.Port(**port)
8391

8492

8593
def get_test_portgroup(**kw):
8694
# NOTE(stephenfin): Prevent invalid properties making their way through
8795
if 'uuid' in kw or 'node_uuid' in kw:
8896
raise Exception('Invalid property provided')
8997

90-
return type('portgroup', (object,),
91-
{'id': kw.get('id', 'deaffeed-1234-5678-9012-fedcbafedcba'),
92-
'node_id': kw.get('node_id', get_test_node().id),
93-
'address': kw.get('address', 'EE:EE:EE:EE:EE:EE'),
94-
'extra': kw.get('extra', {}),
95-
'internal_info': kw.get('internal_info', {}),
96-
'properties': kw.get('properties', {}),
97-
'mode': kw.get('mode', 'active-backup'),
98-
'name': kw.get('name'),
99-
'standalone_ports_supported': kw.get(
100-
'standalone_ports_supported', True,
101-
),
102-
'created_at': kw.get('created_at'),
103-
'updated_at': kw.get('updated_at')})()
98+
port_group = {
99+
'id': kw.get('id', 'deaffeed-1234-5678-9012-fedcbafedcba'),
100+
'node_id': kw.get('node_id', get_test_node().id),
101+
'address': kw.get('address', 'EE:EE:EE:EE:EE:EE'),
102+
'extra': kw.get('extra', {}),
103+
'internal_info': kw.get('internal_info', {}),
104+
'properties': kw.get('properties', {}),
105+
'mode': kw.get('mode', 'active-backup'),
106+
'name': kw.get('name'),
107+
'is_standalone_ports_supported': kw.get(
108+
'is_standalone_ports_supported', True,
109+
),
110+
'created_at': kw.get('created_at'),
111+
'updated_at': kw.get('updated_at'),
112+
}
113+
114+
return _port_group.PortGroup(**port_group)
104115

105116

106117
def get_test_vif(**kw):
@@ -118,57 +129,69 @@ def get_test_vif(**kw):
118129
'active': kw.get('active', True),
119130
'type': kw.get('type', 'ironic'),
120131
'id': kw.get('id', 'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee'),
121-
'qbg_params': kw.get('qbg_params')}
132+
'qbg_params': kw.get('qbg_params'),
133+
}
122134

123135

124136
def get_test_volume_connector(**kw):
125137
# NOTE(stephenfin): Prevent invalid properties making their way through
126138
if 'uuid' in kw or 'node_uuid' in kw:
127139
raise Exception('Invalid property provided')
128140

129-
return type('volume_connector', (object,),
130-
{'id': kw.get('id', 'hhhhhhhh-qqqq-uuuu-mmmm-bbbbbbbbbbbb'),
131-
'node_id': kw.get('node_id', get_test_node().id),
132-
'type': kw.get('type', 'iqn'),
133-
'connector_id': kw.get('connector_id', 'iqn.test'),
134-
'extra': kw.get('extra', {}),
135-
'created_at': kw.get('created_at'),
136-
'updated_at': kw.get('updated_at')})()
141+
volume_connector = {
142+
'id': kw.get('id', 'hhhhhhhh-qqqq-uuuu-mmmm-bbbbbbbbbbbb'),
143+
'node_id': kw.get('node_id', get_test_node().id),
144+
'type': kw.get('type', 'iqn'),
145+
'connector_id': kw.get('connector_id', 'iqn.test'),
146+
'extra': kw.get('extra', {}),
147+
'created_at': kw.get('created_at'),
148+
'updated_at': kw.get('updated_at'),
149+
}
150+
151+
return _volume_connector.VolumeConnector(**volume_connector)
137152

138153

139154
def get_test_volume_target(**kw):
140155
# NOTE(stephenfin): Prevent invalid properties making their way through
141156
if 'uuid' in kw or 'node_uuid' in kw:
142157
raise Exception('Invalid property provided')
143158

144-
return type('volume_target', (object,),
145-
{'id': kw.get('id', 'aaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee'),
146-
'node_id': kw.get('node_id', get_test_node().id),
147-
'volume_type': kw.get('volume_type', 'iscsi'),
148-
'properties': kw.get('properties', {}),
149-
'boot_index': kw.get('boot_index', 0),
150-
'volume_id': kw.get('volume_id',
151-
'fffffff-gggg-hhhh-iiii-jjjjjjjjjjjj'),
152-
'extra': kw.get('extra', {}),
153-
'created_at': kw.get('created_at'),
154-
'updated_at': kw.get('updated_at')})()
159+
volume_target = {
160+
'id': kw.get('id', 'aaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee'),
161+
'node_id': kw.get('node_id', get_test_node().id),
162+
'volume_type': kw.get('volume_type', 'iscsi'),
163+
'properties': kw.get('properties', {}),
164+
'boot_index': kw.get('boot_index', 0),
165+
'volume_id': kw.get(
166+
'volume_id', 'fffffff-gggg-hhhh-iiii-jjjjjjjjjjjj',
167+
),
168+
'extra': kw.get('extra', {}),
169+
'created_at': kw.get('created_at'),
170+
'updated_at': kw.get('updated_at'),
171+
}
172+
173+
return _volume_target.VolumeTarget(**volume_target)
155174

156175

157176
def get_test_flavor(**kw):
158-
default_extra_specs = {'baremetal:deploy_kernel_id':
159-
'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa',
160-
'baremetal:deploy_ramdisk_id':
161-
'bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb'}
162-
flavor = {'name': kw.get('name', 'fake.flavor'),
163-
'extra_specs': kw.get('extra_specs', default_extra_specs),
164-
'swap': kw.get('swap', 0),
165-
'root_gb': 1,
166-
'memory_mb': 1,
167-
'vcpus': 1,
168-
'ephemeral_gb': kw.get('ephemeral_gb', 0)}
177+
default_extra_specs = {
178+
'baremetal:deploy_kernel_id': 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa',
179+
'baremetal:deploy_ramdisk_id': 'bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb',
180+
}
181+
flavor = {
182+
'name': kw.get('name', 'fake.flavor'),
183+
'extra_specs': kw.get('extra_specs', default_extra_specs),
184+
'swap': kw.get('swap', 0),
185+
'root_gb': 1,
186+
'memory_mb': 1,
187+
'vcpus': 1,
188+
'ephemeral_gb': kw.get('ephemeral_gb', 0),
189+
}
190+
169191
return objects.Flavor(**flavor)
170192

171193

172194
def get_test_image_meta(**kw):
173195
return objects.ImageMeta.from_dict(
174-
{'id': kw.get('id', 'cccccccc-cccc-cccc-cccc-cccccccccccc')})
196+
{'id': kw.get('id', 'cccccccc-cccc-cccc-cccc-cccccccccccc')},
197+
)

0 commit comments

Comments
 (0)