summaryrefslogtreecommitdiff
path: root/ironic/tests/unit
diff options
context:
space:
mode:
Diffstat (limited to 'ironic/tests/unit')
-rw-r--r--ironic/tests/unit/api/controllers/v1/test_chassis.py8
-rw-r--r--ironic/tests/unit/api/controllers/v1/test_node.py89
-rw-r--r--ironic/tests/unit/api/controllers/v1/test_port.py24
-rw-r--r--ironic/tests/unit/api/controllers/v1/test_portgroup.py18
-rw-r--r--ironic/tests/unit/api/controllers/v1/test_ramdisk.py24
-rw-r--r--ironic/tests/unit/api/controllers/v1/test_root.py12
-rw-r--r--ironic/tests/unit/api/controllers/v1/test_versions.py34
-rw-r--r--ironic/tests/unit/api/controllers/v1/test_volume.py4
-rw-r--r--ironic/tests/unit/api/controllers/v1/test_volume_connector.py22
-rw-r--r--ironic/tests/unit/api/controllers/v1/test_volume_target.py20
-rw-r--r--ironic/tests/unit/api/test_root.py5
-rw-r--r--ironic/tests/unit/common/test_release_mappings.py10
12 files changed, 153 insertions, 117 deletions
diff --git a/ironic/tests/unit/api/controllers/v1/test_chassis.py b/ironic/tests/unit/api/controllers/v1/test_chassis.py
index 87412e1d8..94e278c57 100644
--- a/ironic/tests/unit/api/controllers/v1/test_chassis.py
+++ b/ironic/tests/unit/api/controllers/v1/test_chassis.py
@@ -77,7 +77,7 @@ class TestListChassis(test_api_base.BaseApiTest):
fields = 'extra,description'
data = self.get_json(
'/chassis/%s?fields=%s' % (chassis.uuid, fields),
- headers={api_base.Version.string: str(api_v1.MAX_VER)})
+ headers={api_base.Version.string: str(api_v1.max_version())})
# We always append "links"
self.assertItemsEqual(['description', 'extra', 'links'], data)
@@ -89,7 +89,7 @@ class TestListChassis(test_api_base.BaseApiTest):
data = self.get_json(
'/chassis?fields=%s' % fields,
- headers={api_base.Version.string: str(api_v1.MAX_VER)})
+ headers={api_base.Version.string: str(api_v1.max_version())})
self.assertEqual(3, len(data['chassis']))
for ch in data['chassis']:
@@ -101,7 +101,7 @@ class TestListChassis(test_api_base.BaseApiTest):
fields = 'uuid,spongebob'
response = self.get_json(
'/chassis/%s?fields=%s' % (chassis.uuid, fields),
- headers={api_base.Version.string: str(api_v1.MAX_VER)},
+ headers={api_base.Version.string: str(api_v1.max_version())},
expect_errors=True)
self.assertEqual(http_client.BAD_REQUEST, response.status_int)
self.assertEqual('application/json', response.content_type)
@@ -112,7 +112,7 @@ class TestListChassis(test_api_base.BaseApiTest):
fields = 'uuid,extra'
response = self.get_json(
'/chassis/%s?fields=%s' % (chassis.uuid, fields),
- headers={api_base.Version.string: str(api_v1.MIN_VER)},
+ headers={api_base.Version.string: str(api_v1.min_version())},
expect_errors=True)
self.assertEqual(http_client.NOT_ACCEPTABLE, response.status_int)
diff --git a/ironic/tests/unit/api/controllers/v1/test_node.py b/ironic/tests/unit/api/controllers/v1/test_node.py
index c183c5d30..be6faf14e 100644
--- a/ironic/tests/unit/api/controllers/v1/test_node.py
+++ b/ironic/tests/unit/api/controllers/v1/test_node.py
@@ -90,7 +90,8 @@ class TestListNodes(test_api_base.BaseApiTest):
node = obj_utils.create_test_node(self.context,
chassis_id=self.chassis.id)
data = self.get_json(
- '/nodes', headers={api_base.Version.string: str(api_v1.MAX_VER)})
+ '/nodes',
+ headers={api_base.Version.string: str(api_v1.max_version())})
self.assertIn('instance_uuid', data['nodes'][0])
self.assertIn('maintenance', data['nodes'][0])
self.assertIn('power_state', data['nodes'][0])
@@ -125,7 +126,7 @@ class TestListNodes(test_api_base.BaseApiTest):
chassis_id=self.chassis.id)
data = self.get_json(
'/nodes/%s' % node.uuid,
- headers={api_base.Version.string: str(api_v1.MAX_VER)})
+ headers={api_base.Version.string: str(api_v1.max_version())})
self.assertEqual(node.uuid, data['uuid'])
self.assertIn('driver', data)
self.assertIn('driver_info', data)
@@ -184,7 +185,7 @@ class TestListNodes(test_api_base.BaseApiTest):
fields = 'extra,instance_info'
data = self.get_json(
'/nodes/%s?fields=%s' % (node.uuid, fields),
- headers={api_base.Version.string: str(api_v1.MAX_VER)})
+ headers={api_base.Version.string: str(api_v1.max_version())})
# We always append "links"
self.assertItemsEqual(['extra', 'instance_info', 'links'], data)
@@ -197,7 +198,7 @@ class TestListNodes(test_api_base.BaseApiTest):
data = self.get_json(
'/nodes?fields=%s' % fields,
- headers={api_base.Version.string: str(api_v1.MAX_VER)})
+ headers={api_base.Version.string: str(api_v1.max_version())})
self.assertEqual(3, len(data['nodes']))
for node in data['nodes']:
@@ -210,7 +211,7 @@ class TestListNodes(test_api_base.BaseApiTest):
fields = 'uuid,spongebob'
response = self.get_json(
'/nodes/%s?fields=%s' % (node.uuid, fields),
- headers={api_base.Version.string: str(api_v1.MAX_VER)},
+ headers={api_base.Version.string: str(api_v1.max_version())},
expect_errors=True)
self.assertEqual(http_client.BAD_REQUEST, response.status_int)
self.assertEqual('application/json', response.content_type)
@@ -222,7 +223,7 @@ class TestListNodes(test_api_base.BaseApiTest):
fields = 'uuid,extra'
response = self.get_json(
'/nodes/%s?fields=%s' % (node.uuid, fields),
- headers={api_base.Version.string: str(api_v1.MIN_VER)},
+ headers={api_base.Version.string: str(api_v1.min_version())},
expect_errors=True)
self.assertEqual(http_client.NOT_ACCEPTABLE, response.status_int)
@@ -233,7 +234,7 @@ class TestListNodes(test_api_base.BaseApiTest):
fields = 'driver_info'
data = self.get_json(
'/nodes/%s?fields=%s' % (node.uuid, fields),
- headers={api_base.Version.string: str(api_v1.MAX_VER)})
+ headers={api_base.Version.string: str(api_v1.max_version())})
# We always append "links"
self.assertItemsEqual(['driver_info', 'links'], data)
self.assertEqual('******', data['driver_info']['fake_password'])
@@ -254,7 +255,7 @@ class TestListNodes(test_api_base.BaseApiTest):
fields = 'network_interface'
response = self.get_json(
'/nodes/%s?fields=%s' % (node.uuid, fields),
- headers={api_base.Version.string: str(api_v1.MAX_VER)})
+ headers={api_base.Version.string: str(api_v1.max_version())})
self.assertIn('network_interface', response)
def test_get_all_interface_fields_invalid_api_version(self):
@@ -273,7 +274,7 @@ class TestListNodes(test_api_base.BaseApiTest):
fields_arg = ','.join(api_utils.V31_FIELDS)
response = self.get_json(
'/nodes/%s?fields=%s' % (node.uuid, fields_arg),
- headers={api_base.Version.string: str(api_v1.MAX_VER)})
+ headers={api_base.Version.string: str(api_v1.max_version())})
for field in api_utils.V31_FIELDS:
self.assertIn(field, response)
@@ -293,7 +294,7 @@ class TestListNodes(test_api_base.BaseApiTest):
fields = 'storage_interface'
response = self.get_json(
'/nodes/%s?fields=%s' % (node.uuid, fields),
- headers={api_base.Version.string: str(api_v1.MAX_VER)})
+ headers={api_base.Version.string: str(api_v1.max_version())})
self.assertIn('storage_interface', response)
def test_detail(self):
@@ -301,7 +302,7 @@ class TestListNodes(test_api_base.BaseApiTest):
chassis_id=self.chassis.id)
data = self.get_json(
'/nodes/detail',
- headers={api_base.Version.string: str(api_v1.MAX_VER)})
+ headers={api_base.Version.string: str(api_v1.max_version())})
self.assertEqual(node.uuid, data['nodes'][0]["uuid"])
self.assertIn('name', data['nodes'][0])
self.assertIn('driver', data['nodes'][0])
@@ -339,7 +340,7 @@ class TestListNodes(test_api_base.BaseApiTest):
data = self.get_json(
'/nodes/%s' % node.uuid,
- headers={api_base.Version.string: str(api_v1.MIN_VER)})
+ headers={api_base.Version.string: str(api_v1.min_version())})
self.assertEqual(states.NOSTATE, data['provision_state'])
data = self.get_json('/nodes/%s' % node.uuid,
@@ -351,7 +352,7 @@ class TestListNodes(test_api_base.BaseApiTest):
driver_internal_info={"foo": "bar"})
data = self.get_json(
'/nodes/%s' % node.uuid,
- headers={api_base.Version.string: str(api_v1.MIN_VER)})
+ headers={api_base.Version.string: str(api_v1.min_version())})
self.assertNotIn('driver_internal_info', data)
data = self.get_json('/nodes/%s' % node.uuid,
@@ -375,7 +376,7 @@ class TestListNodes(test_api_base.BaseApiTest):
inspection_started_at=some_time)
data = self.get_json(
'/nodes/%s' % node.uuid,
- headers={api_base.Version.string: str(api_v1.MIN_VER)})
+ headers={api_base.Version.string: str(api_v1.min_version())})
self.assertNotIn('inspection_finished_at', data)
self.assertNotIn('inspection_started_at', data)
@@ -391,7 +392,7 @@ class TestListNodes(test_api_base.BaseApiTest):
clean_step={"foo": "bar"})
data = self.get_json(
'/nodes/%s' % node.uuid,
- headers={api_base.Version.string: str(api_v1.MIN_VER)})
+ headers={api_base.Version.string: str(api_v1.min_version())})
self.assertNotIn('clean_step', data)
data = self.get_json('/nodes/%s' % node.uuid,
@@ -737,14 +738,14 @@ class TestListNodes(test_api_base.BaseApiTest):
data = self.get_json(
'/nodes/%s/volume/connectors' % node.uuid,
- headers={api_base.Version.string: str(api_v1.MAX_VER)})
+ headers={api_base.Version.string: str(api_v1.max_version())})
self.assertEqual(2, len(data['connectors']))
self.assertNotIn('next', data)
# Test collection pagination
data = self.get_json(
'/nodes/%s/volume/connectors?limit=1' % node.uuid,
- headers={api_base.Version.string: str(api_v1.MAX_VER)})
+ headers={api_base.Version.string: str(api_v1.max_version())})
self.assertEqual(1, len(data['connectors']))
self.assertIn('next', data)
@@ -755,7 +756,7 @@ class TestListNodes(test_api_base.BaseApiTest):
response = self.get_json(
'/nodes/volume/connectors',
expect_errors=True,
- headers={api_base.Version.string: str(api_v1.MAX_VER)})
+ headers={api_base.Version.string: str(api_v1.max_version())})
self.assertEqual(http_client.NOT_FOUND, response.status_int)
def test_volume_connectors_subresource_node_not_found(self):
@@ -763,7 +764,7 @@ class TestListNodes(test_api_base.BaseApiTest):
response = self.get_json(
'/nodes/%s/volume/connectors' % non_existent_uuid,
expect_errors=True,
- headers={api_base.Version.string: str(api_v1.MAX_VER)})
+ headers={api_base.Version.string: str(api_v1.max_version())})
self.assertEqual(http_client.NOT_FOUND, response.status_int)
def test_volume_targets_subresource(self):
@@ -776,14 +777,14 @@ class TestListNodes(test_api_base.BaseApiTest):
data = self.get_json(
'/nodes/%s/volume/targets' % node.uuid,
- headers={api_base.Version.string: str(api_v1.MAX_VER)})
+ headers={api_base.Version.string: str(api_v1.max_version())})
self.assertEqual(2, len(data['targets']))
self.assertNotIn('next', data)
# Test collection pagination
data = self.get_json(
'/nodes/%s/volume/targets?limit=1' % node.uuid,
- headers={api_base.Version.string: str(api_v1.MAX_VER)})
+ headers={api_base.Version.string: str(api_v1.max_version())})
self.assertEqual(1, len(data['targets']))
self.assertIn('next', data)
@@ -794,7 +795,7 @@ class TestListNodes(test_api_base.BaseApiTest):
response = self.get_json(
'/nodes/volume/targets',
expect_errors=True,
- headers={api_base.Version.string: str(api_v1.MAX_VER)})
+ headers={api_base.Version.string: str(api_v1.max_version())})
self.assertEqual(http_client.NOT_FOUND, response.status_int)
def test_volume_targets_subresource_node_not_found(self):
@@ -802,7 +803,7 @@ class TestListNodes(test_api_base.BaseApiTest):
response = self.get_json(
'/nodes/%s/volume/targets' % non_existent_uuid,
expect_errors=True,
- headers={api_base.Version.string: str(api_v1.MAX_VER)})
+ headers={api_base.Version.string: str(api_v1.max_version())})
self.assertEqual(http_client.NOT_FOUND, response.status_int)
@mock.patch.object(timeutils, 'utcnow')
@@ -1085,7 +1086,7 @@ class TestListNodes(test_api_base.BaseApiTest):
def test_get_nodes_by_driver_invalid_api_version(self):
response = self.get_json(
'/nodes?driver=fake',
- headers={api_base.Version.string: str(api_v1.MIN_VER)},
+ headers={api_base.Version.string: str(api_v1.min_version())},
expect_errors=True)
self.assertEqual(http_client.NOT_ACCEPTABLE, response.status_code)
self.assertTrue(response.json['error_message'])
@@ -1147,7 +1148,7 @@ class TestListNodes(test_api_base.BaseApiTest):
response = self.get_json(
base_url % 'fake',
- headers={api_base.Version.string: str(api_v1.MIN_VER)},
+ headers={api_base.Version.string: str(api_v1.min_version())},
expect_errors=True)
self.assertEqual(http_client.NOT_ACCEPTABLE, response.status_code)
self.assertTrue(response.json['error_message'])
@@ -1307,7 +1308,7 @@ class TestListNodes(test_api_base.BaseApiTest):
driver_info=driver_info)
data = self.get_json(
'/nodes/%s' % node.uuid,
- headers={api_base.Version.string: str(api_v1.MAX_VER)})
+ headers={api_base.Version.string: str(api_v1.max_version())})
self.assertEqual("******", data["driver_info"]["ssh_password"])
self.assertEqual("******", data["driver_info"]["ssh_key_contents"])
@@ -1562,7 +1563,7 @@ class TestPatch(test_api_base.BaseApiTest):
'/nodes/%s/volume/connectors' % self.node.uuid,
[{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}],
expect_errors=True,
- headers={api_base.Version.string: str(api_v1.MAX_VER)})
+ headers={api_base.Version.string: str(api_v1.max_version())})
self.assertEqual(http_client.BAD_REQUEST, response.status_int)
def test_patch_volume_connectors_subresource(self):
@@ -1574,7 +1575,7 @@ class TestPatch(test_api_base.BaseApiTest):
connector.uuid),
[{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}],
expect_errors=True,
- headers={api_base.Version.string: str(api_v1.MAX_VER)})
+ headers={api_base.Version.string: str(api_v1.max_version())})
self.assertEqual(http_client.FORBIDDEN, response.status_int)
def test_patch_volume_targets_subresource(self):
@@ -1585,7 +1586,7 @@ class TestPatch(test_api_base.BaseApiTest):
target.uuid),
[{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}],
expect_errors=True,
- headers={api_base.Version.string: str(api_v1.MAX_VER)})
+ headers={api_base.Version.string: str(api_v1.max_version())})
self.assertEqual(http_client.FORBIDDEN, response.status_int)
def test_remove_uuid(self):
@@ -1943,7 +1944,7 @@ class TestPatch(test_api_base.BaseApiTest):
uuid=uuidutils.generate_uuid())
self.mock_update_node.return_value = node
network_interface = 'flat'
- headers = {api_base.Version.string: str(api_v1.MAX_VER)}
+ headers = {api_base.Version.string: str(api_v1.max_version())}
response = self.patch_json('/nodes/%s' % node.uuid,
[{'path': '/network_interface',
'value': network_interface,
@@ -2029,7 +2030,7 @@ class TestPatch(test_api_base.BaseApiTest):
node = obj_utils.create_test_node(self.context,
uuid=uuidutils.generate_uuid())
self.mock_update_node.return_value = node
- headers = {api_base.Version.string: str(api_v1.MAX_VER)}
+ headers = {api_base.Version.string: str(api_v1.max_version())}
for field in api_utils.V31_FIELDS:
response = self.patch_json('/nodes/%s' % node.uuid,
[{'path': '/%s' % field,
@@ -2075,7 +2076,7 @@ class TestPatch(test_api_base.BaseApiTest):
uuid=uuidutils.generate_uuid())
self.mock_update_node.return_value = node
storage_interface = 'cinder'
- headers = {api_base.Version.string: str(api_v1.MAX_VER)}
+ headers = {api_base.Version.string: str(api_v1.max_version())}
response = self.patch_json('/nodes/%s' % node.uuid,
[{'path': '/storage_interface',
'value': storage_interface,
@@ -2473,7 +2474,7 @@ class TestPost(test_api_base.BaseApiTest):
response = self.post_json(
'/nodes/volume/connectors', pdict,
expect_errors=True,
- headers={api_base.Version.string: str(api_v1.MAX_VER)})
+ headers={api_base.Version.string: str(api_v1.max_version())})
self.assertEqual(http_client.NOT_FOUND, response.status_int)
def test_post_volume_connectors_subresource(self):
@@ -2483,7 +2484,7 @@ class TestPost(test_api_base.BaseApiTest):
response = self.post_json(
'/nodes/%s/volume/connectors' % node.uuid, pdict,
expect_errors=True,
- headers={api_base.Version.string: str(api_v1.MAX_VER)})
+ headers={api_base.Version.string: str(api_v1.max_version())})
self.assertEqual(http_client.FORBIDDEN, response.status_int)
def test_post_volume_targets_subresource(self):
@@ -2493,7 +2494,7 @@ class TestPost(test_api_base.BaseApiTest):
response = self.post_json(
'/nodes/%s/volume/targets' % node.uuid, pdict,
expect_errors=True,
- headers={api_base.Version.string: str(api_v1.MAX_VER)})
+ headers={api_base.Version.string: str(api_v1.max_version())})
self.assertEqual(http_client.FORBIDDEN, response.status_int)
def test_create_node_no_mandatory_field_driver(self):
@@ -2589,11 +2590,11 @@ class TestPost(test_api_base.BaseApiTest):
network_interface='flat')
response = self.post_json('/nodes', ndict,
headers={api_base.Version.string:
- str(api_v1.MAX_VER)})
+ str(api_v1.max_version())})
self.assertEqual(http_client.CREATED, response.status_int)
result = self.get_json('/nodes/%s' % ndict['uuid'],
headers={api_base.Version.string:
- str(api_v1.MAX_VER)})
+ str(api_v1.max_version())})
self.assertEqual('flat', result['network_interface'])
def test_create_node_network_interface_old_api_version(self):
@@ -2608,7 +2609,7 @@ class TestPost(test_api_base.BaseApiTest):
network_interface='foo')
response = self.post_json('/nodes', ndict, expect_errors=True,
headers={api_base.Version.string:
- str(api_v1.MAX_VER)})
+ str(api_v1.max_version())})
self.assertEqual('application/json', response.content_type)
self.assertEqual(http_client.BAD_REQUEST, response.status_int)
@@ -2617,11 +2618,11 @@ class TestPost(test_api_base.BaseApiTest):
resource_class='foo')
response = self.post_json('/nodes', ndict,
headers={api_base.Version.string:
- str(api_v1.MAX_VER)})
+ str(api_v1.max_version())})
self.assertEqual(http_client.CREATED, response.status_int)
result = self.get_json('/nodes/%s' % ndict['uuid'],
headers={api_base.Version.string:
- str(api_v1.MAX_VER)})
+ str(api_v1.max_version())})
self.assertEqual('foo', result['resource_class'])
def test_create_node_resource_class_old_api_version(self):
@@ -2643,7 +2644,7 @@ class TestPost(test_api_base.BaseApiTest):
ndict = test_api_utils.post_get_test_node(storage_interface='foo')
response = self.post_json('/nodes', ndict, expect_errors=True,
headers={api_base.Version.string:
- str(api_v1.MAX_VER)})
+ str(api_v1.max_version())})
self.assertEqual('application/json', response.content_type)
self.assertEqual(http_client.BAD_REQUEST, response.status_int)
@@ -2750,7 +2751,7 @@ class TestDelete(test_api_base.BaseApiTest):
response = self.delete(
'/nodes/%s/volume/connectors' % node.uuid,
expect_errors=True,
- headers={api_base.Version.string: str(api_v1.MAX_VER)})
+ headers={api_base.Version.string: str(api_v1.max_version())})
self.assertEqual(http_client.BAD_REQUEST, response.status_int)
def test_delete_volume_connectors_subresource(self):
@@ -2760,7 +2761,7 @@ class TestDelete(test_api_base.BaseApiTest):
response = self.delete(
'/nodes/%s/volume/connectors/%s' % (node.uuid, connector.uuid),
expect_errors=True,
- headers={api_base.Version.string: str(api_v1.MAX_VER)})
+ headers={api_base.Version.string: str(api_v1.max_version())})
self.assertEqual(http_client.FORBIDDEN, response.status_int)
def test_delete_volume_targets_subresource(self):
@@ -2770,7 +2771,7 @@ class TestDelete(test_api_base.BaseApiTest):
response = self.delete(
'/nodes/%s/volume/targets/%s' % (node.uuid, target.uuid),
expect_errors=True,
- headers={api_base.Version.string: str(api_v1.MAX_VER)})
+ headers={api_base.Version.string: str(api_v1.max_version())})
self.assertEqual(http_client.FORBIDDEN, response.status_int)
@mock.patch.object(notification_utils, '_emit_api_notification')
diff --git a/ironic/tests/unit/api/controllers/v1/test_port.py b/ironic/tests/unit/api/controllers/v1/test_port.py
index 09a01a89b..183450aca 100644
--- a/ironic/tests/unit/api/controllers/v1/test_port.py
+++ b/ironic/tests/unit/api/controllers/v1/test_port.py
@@ -233,7 +233,7 @@ class TestListPorts(test_api_base.BaseApiTest):
fields = 'address,extra'
data = self.get_json(
'/ports/%s?fields=%s' % (port.uuid, fields),
- headers={api_base.Version.string: str(api_v1.MAX_VER)})
+ headers={api_base.Version.string: str(api_v1.max_version())})
# We always append "links"
self.assertItemsEqual(['address', 'extra', 'links'], data)
@@ -242,7 +242,7 @@ class TestListPorts(test_api_base.BaseApiTest):
internal_info={"foo": "bar"})
data = self.get_json(
'/ports/%s' % port.uuid,
- headers={api_base.Version.string: str(api_v1.MIN_VER)})
+ headers={api_base.Version.string: str(api_v1.min_version())})
self.assertNotIn('internal_info', data)
data = self.get_json('/ports/%s' % port.uuid,
@@ -313,7 +313,7 @@ class TestListPorts(test_api_base.BaseApiTest):
data = self.get_json(
'/ports?fields=%s' % fields,
- headers={api_base.Version.string: str(api_v1.MAX_VER)})
+ headers={api_base.Version.string: str(api_v1.max_version())})
self.assertEqual(3, len(data['ports']))
for port in data['ports']:
@@ -325,7 +325,7 @@ class TestListPorts(test_api_base.BaseApiTest):
fields = 'uuid,spongebob'
response = self.get_json(
'/ports/%s?fields=%s' % (port.uuid, fields),
- headers={api_base.Version.string: str(api_v1.MAX_VER)},
+ headers={api_base.Version.string: str(api_v1.max_version())},
expect_errors=True)
self.assertEqual(http_client.BAD_REQUEST, response.status_int)
self.assertEqual('application/json', response.content_type)
@@ -336,7 +336,7 @@ class TestListPorts(test_api_base.BaseApiTest):
fields = 'uuid,extra'
response = self.get_json(
'/ports/%s?fields=%s' % (port.uuid, fields),
- headers={api_base.Version.string: str(api_v1.MIN_VER)},
+ headers={api_base.Version.string: str(api_v1.min_version())},
expect_errors=True)
self.assertEqual(http_client.NOT_ACCEPTABLE, response.status_int)
@@ -380,7 +380,7 @@ class TestListPorts(test_api_base.BaseApiTest):
physical_network='physnet1')
data = self.get_json(
'/ports/detail',
- headers={api_base.Version.string: str(api_v1.MAX_VER)}
+ headers={api_base.Version.string: str(api_v1.max_version())}
)
self.assertEqual(port.uuid, data['ports'][0]["uuid"])
self.assertIn('extra', data['ports'][0])
@@ -519,7 +519,7 @@ class TestListPorts(test_api_base.BaseApiTest):
for invalid_key in invalid_keys_list:
response = self.get_json(
'/ports?sort_key=%s' % invalid_key, expect_errors=True,
- headers={api_base.Version.string: str(api_v1.MAX_VER)}
+ headers={api_base.Version.string: str(api_v1.max_version())}
)
self.assertEqual(http_client.BAD_REQUEST, response.status_int)
self.assertEqual('application/json', response.content_type)
@@ -535,7 +535,7 @@ class TestListPorts(test_api_base.BaseApiTest):
address='52:54:00:cf:2d:3%s' % id_,
pxe_enabled=id_ % 2)
port_uuids.append(port.uuid)
- headers = {api_base.Version.string: str(api_v1.MAX_VER)}
+ headers = {api_base.Version.string: str(api_v1.max_version())}
detail_str = '/detail' if detail else ''
data = self.get_json('/ports%s?sort_key=pxe_enabled' % detail_str,
headers=headers)
@@ -1268,7 +1268,7 @@ class TestPatch(test_api_base.BaseApiTest):
def test_invalid_physnet_non_text(self, mock_upd):
physnet = 1234
- headers = {api_base.Version.string: versions.MAX_VERSION_STRING}
+ headers = {api_base.Version.string: versions.max_version_string()}
response = self.patch_json('/ports/%s' % self.port.uuid,
[{'path': '/physical_network',
'value': physnet,
@@ -1281,7 +1281,7 @@ class TestPatch(test_api_base.BaseApiTest):
def test_invalid_physnet_too_long(self, mock_upd):
physnet = 'p' * 65
- headers = {api_base.Version.string: versions.MAX_VERSION_STRING}
+ headers = {api_base.Version.string: versions.max_version_string()}
response = self.patch_json('/ports/%s' % self.port.uuid,
[{'path': '/physical_network',
'value': physnet,
@@ -1319,7 +1319,7 @@ class TestPost(test_api_base.BaseApiTest):
self.portgroup = obj_utils.create_test_portgroup(self.context,
node_id=self.node.id)
self.headers = {api_base.Version.string: str(
- versions.MAX_VERSION_STRING)}
+ versions.max_version_string())}
p = mock.patch.object(rpcapi.ConductorAPI, 'get_topic_for')
self.mock_gtf = p.start()
@@ -1370,7 +1370,7 @@ class TestPost(test_api_base.BaseApiTest):
pdict.pop('pxe_enabled')
pdict.pop('extra')
pdict.pop('physical_network')
- headers = {api_base.Version.string: str(api_v1.MIN_VER)}
+ headers = {api_base.Version.string: str(api_v1.min_version())}
response = self.post_json('/ports', pdict, headers=headers)
self.assertEqual('application/json', response.content_type)
self.assertEqual(http_client.CREATED, response.status_int)
diff --git a/ironic/tests/unit/api/controllers/v1/test_portgroup.py b/ironic/tests/unit/api/controllers/v1/test_portgroup.py
index 57f0b5284..48b301f55 100644
--- a/ironic/tests/unit/api/controllers/v1/test_portgroup.py
+++ b/ironic/tests/unit/api/controllers/v1/test_portgroup.py
@@ -51,7 +51,7 @@ class TestPortgroupObject(base.TestCase):
class TestListPortgroups(test_api_base.BaseApiTest):
- headers = {api_base.Version.string: str(api_v1.MAX_VER)}
+ headers = {api_base.Version.string: str(api_v1.max_version())}
def setUp(self):
super(TestListPortgroups, self).setUp()
@@ -152,7 +152,7 @@ class TestListPortgroups(test_api_base.BaseApiTest):
node_id=self.node.id)
response = self.get_json(
'/portgroups/%s' % (portgroup.uuid),
- headers={api_base.Version.string: str(api_v1.MIN_VER)},
+ headers={api_base.Version.string: str(api_v1.min_version())},
expect_errors=True)
self.assertEqual(http_client.NOT_FOUND, response.status_int)
@@ -170,7 +170,7 @@ class TestListPortgroups(test_api_base.BaseApiTest):
def test_detail_invalid_api_version(self):
response = self.get_json(
'/portgroups/detail',
- headers={api_base.Version.string: str(api_v1.MIN_VER)},
+ headers={api_base.Version.string: str(api_v1.min_version())},
expect_errors=True)
self.assertEqual(http_client.NOT_FOUND, response.status_int)
@@ -274,14 +274,14 @@ class TestListPortgroups(test_api_base.BaseApiTest):
# Test get one old api version, /portgroups controller not allowed
response = self.get_json('/portgroups/%s/ports/%s' % (
pg.uuid, uuidutils.generate_uuid()),
- headers={api_base.Version.string: str(api_v1.MIN_VER)},
+ headers={api_base.Version.string: str(api_v1.min_version())},
expect_errors=True)
self.assertEqual(http_client.NOT_FOUND, response.status_int)
# Test get one not allowed to access to /portgroups/<uuid>/ports/<uuid>
response = self.get_json(
'/portgroups/%s/ports/%s' % (pg.uuid, uuidutils.generate_uuid()),
- headers={api_base.Version.string: str(api_v1.MAX_VER)},
+ headers={api_base.Version.string: str(api_v1.max_version())},
expect_errors=True)
self.assertEqual(http_client.FORBIDDEN, response.status_int)
@@ -471,7 +471,7 @@ class TestListPortgroups(test_api_base.BaseApiTest):
@mock.patch.object(rpcapi.ConductorAPI, 'update_portgroup')
class TestPatch(test_api_base.BaseApiTest):
- headers = {api_base.Version.string: str(api_v1.MAX_VER)}
+ headers = {api_base.Version.string: str(api_v1.max_version())}
def setUp(self):
super(TestPatch, self).setUp()
@@ -865,7 +865,7 @@ class TestPatch(test_api_base.BaseApiTest):
'op': 'replace'}],
expect_errors=True,
headers={api_base.Version.string:
- str(api_v1.MIN_VER)})
+ str(api_v1.min_version())})
self.assertEqual('application/json', response.content_type)
self.assertEqual(http_client.NOT_FOUND, response.status_int)
self.assertTrue(response.json['error_message'])
@@ -929,7 +929,7 @@ class TestPatch(test_api_base.BaseApiTest):
class TestPost(test_api_base.BaseApiTest):
- headers = {api_base.Version.string: str(api_v1.MAX_VER)}
+ headers = {api_base.Version.string: str(api_v1.max_version())}
def setUp(self):
super(TestPost, self).setUp()
@@ -1205,7 +1205,7 @@ class TestPost(test_api_base.BaseApiTest):
@mock.patch.object(rpcapi.ConductorAPI, 'destroy_portgroup')
class TestDelete(test_api_base.BaseApiTest):
- headers = {api_base.Version.string: str(api_v1.MAX_VER)}
+ headers = {api_base.Version.string: str(api_v1.max_version())}
def setUp(self):
super(TestDelete, self).setUp()
diff --git a/ironic/tests/unit/api/controllers/v1/test_ramdisk.py b/ironic/tests/unit/api/controllers/v1/test_ramdisk.py
index 8d4ebc6d7..d49d7dbed 100644
--- a/ironic/tests/unit/api/controllers/v1/test_ramdisk.py
+++ b/ironic/tests/unit/api/controllers/v1/test_ramdisk.py
@@ -65,14 +65,14 @@ class TestLookup(test_api_base.BaseApiTest):
def test_nothing_provided(self):
response = self.get_json(
'/lookup',
- headers={api_base.Version.string: str(api_v1.MAX_VER)},
+ headers={api_base.Version.string: str(api_v1.max_version())},
expect_errors=True)
self.assertEqual(http_client.BAD_REQUEST, response.status_int)
def test_not_found(self):
response = self.get_json(
'/lookup?addresses=%s' % ','.join(self.addresses),
- headers={api_base.Version.string: str(api_v1.MAX_VER)},
+ headers={api_base.Version.string: str(api_v1.max_version())},
expect_errors=True)
self.assertEqual(http_client.NOT_FOUND, response.status_int)
@@ -83,7 +83,7 @@ class TestLookup(test_api_base.BaseApiTest):
response = self.get_json(
'/lookup?addresses=%s' % ','.join(self.addresses),
- headers={api_base.Version.string: str(api_v1.MIN_VER)},
+ headers={api_base.Version.string: str(api_v1.min_version())},
expect_errors=True)
self.assertEqual(http_client.NOT_FOUND, response.status_int)
@@ -94,7 +94,7 @@ class TestLookup(test_api_base.BaseApiTest):
data = self.get_json(
'/lookup?addresses=%s' % ','.join(self.addresses),
- headers={api_base.Version.string: str(api_v1.MAX_VER)})
+ headers={api_base.Version.string: str(api_v1.max_version())})
self.assertEqual(self.node.uuid, data['node']['uuid'])
self.assertEqual(set(ramdisk._LOOKUP_RETURN_FIELDS) | {'links'},
set(data['node']))
@@ -110,7 +110,7 @@ class TestLookup(test_api_base.BaseApiTest):
':f4:52:14:03:00:54:06:c2,' + ','.join(self.addresses))
data = self.get_json(
'/lookup?addresses=%s' % addresses,
- headers={api_base.Version.string: str(api_v1.MAX_VER)})
+ headers={api_base.Version.string: str(api_v1.max_version())})
self.assertEqual(self.node.uuid, data['node']['uuid'])
self.assertEqual(set(ramdisk._LOOKUP_RETURN_FIELDS) | {'links'},
set(data['node']))
@@ -121,7 +121,7 @@ class TestLookup(test_api_base.BaseApiTest):
data = self.get_json(
'/lookup?addresses=%s&node_uuid=%s' %
(','.join(self.addresses), self.node.uuid),
- headers={api_base.Version.string: str(api_v1.MAX_VER)})
+ headers={api_base.Version.string: str(api_v1.max_version())})
self.assertEqual(self.node.uuid, data['node']['uuid'])
self.assertEqual(set(ramdisk._LOOKUP_RETURN_FIELDS) | {'links'},
set(data['node']))
@@ -130,7 +130,7 @@ class TestLookup(test_api_base.BaseApiTest):
def test_found_by_only_uuid(self):
data = self.get_json(
'/lookup?node_uuid=%s' % self.node.uuid,
- headers={api_base.Version.string: str(api_v1.MAX_VER)})
+ headers={api_base.Version.string: str(api_v1.max_version())})
self.assertEqual(self.node.uuid, data['node']['uuid'])
self.assertEqual(set(ramdisk._LOOKUP_RETURN_FIELDS) | {'links'},
set(data['node']))
@@ -140,7 +140,7 @@ class TestLookup(test_api_base.BaseApiTest):
response = self.get_json(
'/lookup?addresses=%s&node_uuid=%s' %
(','.join(self.addresses), self.node2.uuid),
- headers={api_base.Version.string: str(api_v1.MAX_VER)},
+ headers={api_base.Version.string: str(api_v1.max_version())},
expect_errors=True)
self.assertEqual(http_client.NOT_FOUND, response.status_int)
@@ -149,7 +149,7 @@ class TestLookup(test_api_base.BaseApiTest):
data = self.get_json(
'/lookup?addresses=%s&node_uuid=%s' %
(','.join(self.addresses), self.node2.uuid),
- headers={api_base.Version.string: str(api_v1.MAX_VER)})
+ headers={api_base.Version.string: str(api_v1.max_version())})
self.assertEqual(self.node2.uuid, data['node']['uuid'])
self.assertEqual(set(ramdisk._LOOKUP_RETURN_FIELDS) | {'links'},
set(data['node']))
@@ -163,7 +163,7 @@ class TestHeartbeat(test_api_base.BaseApiTest):
response = self.post_json(
'/heartbeat/%s' % uuidutils.generate_uuid(),
{'callback_url': 'url'},
- headers={api_base.Version.string: str(api_v1.MIN_VER)},
+ headers={api_base.Version.string: str(api_v1.min_version())},
expect_errors=True)
self.assertEqual(http_client.NOT_FOUND, response.status_int)
@@ -171,7 +171,7 @@ class TestHeartbeat(test_api_base.BaseApiTest):
response = self.post_json(
'/heartbeat/%s' % uuidutils.generate_uuid(),
{'callback_url': 'url'},
- headers={api_base.Version.string: str(api_v1.MAX_VER)},
+ headers={api_base.Version.string: str(api_v1.max_version())},
expect_errors=True)
self.assertEqual(http_client.NOT_FOUND, response.status_int)
@@ -181,7 +181,7 @@ class TestHeartbeat(test_api_base.BaseApiTest):
response = self.post_json(
'/heartbeat/%s' % node.uuid,
{'callback_url': 'url'},
- headers={api_base.Version.string: str(api_v1.MAX_VER)})
+ headers={api_base.Version.string: str(api_v1.max_version())})
self.assertEqual(http_client.ACCEPTED, response.status_int)
self.assertEqual(b'', response.body)
mock_heartbeat.assert_called_once_with(mock.ANY, mock.ANY,
diff --git a/ironic/tests/unit/api/controllers/v1/test_root.py b/ironic/tests/unit/api/controllers/v1/test_root.py
index 817d2b7d2..449c65def 100644
--- a/ironic/tests/unit/api/controllers/v1/test_root.py
+++ b/ironic/tests/unit/api/controllers/v1/test_root.py
@@ -40,7 +40,7 @@ class TestCheckVersions(test_base.TestCase):
def test_check_version_invalid_major_version(self):
self.version.major = v1_api.BASE_VERSION + 1
- self.version.minor = v1_api.MIN_VER.minor
+ self.version.minor = v1_api.min_version().minor
self.assertRaises(
webob_exc.HTTPNotAcceptable,
v1_api.Controller()._check_version,
@@ -48,7 +48,7 @@ class TestCheckVersions(test_base.TestCase):
def test_check_version_too_low(self):
self.version.major = v1_api.BASE_VERSION
- self.version.minor = v1_api.MIN_VER.minor - 1
+ self.version.minor = v1_api.min_version().minor - 1
self.assertRaises(
webob_exc.HTTPNotAcceptable,
v1_api.Controller()._check_version,
@@ -56,14 +56,14 @@ class TestCheckVersions(test_base.TestCase):
def test_check_version_too_high(self):
self.version.major = v1_api.BASE_VERSION
- self.version.minor = v1_api.MAX_VER.minor + 1
+ self.version.minor = v1_api.max_version().minor + 1
e = self.assertRaises(
webob_exc.HTTPNotAcceptable,
v1_api.Controller()._check_version,
- self.version, {'fake-headers': v1_api.MAX_VER.minor})
- self.assertEqual(v1_api.MAX_VER.minor, e.headers['fake-headers'])
+ self.version, {'fake-headers': v1_api.max_version().minor})
+ self.assertEqual(v1_api.max_version().minor, e.headers['fake-headers'])
def test_check_version_ok(self):
self.version.major = v1_api.BASE_VERSION
- self.version.minor = v1_api.MIN_VER.minor
+ self.version.minor = v1_api.min_version().minor
v1_api.Controller()._check_version(self.version)
diff --git a/ironic/tests/unit/api/controllers/v1/test_versions.py b/ironic/tests/unit/api/controllers/v1/test_versions.py
index f5ac5672c..9f265b5ec 100644
--- a/ironic/tests/unit/api/controllers/v1/test_versions.py
+++ b/ironic/tests/unit/api/controllers/v1/test_versions.py
@@ -17,7 +17,11 @@ Tests for the versions constants and methods.
import re
+import mock
+
from ironic.api.controllers.v1 import versions
+from ironic.common import release_mappings
+from ironic.conf import CONF
from ironic.tests import base
@@ -36,16 +40,16 @@ class TestVersionConstants(base.TestCase):
self.minor_consts.sort(key=minor_key)
def test_max_ver_str(self):
- # Test to make sure MAX_VERSION_STRING corresponds with the largest
+ # Test to make sure _MAX_VERSION_STRING corresponds with the largest
# MINOR_ constant
max_ver = '1.{}'.format(getattr(versions, self.minor_consts[-1]))
- self.assertEqual(max_ver, versions.MAX_VERSION_STRING)
+ self.assertEqual(max_ver, versions._MAX_VERSION_STRING)
def test_min_ver_str(self):
- # Try to make sure someone doesn't change the MIN_VERSION_STRING by
+ # Try to make sure someone doesn't change the _MIN_VERSION_STRING by
# accident and make sure it exists
- self.assertEqual('1.1', versions.MIN_VERSION_STRING)
+ self.assertEqual('1.1', versions._MIN_VERSION_STRING)
def test_name_value_match(self):
# Test to make sure variable name matches the value. For example
@@ -67,3 +71,25 @@ class TestVersionConstants(base.TestCase):
value, seen_values,
'The value {} has been used more than once'.format(value))
seen_values.add(value)
+
+
+class TestMaxVersionString(base.TestCase):
+
+ def test_max_version_not_pinned(self):
+ CONF.set_override('pin_release_version', None)
+ self.assertEqual(versions._MAX_VERSION_STRING,
+ versions.max_version_string())
+
+ @mock.patch('ironic.common.release_mappings.RELEASE_MAPPING',
+ autospec=True)
+ def test_max_version_pinned(self, mock_release_mapping):
+ CONF.set_override('pin_release_version',
+ release_mappings.RELEASE_VERSIONS[-1])
+ mock_release_mapping.get.return_value = {
+ 'api': '1.5',
+ 'rpc': '1.4',
+ 'objects': {
+ 'MyObj': ['1.4'],
+ }
+ }
+ self.assertEqual('1.5', versions.max_version_string())
diff --git a/ironic/tests/unit/api/controllers/v1/test_volume.py b/ironic/tests/unit/api/controllers/v1/test_volume.py
index 16752fe09..13f17ac27 100644
--- a/ironic/tests/unit/api/controllers/v1/test_volume.py
+++ b/ironic/tests/unit/api/controllers/v1/test_volume.py
@@ -32,7 +32,7 @@ class TestGetVolume(test_api_base.BaseApiTest):
headers=headers))
def test_get_volume(self):
- headers = {api_base.Version.string: str(api_v1.MAX_VER)}
+ headers = {api_base.Version.string: str(api_v1.max_version())}
data = self.get_json('/volume/', headers=headers)
for key in ['links', 'connectors', 'targets']:
self._test_links(data, key, headers)
@@ -46,7 +46,7 @@ class TestGetVolume(test_api_base.BaseApiTest):
data['targets'][1]['href'])
def test_get_volume_invalid_api_version(self):
- headers = {api_base.Version.string: str(api_v1.MIN_VER)}
+ headers = {api_base.Version.string: str(api_v1.min_version())}
response = self.get_json('/volume/', headers=headers,
expect_errors=True)
self.assertEqual(http_client.NOT_FOUND, response.status_int)
diff --git a/ironic/tests/unit/api/controllers/v1/test_volume_connector.py b/ironic/tests/unit/api/controllers/v1/test_volume_connector.py
index bdeef82dc..575c86bc1 100644
--- a/ironic/tests/unit/api/controllers/v1/test_volume_connector.py
+++ b/ironic/tests/unit/api/controllers/v1/test_volume_connector.py
@@ -59,7 +59,7 @@ class TestVolumeConnectorObject(base.TestCase):
class TestListVolumeConnectors(test_api_base.BaseApiTest):
- headers = {api_base.Version.string: str(api_v1.MAX_VER)}
+ headers = {api_base.Version.string: str(api_v1.max_version())}
def setUp(self):
super(TestListVolumeConnectors, self).setUp()
@@ -83,7 +83,7 @@ class TestListVolumeConnectors(test_api_base.BaseApiTest):
node_id=self.node.id)
response = self.get_json(
'/volume/connectors',
- headers={api_base.Version.string: str(api_v1.MIN_VER)},
+ headers={api_base.Version.string: str(api_v1.min_version())},
expect_errors=True)
self.assertEqual(http_client.NOT_FOUND, response.status_int)
@@ -103,7 +103,7 @@ class TestListVolumeConnectors(test_api_base.BaseApiTest):
self.context, node_id=self.node.id)
response = self.get_json(
'/volume/connectors/%s' % connector.uuid,
- headers={api_base.Version.string: str(api_v1.MIN_VER)},
+ headers={api_base.Version.string: str(api_v1.min_version())},
expect_errors=True)
self.assertEqual(http_client.NOT_FOUND, response.status_int)
@@ -151,7 +151,7 @@ class TestListVolumeConnectors(test_api_base.BaseApiTest):
fields = 'uuid,extra'
response = self.get_json(
'/volume/connectors/%s?fields=%s' % (connector.uuid, fields),
- headers={api_base.Version.string: str(api_v1.MIN_VER)},
+ headers={api_base.Version.string: str(api_v1.min_version())},
expect_errors=True)
self.assertEqual(http_client.NOT_FOUND, response.status_int)
@@ -181,7 +181,7 @@ class TestListVolumeConnectors(test_api_base.BaseApiTest):
node_id=self.node.id)
response = self.get_json(
'/volume/connectors?detail=True',
- headers={api_base.Version.string: str(api_v1.MIN_VER)},
+ headers={api_base.Version.string: str(api_v1.min_version())},
expect_errors=True)
self.assertEqual(http_client.NOT_FOUND, response.status_int)
@@ -348,7 +348,7 @@ class TestListVolumeConnectors(test_api_base.BaseApiTest):
@mock.patch.object(rpcapi.ConductorAPI, 'update_volume_connector')
class TestPatch(test_api_base.BaseApiTest):
- headers = {api_base.Version.string: str(api_v1.MAX_VER)}
+ headers = {api_base.Version.string: str(api_v1.max_version())}
def setUp(self):
super(TestPatch, self).setUp()
@@ -388,7 +388,7 @@ class TestPatch(test_api_base.BaseApiTest):
node_uuid=self.node.uuid)])
def test_update_invalid_api_version(self, mock_upd):
- headers = {api_base.Version.string: str(api_v1.MIN_VER)}
+ headers = {api_base.Version.string: str(api_v1.min_version())}
response = self.patch_json('/volume/connectors/%s'
% self.connector.uuid,
[{'path': '/extra/foo',
@@ -714,7 +714,7 @@ class TestPatch(test_api_base.BaseApiTest):
class TestPost(test_api_base.BaseApiTest):
- headers = {api_base.Version.string: str(api_v1.MAX_VER)}
+ headers = {api_base.Version.string: str(api_v1.max_version())}
def setUp(self):
super(TestPost, self).setUp()
@@ -754,7 +754,7 @@ class TestPost(test_api_base.BaseApiTest):
pdict = post_get_test_volume_connector()
response = self.post_json(
'/volume/connectors', pdict,
- headers={api_base.Version.string: str(api_v1.MIN_VER)},
+ headers={api_base.Version.string: str(api_v1.min_version())},
expect_errors=True)
self.assertEqual(http_client.NOT_FOUND, response.status_int)
@@ -879,7 +879,7 @@ class TestPost(test_api_base.BaseApiTest):
@mock.patch.object(rpcapi.ConductorAPI, 'destroy_volume_connector')
class TestDelete(test_api_base.BaseApiTest):
- headers = {api_base.Version.string: str(api_v1.MAX_VER)}
+ headers = {api_base.Version.string: str(api_v1.max_version())}
def setUp(self):
super(TestDelete, self).setUp()
@@ -907,7 +907,7 @@ class TestDelete(test_api_base.BaseApiTest):
node_uuid=self.node.uuid)])
def test_delete_volume_connector_byid_invalid_api_version(self, mock_dvc):
- headers = {api_base.Version.string: str(api_v1.MIN_VER)}
+ headers = {api_base.Version.string: str(api_v1.min_version())}
response = self.delete('/volume/connectors/%s' % self.connector.uuid,
expect_errors=True, headers=headers)
self.assertEqual(http_client.NOT_FOUND, response.status_int)
diff --git a/ironic/tests/unit/api/controllers/v1/test_volume_target.py b/ironic/tests/unit/api/controllers/v1/test_volume_target.py
index fa1028694..64b9ddc16 100644
--- a/ironic/tests/unit/api/controllers/v1/test_volume_target.py
+++ b/ironic/tests/unit/api/controllers/v1/test_volume_target.py
@@ -59,7 +59,7 @@ class TestVolumeTargetObject(base.TestCase):
class TestListVolumeTargets(test_api_base.BaseApiTest):
- headers = {api_base.Version.string: str(api_v1.MAX_VER)}
+ headers = {api_base.Version.string: str(api_v1.max_version())}
def setUp(self):
super(TestListVolumeTargets, self).setUp()
@@ -83,7 +83,7 @@ class TestListVolumeTargets(test_api_base.BaseApiTest):
self.context, node_id=self.node.id)
response = self.get_json(
'/volume/targets',
- headers={api_base.Version.string: str(api_v1.MIN_VER)},
+ headers={api_base.Version.string: str(api_v1.min_version())},
expect_errors=True)
self.assertEqual(http_client.NOT_FOUND, response.status_int)
@@ -103,7 +103,7 @@ class TestListVolumeTargets(test_api_base.BaseApiTest):
node_id=self.node.id)
response = self.get_json(
'/volume/targets/%s' % target.uuid,
- headers={api_base.Version.string: str(api_v1.MIN_VER)},
+ headers={api_base.Version.string: str(api_v1.min_version())},
expect_errors=True)
self.assertEqual(http_client.NOT_FOUND, response.status_int)
@@ -170,7 +170,7 @@ class TestListVolumeTargets(test_api_base.BaseApiTest):
node_id=self.node.id)
response = self.get_json(
'/volume/targets?detail=True',
- headers={api_base.Version.string: str(api_v1.MIN_VER)},
+ headers={api_base.Version.string: str(api_v1.min_version())},
expect_errors=True)
self.assertEqual(http_client.NOT_FOUND, response.status_int)
@@ -328,7 +328,7 @@ class TestListVolumeTargets(test_api_base.BaseApiTest):
@mock.patch.object(rpcapi.ConductorAPI, 'update_volume_target')
class TestPatch(test_api_base.BaseApiTest):
- headers = {api_base.Version.string: str(api_v1.MAX_VER)}
+ headers = {api_base.Version.string: str(api_v1.max_version())}
def setUp(self):
super(TestPatch, self).setUp()
@@ -368,7 +368,7 @@ class TestPatch(test_api_base.BaseApiTest):
node_uuid=self.node.uuid)])
def test_update_byid_invalid_api_version(self, mock_upd):
- headers = {api_base.Version.string: str(api_v1.MIN_VER)}
+ headers = {api_base.Version.string: str(api_v1.min_version())}
response = self.patch_json('/volume/targets/%s'
% self.target.uuid,
[{'path': '/extra/foo',
@@ -702,7 +702,7 @@ class TestPatch(test_api_base.BaseApiTest):
class TestPost(test_api_base.BaseApiTest):
- headers = {api_base.Version.string: str(api_v1.MAX_VER)}
+ headers = {api_base.Version.string: str(api_v1.max_version())}
def setUp(self):
super(TestPost, self).setUp()
@@ -742,7 +742,7 @@ class TestPost(test_api_base.BaseApiTest):
pdict = post_get_test_volume_target()
response = self.post_json(
'/volume/targets', pdict,
- headers={api_base.Version.string: str(api_v1.MIN_VER)},
+ headers={api_base.Version.string: str(api_v1.min_version())},
expect_errors=True)
self.assertEqual(http_client.NOT_FOUND, response.status_int)
@@ -860,7 +860,7 @@ class TestPost(test_api_base.BaseApiTest):
@mock.patch.object(rpcapi.ConductorAPI, 'destroy_volume_target')
class TestDelete(test_api_base.BaseApiTest):
- headers = {api_base.Version.string: str(api_v1.MAX_VER)}
+ headers = {api_base.Version.string: str(api_v1.max_version())}
def setUp(self):
super(TestDelete, self).setUp()
@@ -889,7 +889,7 @@ class TestDelete(test_api_base.BaseApiTest):
node_uuid=self.node.uuid)])
def test_delete_volume_target_byid_invalid_api_version(self, mock_dvc):
- headers = {api_base.Version.string: str(api_v1.MIN_VER)}
+ headers = {api_base.Version.string: str(api_v1.min_version())}
response = self.delete('/volume/targets/%s' % self.target.uuid,
headers=headers,
expect_errors=True)
diff --git a/ironic/tests/unit/api/test_root.py b/ironic/tests/unit/api/test_root.py
index a4dade70a..118a4cca3 100644
--- a/ironic/tests/unit/api/test_root.py
+++ b/ironic/tests/unit/api/test_root.py
@@ -31,8 +31,9 @@ class TestRoot(base.BaseApiTest):
version1 = response['default_version']
self.assertEqual('v1', version1['id'])
self.assertEqual('CURRENT', version1['status'])
- self.assertEqual(versions.MIN_VERSION_STRING, version1['min_version'])
- self.assertEqual(versions.MAX_VERSION_STRING, version1['version'])
+ self.assertEqual(versions.min_version_string(),
+ version1['min_version'])
+ self.assertEqual(versions.max_version_string(), version1['version'])
class TestV1Root(base.BaseApiTest):
diff --git a/ironic/tests/unit/common/test_release_mappings.py b/ironic/tests/unit/common/test_release_mappings.py
index ec9f280f3..6ce78cf97 100644
--- a/ironic/tests/unit/common/test_release_mappings.py
+++ b/ironic/tests/unit/common/test_release_mappings.py
@@ -16,6 +16,7 @@ import mock
from oslo_utils import versionutils
import six
+from ironic.api.controllers.v1 import versions as api_versions
from ironic.common import release_mappings
from ironic.conductor import rpcapi
from ironic.db.sqlalchemy import models
@@ -49,7 +50,11 @@ class ReleaseMappingsTestCase(base.TestCase):
def test_structure(self):
for value in release_mappings.RELEASE_MAPPING.values():
self.assertIsInstance(value, dict)
- self.assertEqual({'rpc', 'objects'}, set(value))
+ self.assertEqual({'api', 'rpc', 'objects'}, set(value))
+ self.assertIsInstance(value['api'], six.string_types)
+ (major, minor) = value['api'].split('.')
+ self.assertEqual(1, int(major))
+ self.assertLessEqual(int(minor), api_versions.MINOR_MAX_VERSION)
self.assertIsInstance(value['rpc'], six.string_types)
self.assertIsInstance(value['objects'], dict)
for obj_value in value['objects'].values():
@@ -110,6 +115,7 @@ class GetObjectVersionsTestCase(base.TestCase):
TEST_MAPPING = {
'7.0': {
+ 'api': '1.30',
'rpc': '1.40',
'objects': {
'Node': ['1.21'],
@@ -119,6 +125,7 @@ class GetObjectVersionsTestCase(base.TestCase):
}
},
'8.0': {
+ 'api': '1.30',
'rpc': '1.40',
'objects': {
'Node': ['1.22'],
@@ -129,6 +136,7 @@ class GetObjectVersionsTestCase(base.TestCase):
}
},
'master': {
+ 'api': '1.34',
'rpc': '1.40',
'objects': {
'Node': ['1.23'],