diff --git a/ironic/common/swift.py b/ironic/common/swift.py index 6c28e1d52c..8f7aeec27d 100644 --- a/ironic/common/swift.py +++ b/ironic/common/swift.py @@ -16,6 +16,7 @@ from oslo_config import cfg from oslo_log import log as logging +from six.moves import http_client from six.moves.urllib import parse from swiftclient import client as swift_client from swiftclient import exceptions as swift_exceptions @@ -163,7 +164,7 @@ class SwiftAPI(object): self.connection.delete_object(container, object) except swift_exceptions.ClientException as e: operation = _("delete object") - if e.http_status == 404: + if e.http_status == http_client.NOT_FOUND: raise exception.SwiftObjectNotFoundError(object=object, container=container, operation=operation) diff --git a/ironic/tests/unit/api/test_middleware.py b/ironic/tests/unit/api/test_middleware.py index 5acd6b8063..4185ccc0ef 100644 --- a/ironic/tests/unit/api/test_middleware.py +++ b/ironic/tests/unit/api/test_middleware.py @@ -17,6 +17,7 @@ Tests to assert that various incorporated middleware works as expected. from oslo_config import cfg import oslo_middleware.cors as cors_middleware +from six.moves import http_client from ironic.tests.unit.api import base @@ -40,6 +41,14 @@ class TestCORSMiddleware(base.BaseApiTest): # Create the application. super(TestCORSMiddleware, self).setUp() + @staticmethod + def _response_string(status_code): + """Helper function to return string in form of 'CODE DESCRIPTION'. + + For example: '200 OK' + """ + return '{} {}'.format(status_code, http_client.responses[status_code]) + def test_valid_cors_options_request(self): response = self.app \ .options('/', @@ -49,7 +58,8 @@ class TestCORSMiddleware(base.BaseApiTest): }) # Assert response status. - self.assertEqual(response.status, '200 OK') + self.assertEqual( + self._response_string(http_client.OK), response.status) self.assertIn('Access-Control-Allow-Origin', response.headers) self.assertEqual('http://valid.example.com', response.headers['Access-Control-Allow-Origin']) @@ -63,7 +73,8 @@ class TestCORSMiddleware(base.BaseApiTest): }) # Assert response status. - self.assertEqual(response.status, '200 OK') + self.assertEqual( + self._response_string(http_client.OK), response.status) self.assertNotIn('Access-Control-Allow-Origin', response.headers) def test_valid_cors_get_request(self): @@ -74,7 +85,8 @@ class TestCORSMiddleware(base.BaseApiTest): }) # Assert response status. - self.assertEqual(response.status, '200 OK') + self.assertEqual( + self._response_string(http_client.OK), response.status) self.assertIn('Access-Control-Allow-Origin', response.headers) self.assertEqual('http://valid.example.com', response.headers['Access-Control-Allow-Origin']) @@ -87,5 +99,6 @@ class TestCORSMiddleware(base.BaseApiTest): }) # Assert response status. - self.assertEqual(response.status, '200 OK') + self.assertEqual( + self._response_string(http_client.OK), response.status) self.assertNotIn('Access-Control-Allow-Origin', response.headers) diff --git a/ironic/tests/unit/api/v1/test_drivers.py b/ironic/tests/unit/api/v1/test_drivers.py index ea5abbbf92..decd660869 100644 --- a/ironic/tests/unit/api/v1/test_drivers.py +++ b/ironic/tests/unit/api/v1/test_drivers.py @@ -235,7 +235,7 @@ class TestListDrivers(base.BaseApiTest): ret = self.get_json(path, headers={api_base.Version.string: "1.4"}, expect_errors=True) - self.assertEqual(406, ret.status_code) + self.assertEqual(http_client.NOT_ACCEPTABLE, ret.status_code) @mock.patch.object(rpcapi.ConductorAPI, 'get_raid_logical_disk_properties') def test_raid_logical_disk_properties_cached(self, disk_prop_mock): @@ -266,7 +266,7 @@ class TestListDrivers(base.BaseApiTest): ret = self.get_json(path, headers={api_base.Version.string: "1.12"}, expect_errors=True) - self.assertEqual(404, ret.status_code) + self.assertEqual(http_client.NOT_FOUND, ret.status_code) self.assertTrue(ret.json['error_message']) disk_prop_mock.assert_called_once_with(mock.ANY, self.d1, topic=mock.ANY) diff --git a/ironic/tests/unit/api/v1/test_nodes.py b/ironic/tests/unit/api/v1/test_nodes.py index 73f2d2e8c0..33e4f582ea 100644 --- a/ironic/tests/unit/api/v1/test_nodes.py +++ b/ironic/tests/unit/api/v1/test_nodes.py @@ -1987,7 +1987,7 @@ class TestPut(test_api_base.BaseApiTest): {'target': states.VERBS['abort']}, headers={api_base.Version.string: "1.12"}, expect_errors=True) - self.assertEqual(406, ret.status_code) + self.assertEqual(http_client.NOT_ACCEPTABLE, ret.status_code) @mock.patch.object(rpcapi.ConductorAPI, 'do_provisioning_action') def test_abort_cleanwait(self, mock_dpa): @@ -1997,7 +1997,7 @@ class TestPut(test_api_base.BaseApiTest): ret = self.put_json('/nodes/%s/states/provision' % self.node.uuid, {'target': states.VERBS['abort']}, headers={api_base.Version.string: "1.13"}) - self.assertEqual(202, ret.status_code) + self.assertEqual(http_client.ACCEPTED, ret.status_code) self.assertEqual(b'', ret.body) mock_dpa.assert_called_once_with(mock.ANY, self.node.uuid, states.VERBS['abort'], @@ -2011,7 +2011,7 @@ class TestPut(test_api_base.BaseApiTest): {'target': states.VERBS['abort']}, headers={api_base.Version.string: "1.13"}, expect_errors=True) - self.assertEqual(400, ret.status_code) + self.assertEqual(http_client.BAD_REQUEST, ret.status_code) def test_set_console_mode_enabled(self): with mock.patch.object(rpcapi.ConductorAPI, @@ -2107,7 +2107,7 @@ class TestPut(test_api_base.BaseApiTest): ret = self.put_json( '/nodes/%s/states/raid' % self.node.uuid, raid_config, headers={api_base.Version.string: "1.12"}) - self.assertEqual(204, ret.status_code) + self.assertEqual(http_client.NO_CONTENT, ret.status_code) self.assertEqual(b'', ret.body) set_raid_config_mock.assert_called_once_with( mock.ANY, mock.ANY, self.node.uuid, raid_config, topic=mock.ANY) @@ -2120,7 +2120,7 @@ class TestPut(test_api_base.BaseApiTest): '/nodes/%s/states/raid' % self.node.uuid, raid_config, headers={api_base.Version.string: "1.5"}, expect_errors=True) - self.assertEqual(406, ret.status_code) + self.assertEqual(http_client.NOT_ACCEPTABLE, ret.status_code) self.assertFalse(set_raid_config_mock.called) @mock.patch.object(rpcapi.ConductorAPI, 'set_target_raid_config', @@ -2134,7 +2134,7 @@ class TestPut(test_api_base.BaseApiTest): '/nodes/%s/states/raid' % self.node.uuid, raid_config, headers={api_base.Version.string: "1.12"}, expect_errors=True) - self.assertEqual(404, ret.status_code) + self.assertEqual(http_client.NOT_FOUND, ret.status_code) self.assertTrue(ret.json['error_message']) set_raid_config_mock.assert_called_once_with( mock.ANY, mock.ANY, self.node.uuid, raid_config, topic=mock.ANY) @@ -2149,7 +2149,7 @@ class TestPut(test_api_base.BaseApiTest): '/nodes/%s/states/raid' % self.node.uuid, raid_config, headers={api_base.Version.string: "1.12"}, expect_errors=True) - self.assertEqual(400, ret.status_code) + self.assertEqual(http_client.BAD_REQUEST, ret.status_code) self.assertTrue(ret.json['error_message']) set_raid_config_mock.assert_called_once_with( mock.ANY, mock.ANY, self.node.uuid, raid_config, topic=mock.ANY) diff --git a/ironic/tests/unit/common/test_swift.py b/ironic/tests/unit/common/test_swift.py index 0f99259b65..92fece6138 100644 --- a/ironic/tests/unit/common/test_swift.py +++ b/ironic/tests/unit/common/test_swift.py @@ -16,6 +16,7 @@ import mock from oslo_config import cfg import six from six.moves import builtins as __builtin__ +from six.moves import http_client from swiftclient import client as swift_client from swiftclient import exceptions as swift_exception from swiftclient import utils as swift_utils @@ -131,8 +132,8 @@ class SwiftTestCase(base.TestCase): def test_delete_object_exc_resource_not_found(self, connection_mock): swiftapi = swift.SwiftAPI() - exc = swift_exception.ClientException("Resource not found", - http_status=404) + exc = swift_exception.ClientException( + "Resource not found", http_status=http_client.NOT_FOUND) connection_obj_mock = connection_mock.return_value connection_obj_mock.delete_object.side_effect = exc self.assertRaises(exception.SwiftObjectNotFoundError, diff --git a/ironic/tests/unit/drivers/modules/cimc/test_management.py b/ironic/tests/unit/drivers/modules/cimc/test_management.py index 3a8d534937..2e086ce6fb 100644 --- a/ironic/tests/unit/drivers/modules/cimc/test_management.py +++ b/ironic/tests/unit/drivers/modules/cimc/test_management.py @@ -15,6 +15,7 @@ import mock from oslo_utils import importutils +from six.moves import http_client from ironic.common import boot_devices from ironic.common import exception @@ -110,7 +111,8 @@ class CIMCManagementTestCase(test_common.CIMCBaseTestCase): shared=False) as task: with mock_handle(task) as handle: method = imcsdk.ImcCore.ExternalMethod("ConfigConfMo") - handle.xml_query.return_value.error_code = "404" + handle.xml_query.return_value.error_code = ( + str(http_client.NOT_FOUND)) self.assertRaises(exception.CIMCException, task.driver.management.set_boot_device, diff --git a/ironic/tests/unit/drivers/modules/test_agent_client.py b/ironic/tests/unit/drivers/modules/test_agent_client.py index fa928482f3..39e45db0b9 100644 --- a/ironic/tests/unit/drivers/modules/test_agent_client.py +++ b/ironic/tests/unit/drivers/modules/test_agent_client.py @@ -17,6 +17,7 @@ import json import mock import requests import six +from six.moves import http_client from ironic.common import exception from ironic.drivers.modules import agent_client @@ -24,7 +25,7 @@ from ironic.tests import base class MockResponse(object): - status_code = 200 + status_code = http_client.OK def __init__(self, text): assert isinstance(text, six.string_types) diff --git a/ironic/tests/unit/drivers/modules/test_seamicro.py b/ironic/tests/unit/drivers/modules/test_seamicro.py index 4139a09131..c789a90854 100644 --- a/ironic/tests/unit/drivers/modules/test_seamicro.py +++ b/ironic/tests/unit/drivers/modules/test_seamicro.py @@ -18,6 +18,7 @@ import mock from oslo_utils import uuidutils from seamicroclient import client as seamicro_client from seamicroclient import exceptions as seamicro_client_exception +from six.moves import http_client from ironic.common import boot_devices from ironic.common import driver_factory @@ -442,7 +443,8 @@ class SeaMicroPowerDriverTestCase(db_base.DbTestCase): @mock.patch.object(seamicro, '_get_server', autospec=True) def test_set_node_vlan_id_fail(self, mock_get_server): def fake_set_untagged_vlan(self, **kwargs): - raise seamicro_client_exception.ClientException(500) + raise seamicro_client_exception.ClientException( + http_client.INTERNAL_SERVER_ERROR) vlan_id = "12" server = self.Server(active="true") @@ -490,7 +492,8 @@ class SeaMicroPowerDriverTestCase(db_base.DbTestCase): def test_attach_volume_fail(self, mock_validate_volume, mock_get_server): def fake_attach_volume(self, **kwargs): - raise seamicro_client_exception.ClientException(500) + raise seamicro_client_exception.ClientException( + http_client.INTERNAL_SERVER_ERROR) volume_id = '0/p6-1/vol1' mock_validate_volume.return_value = True @@ -553,7 +556,8 @@ class SeaMicroPowerDriverTestCase(db_base.DbTestCase): @mock.patch.object(seamicro, '_get_server', autospec=True) def test_set_boot_device_fail(self, mock_get_server): def fake_set_boot_order(self, **kwargs): - raise seamicro_client_exception.ClientException(500) + raise seamicro_client_exception.ClientException( + http_client.INTERNAL_SERVER_ERROR) boot_device = "pxe" server = self.Server(active="true")