diff --git a/cinder/tests/unit/volume/drivers/netapp/eseries/test_client.py b/cinder/tests/unit/volume/drivers/netapp/eseries/test_client.py
index fe23e495601..0cbcfcae2d6 100644
--- a/cinder/tests/unit/volume/drivers/netapp/eseries/test_client.py
+++ b/cinder/tests/unit/volume/drivers/netapp/eseries/test_client.py
@@ -21,6 +21,7 @@ import ddt
import json
import mock
from simplejson import scanner
+from six.moves import http_client
from cinder import exception
from cinder import test
@@ -48,11 +49,13 @@ class NetAppEseriesClientDriverTestCase(test.TestCase):
self.my_client._endpoint = eseries_fake.FAKE_ENDPOINT_HTTP
fake_response = mock.Mock()
- fake_response.status_code = 200
+ fake_response.status_code = http_client.OK
self.my_client.invoke_service = mock.Mock(return_value=fake_response)
self.my_client.api_version = '01.52.9000.1'
- @ddt.data(200, 201, 203, 204)
+ @ddt.data(http_client.OK, http_client.CREATED,
+ http_client.NON_AUTHORITATIVE_INFORMATION,
+ http_client.NO_CONTENT)
def test_eval_response_success(self, status_code):
fake_resp = mock.Mock()
fake_resp.status_code = status_code
@@ -76,7 +79,7 @@ class NetAppEseriesClientDriverTestCase(test.TestCase):
('unknown', None))
@ddt.unpack
def test_eval_response_422(self, ret_code, exc_regex):
- status_code = 422
+ status_code = http_client.UNPROCESSABLE_ENTITY
fake_resp = mock.Mock()
fake_resp.text = "fakeError"
fake_resp.json = mock.Mock(return_value={'retcode': ret_code})
@@ -89,7 +92,7 @@ class NetAppEseriesClientDriverTestCase(test.TestCase):
self.assertEqual(status_code, exc.status_code)
def test_eval_response_424(self):
- status_code = 424
+ status_code = http_client.FAILED_DEPENDENCY
fake_resp = mock.Mock()
fake_resp.status_code = status_code
fake_resp.text = "Fake Error Message"
@@ -567,7 +570,7 @@ class NetAppEseriesClientDriverTestCase(test.TestCase):
self.assertEqual(fake_volume, volume)
def test_list_volume_v2_not_found(self):
- status_code = 404
+ status_code = http_client.NOT_FOUND
url = client.RestClient.RESOURCE_PATHS['ssc_volume']
self.my_client.features = mock.Mock()
self.my_client.features.SSC_API_V2 = na_utils.FeatureState(
@@ -586,7 +589,7 @@ class NetAppEseriesClientDriverTestCase(test.TestCase):
mock.ANY})
def test_list_volume_v2_failure(self):
- status_code = 422
+ status_code = http_client.UNPROCESSABLE_ENTITY
url = client.RestClient.RESOURCE_PATHS['ssc_volume']
self.my_client.features = mock.Mock()
self.my_client.features.SSC_API_V2 = na_utils.FeatureState(
@@ -1145,7 +1148,7 @@ class NetAppEseriesClientDriverTestCase(test.TestCase):
fake_response = mock.Mock()
fake_response.json = mock.Mock(side_effect=scanner.JSONDecodeError(
'', '{}', 1))
- fake_response.status_code = 424
+ fake_response.status_code = http_client.FAILED_DEPENDENCY
fake_response.text = "Fake Response"
self.mock_object(self.my_client, 'invoke_service',
return_value=fake_response)
diff --git a/cinder/tests/unit/volume/drivers/nexenta/test_nexenta5_jsonrpc.py b/cinder/tests/unit/volume/drivers/nexenta/test_nexenta5_jsonrpc.py
index 0946297ccca..82fbfc69ca8 100644
--- a/cinder/tests/unit/volume/drivers/nexenta/test_nexenta5_jsonrpc.py
+++ b/cinder/tests/unit/volume/drivers/nexenta/test_nexenta5_jsonrpc.py
@@ -23,6 +23,7 @@ from mock import patch
from oslo_serialization import jsonutils
import requests
from requests import adapters
+from six.moves import http_client
from cinder import exception
from cinder import test
@@ -33,7 +34,7 @@ USERNAME = 'user'
PASSWORD = 'pass'
-def gen_response(code=200, json=None):
+def gen_response(code=http_client.OK, json=None):
r = requests.Response()
r.headers['Content-Type'] = 'application/json'
r.encoding = 'utf8'
@@ -80,7 +81,7 @@ class TestNexentaJSONProxyAuth(test.TestCase):
# an url is being requested for the second time
if self.counter == 1:
# make the fake backend respond 401
- r = gen_response(401)
+ r = gen_response(http_client.UNAUTHORIZED)
r._content = ''
r.connection = mock.Mock()
r_ = gen_response(json={'data': []})
@@ -147,31 +148,36 @@ class TestNexentaJSONProxy(test.TestCase):
def test_post(self):
random_dict = {'data': uuid.uuid4().hex}
rnd_url = 'some/random/url'
- self._mount_adapter(rnd_url, self.gen_adapter(201, random_dict))
+ self._mount_adapter(rnd_url, self.gen_adapter(http_client.CREATED,
+ random_dict))
self.assertEqual(random_dict, self.nef.post(rnd_url))
def test_delete(self):
random_dict = {'data': uuid.uuid4().hex}
rnd_url = 'some/random/url'
- self._mount_adapter(rnd_url, self.gen_adapter(201, random_dict))
+ self._mount_adapter(rnd_url, self.gen_adapter(http_client.CREATED,
+ random_dict))
self.assertEqual(random_dict, self.nef.delete(rnd_url))
def test_put(self):
random_dict = {'data': uuid.uuid4().hex}
rnd_url = 'some/random/url'
- self._mount_adapter(rnd_url, self.gen_adapter(201, random_dict))
+ self._mount_adapter(rnd_url, self.gen_adapter(http_client.CREATED,
+ random_dict))
self.assertEqual(random_dict, self.nef.put(rnd_url))
def test_get_200(self):
random_dict = {'data': uuid.uuid4().hex}
rnd_url = 'some/random/url'
- self._mount_adapter(rnd_url, self.gen_adapter(200, random_dict))
+ self._mount_adapter(rnd_url, self.gen_adapter(http_client.OK,
+ random_dict))
self.assertEqual(random_dict, self.nef.get(rnd_url))
def test_get_201(self):
random_dict = {'data': uuid.uuid4().hex}
rnd_url = 'some/random/url'
- self._mount_adapter(rnd_url, self.gen_adapter(201, random_dict))
+ self._mount_adapter(rnd_url, self.gen_adapter(http_client.CREATED,
+ random_dict))
self.assertEqual(random_dict, self.nef.get(rnd_url))
def test_get_500(self):
@@ -185,7 +191,7 @@ class TestNexentaJSONProxy(test.TestCase):
'code': 'NEF_ERROR',
'message': 'Some error'
}
- r = gen_response(500, json)
+ r = gen_response(http_client.INTERNAL_SERVER_ERROR, json)
r.request = request
return r
@@ -201,7 +207,7 @@ class TestNexentaJSONProxy(test.TestCase):
super(TestAdapter, self).__init__()
def send(self, request, *args, **kwargs):
- r = gen_response(404)
+ r = gen_response(http_client.NOT_FOUND)
r._content = 'Page Not Found'
r.request = request
return r
@@ -219,7 +225,7 @@ class TestNexentaJSONProxy(test.TestCase):
super(TestAdapter, self).__init__()
def send(self, request, *args, **kwargs):
- r = gen_response(404)
+ r = gen_response(http_client.NOT_FOUND)
r.request = request
return r
@@ -241,11 +247,12 @@ class TestNexentaJSONProxy(test.TestCase):
json = {
'links': [{'href': redirect_url}]
}
- r = gen_response(202, json)
+ r = gen_response(http_client.ACCEPTED, json)
r.request = request
return r
rnd_url = 'some/random/url'
self._mount_adapter(rnd_url, RedirectTestAdapter())
- self._mount_adapter(redirect_url, self.gen_adapter(201))
+ self._mount_adapter(redirect_url, self.gen_adapter(
+ http_client.CREATED))
self.assertIsNone(self.nef.get(rnd_url))
diff --git a/cinder/tests/unit/volume/drivers/synology/test_synology_common.py b/cinder/tests/unit/volume/drivers/synology/test_synology_common.py
index 48ff5bca7a2..3a03c6563a2 100644
--- a/cinder/tests/unit/volume/drivers/synology/test_synology_common.py
+++ b/cinder/tests/unit/volume/drivers/synology/test_synology_common.py
@@ -21,6 +21,7 @@ import math
import mock
from oslo_utils import units
import requests
+from six.moves import http_client
from six import string_types
from cinder import context
@@ -148,8 +149,8 @@ class MockResponse(object):
class SynoSessionTestCase(test.TestCase):
- @mock.patch('requests.post', return_value=
- MockResponse({'data': {'sid': 'sid'}, 'success': True}, 200))
+ @mock.patch('requests.post', return_value=MockResponse(
+ {'data': {'sid': 'sid'}, 'success': True}, http_client.OK))
def setUp(self, _mock_post):
super(SynoSessionTestCase, self).setUp()
@@ -190,12 +191,12 @@ class SynoSessionTestCase(test.TestCase):
FAKE_API: out
},
'success': True
- }, 200),
+ }, http_client.OK),
MockResponse({
'data': {
FAKE_API: out
}
- }, 200),
+ }, http_client.OK),
])
result = self.session.query(FAKE_API)
@@ -289,18 +290,21 @@ class SynoAPIRequestTestCase(test.TestCase):
self.request._encode_param = mock.Mock(side_effect=lambda x: x)
self.request.new_session = mock.Mock()
requests.post = mock.Mock(side_effect=[
- MockResponse({'success': True}, 200),
- MockResponse({'error': {'code': 101}, 'success': False}, 200),
- MockResponse({'error': {'code': 101}}, 200),
- MockResponse({}, 500)
+ MockResponse({'success': True}, http_client.OK),
+ MockResponse({'error': {'code': http_client.SWITCHING_PROTOCOLS},
+ 'success': False}, http_client.OK),
+ MockResponse({'error': {'code': http_client.SWITCHING_PROTOCOLS}},
+ http_client.OK),
+ MockResponse({}, http_client.INTERNAL_SERVER_ERROR)
])
result = self.request.request(FAKE_API, FAKE_METHOD, version)
self.assertDictEqual({'success': True}, result)
result = self.request.request(FAKE_API, FAKE_METHOD, version)
- self.assertDictEqual({'error': {'code': 101}, 'success': False},
- result)
+ self.assertDictEqual(
+ {'error': {'code': http_client.SWITCHING_PROTOCOLS},
+ 'success': False}, result)
self.assertRaises(exception.MalformedResponse,
self.request.request,
@@ -309,7 +313,8 @@ class SynoAPIRequestTestCase(test.TestCase):
version)
result = self.request.request(FAKE_API, FAKE_METHOD, version)
- self.assertDictEqual({'http_status': 500}, result)
+ self.assertDictEqual(
+ {'http_status': http_client.INTERNAL_SERVER_ERROR}, result)
@mock.patch.object(common.LOG, 'debug')
def test_request_auth_error(self, _log):
@@ -322,7 +327,7 @@ class SynoAPIRequestTestCase(test.TestCase):
MockResponse({
'error': {'code': 105},
'success': False
- }, 200))
+ }, http_client.OK))
self.assertRaises(exception.SynoAuthError,
self.request.request,
@@ -1141,7 +1146,7 @@ class SynoCommonTestCase(test.TestCase):
version = 1
resp = {}
bad_resp = {
- 'http_status': 500
+ 'http_status': http_client.INTERNAL_SERVER_ERROR
}
expected = copy.deepcopy(resp)
expected.update(api_info={'api': api,
diff --git a/cinder/tests/unit/volume/drivers/test_blockbridge.py b/cinder/tests/unit/volume/drivers/test_blockbridge.py
index 6cb32ee7285..09a7b9d8d37 100644
--- a/cinder/tests/unit/volume/drivers/test_blockbridge.py
+++ b/cinder/tests/unit/volume/drivers/test_blockbridge.py
@@ -76,7 +76,7 @@ def common_mocks(f):
inst.mock_response = mock.Mock()
inst.mock_response.read.return_value = '{}'
- inst.mock_response.status = 200
+ inst.mock_response.status = http_client.OK
inst.mock_conn.request.return_value = True
inst.mock_conn.getresponse.return_value = inst.mock_response
@@ -150,28 +150,28 @@ class BlockbridgeISCSIDriverTestCase(test.TestCase):
@common_mocks
def test_http_mock_success(self):
self.mock_response.read.return_value = '{}'
- self.mock_response.status = 200
+ self.mock_response.status = http_client.OK
conn = http_client.HTTPSConnection('whatever', None)
conn.request('GET', '/blah', '{}', {})
rsp = conn.getresponse()
self.assertEqual('{}', rsp.read())
- self.assertEqual(200, rsp.status)
+ self.assertEqual(http_client.OK, rsp.status)
@common_mocks
def test_http_mock_failure(self):
mock_body = '{"error": "no results matching query", "status": 413}'
self.mock_response.read.return_value = mock_body
- self.mock_response.status = 413
+ self.mock_response.status = http_client.REQUEST_ENTITY_TOO_LARGE
conn = http_client.HTTPSConnection('whatever', None)
conn.request('GET', '/blah', '{}', {})
rsp = conn.getresponse()
self.assertEqual(mock_body, rsp.read())
- self.assertEqual(413, rsp.status)
+ self.assertEqual(http_client.REQUEST_ENTITY_TOO_LARGE, rsp.status)
@common_mocks
def test_cfg_api_host(self):
@@ -264,7 +264,7 @@ class BlockbridgeISCSIDriverTestCase(test.TestCase):
mock_body = '{"message": "no results matching query", "status": 413}'
self.mock_response.read.return_value = mock_body
- self.mock_response.status = 413
+ self.mock_response.status = http_client.REQUEST_ENTITY_TOO_LARGE
self.assertRaisesRegex(exception.VolumeBackendAPIException,
"no results matching query",
@@ -310,7 +310,7 @@ class BlockbridgeISCSIDriverTestCase(test.TestCase):
mock_body = '{"message": "over quota", "status": 413}'
self.mock_response.read.return_value = mock_body
- self.mock_response.status = 413
+ self.mock_response.status = http_client.REQUEST_ENTITY_TOO_LARGE
self.assertRaisesRegex(exception.VolumeBackendAPIException,
"over quota",
@@ -363,7 +363,7 @@ class BlockbridgeISCSIDriverTestCase(test.TestCase):
mock_body = '{"message": "over quota", "status": 413}'
self.mock_response.read.return_value = mock_body
- self.mock_response.status = 413
+ self.mock_response.status = http_client.REQUEST_ENTITY_TOO_LARGE
src_vref = dict(
name='cloned_volume_source',
@@ -409,7 +409,7 @@ class BlockbridgeISCSIDriverTestCase(test.TestCase):
def test_extend_volume_overquota(self):
mock_body = '{"message": "over quota", "status": 413}'
self.mock_response.read.return_value = mock_body
- self.mock_response.status = 413
+ self.mock_response.status = http_client.REQUEST_ENTITY_TOO_LARGE
self.assertRaisesRegex(exception.VolumeBackendAPIException,
"over quota",
@@ -459,7 +459,7 @@ class BlockbridgeISCSIDriverTestCase(test.TestCase):
def test_create_snapshot_overquota(self):
mock_body = '{"message": "over quota", "status": 413}'
self.mock_response.read.return_value = mock_body
- self.mock_response.status = 413
+ self.mock_response.status = http_client.REQUEST_ENTITY_TOO_LARGE
self.assertRaisesRegex(exception.VolumeBackendAPIException,
"over quota",
@@ -501,7 +501,7 @@ class BlockbridgeISCSIDriverTestCase(test.TestCase):
mock_generate_password.return_value = 'mock-password-abcdef123456'
self.mock_response.read.return_value = FIXTURE_VOL_EXPORT_OK
- self.mock_response.status = 200
+ self.mock_response.status = http_client.OK
props = self.driver.initialize_connection(self.volume, self.connector)
@@ -563,7 +563,7 @@ class BlockbridgeISCSIDriverTestCase(test.TestCase):
@common_mocks
def test_get_volume_stats_forbidden(self):
- self.mock_response.status = 403
+ self.mock_response.status = http_client.FORBIDDEN
self.assertRaisesRegex(exception.NotAuthorized,
"Insufficient privileges",
self.driver.get_volume_stats,
@@ -571,7 +571,7 @@ class BlockbridgeISCSIDriverTestCase(test.TestCase):
@common_mocks
def test_get_volume_stats_unauthorized(self):
- self.mock_response.status = 401
+ self.mock_response.status = http_client.UNAUTHORIZED
self.assertRaisesRegex(exception.NotAuthorized,
"Invalid credentials",
self.driver.get_volume_stats,
diff --git a/cinder/tests/unit/volume/drivers/test_infinidat.py b/cinder/tests/unit/volume/drivers/test_infinidat.py
index b23dbb6fca2..10a38350597 100644
--- a/cinder/tests/unit/volume/drivers/test_infinidat.py
+++ b/cinder/tests/unit/volume/drivers/test_infinidat.py
@@ -21,6 +21,7 @@ import mock
from oslo_utils import units
import requests
import six
+from six.moves import http_client
from cinder import exception
from cinder import test
@@ -129,7 +130,7 @@ class InfiniboxDriverTestCase(test.TestCase):
response.status_code = result
response.raw = six.BytesIO(six.b(json.dumps(dict())))
else:
- response.status_code = 200
+ response.status_code = http_client.OK
response.raw = six.BytesIO(six.b(json.dumps(dict(result=result))))
return response
@@ -225,7 +226,8 @@ class InfiniboxDriverTestCase(test.TestCase):
self.driver.delete_volume(test_volume)
def test_delete_volume_doesnt_exist_on_delete(self):
- self._responses["DELETE"][VOLUME_URL + APPROVAL] = 404
+ self._responses["DELETE"][VOLUME_URL + APPROVAL] = (
+ http_client.NOT_FOUND)
# due to a possible race condition (get+delete is not atomic) the
# GET may return the volume but it may still be deleted before
# the DELETE request
@@ -309,7 +311,8 @@ class InfiniboxDriverTestCase(test.TestCase):
self.driver.delete_snapshot(test_snapshot)
def test_delete_snapshot_doesnt_exist_on_delete(self):
- self._responses["DELETE"][SNAPSHOT_URL + APPROVAL] = 404
+ self._responses["DELETE"][SNAPSHOT_URL + APPROVAL] = (
+ http_client.NOT_FOUND)
# due to a possible race condition (get+delete is not atomic) the
# GET may return the snapshot but it may still be deleted before
# the DELETE request
diff --git a/cinder/tests/unit/volume/drivers/test_nimble.py b/cinder/tests/unit/volume/drivers/test_nimble.py
index b056372342f..2ad1eafc985 100644
--- a/cinder/tests/unit/volume/drivers/test_nimble.py
+++ b/cinder/tests/unit/volume/drivers/test_nimble.py
@@ -15,6 +15,7 @@
import mock
+from six.moves import http_client
import sys
from cinder import context
@@ -215,7 +216,7 @@ class NimbleDriverBaseTestCase(test.TestCase):
configuration=configuration)
mock_login_response = mock_urllib2.post.return_value
mock_login_response = mock.MagicMock()
- mock_login_response.status_code.return_value = 200
+ mock_login_response.status_code.return_value = http_client.OK
mock_login_response.json.return_value = (
FAKE_LOGIN_POST_RESPONSE)
self.driver.do_setup(context.get_admin_context())
@@ -237,7 +238,7 @@ class NimbleDriverBaseTestCase(test.TestCase):
configuration=configuration)
mock_login_response = mock_urllib2.post.return_value
mock_login_response = mock.MagicMock()
- mock_login_response.status_code.return_value = 200
+ mock_login_response.status_code.return_value = http_client.OK
mock_login_response.json.return_value = (
FAKE_LOGIN_POST_RESPONSE)
self.driver.do_setup(context.get_admin_context())
diff --git a/cinder/tests/unit/volume/drivers/test_pure.py b/cinder/tests/unit/volume/drivers/test_pure.py
index 4ad0e726ce1..f74319565ac 100644
--- a/cinder/tests/unit/volume/drivers/test_pure.py
+++ b/cinder/tests/unit/volume/drivers/test_pure.py
@@ -19,6 +19,7 @@ import sys
import ddt
import mock
from oslo_utils import units
+from six.moves import http_client
from cinder import exception
from cinder import test
@@ -790,7 +791,7 @@ class PureBaseVolumeDriverTestCase(PureBaseSharedDriverTestCase):
self.array.list_volume_private_connections.return_value = {}
self.array.destroy_volume.side_effect = \
self.purestorage_module.PureHTTPError(
- code=400,
+ code=http_client.BAD_REQUEST,
text="Volume does not exist"
)
self.driver.delete_volume(VOLUME)
@@ -805,8 +806,8 @@ class PureBaseVolumeDriverTestCase(PureBaseSharedDriverTestCase):
self.array.assert_has_calls(expected)
self.assertFalse(self.array.eradicate_volume.called)
self.array.destroy_volume.side_effect = (
- self.purestorage_module.PureHTTPError(code=400, text="does not "
- "exist"))
+ self.purestorage_module.PureHTTPError(code=http_client.BAD_REQUEST,
+ text="does not exist"))
self.driver.delete_volume(VOLUME)
self.array.destroy_volume.side_effect = None
self.assert_error_propagates([self.array.destroy_volume],
@@ -864,7 +865,8 @@ class PureBaseVolumeDriverTestCase(PureBaseSharedDriverTestCase):
self.array.assert_has_calls(expected)
self.assertFalse(self.array.eradicate_volume.called)
self.array.destroy_volume.side_effect = (
- self.purestorage_module.PureHTTPError(code=400, text=error_text))
+ self.purestorage_module.PureHTTPError(code=http_client.BAD_REQUEST,
+ text=error_text))
self.driver.delete_snapshot(SNAPSHOT)
self.array.destroy_volume.side_effect = None
self.assert_error_propagates([self.array.destroy_volume],
@@ -917,7 +919,7 @@ class PureBaseVolumeDriverTestCase(PureBaseSharedDriverTestCase):
# Branch where connection is missing and the host is still deleted
self.array.reset_mock()
self.array.disconnect_host.side_effect = \
- self.purestorage_module.PureHTTPError(code=400,
+ self.purestorage_module.PureHTTPError(code=http_client.BAD_REQUEST,
text="is not connected")
self.driver.terminate_connection(VOLUME, ISCSI_CONNECTOR)
self.array.disconnect_host.assert_called_with(PURE_HOST_NAME, vol_name)
@@ -928,7 +930,7 @@ class PureBaseVolumeDriverTestCase(PureBaseSharedDriverTestCase):
self.array.reset_mock()
self.array.disconnect_host.side_effect = \
self.purestorage_module.PureHTTPError(
- code=500,
+ code=http_client.INTERNAL_SERVER_ERROR,
text="Some other error"
)
self.assertRaises(self.purestorage_module.PureHTTPError,
@@ -945,7 +947,7 @@ class PureBaseVolumeDriverTestCase(PureBaseSharedDriverTestCase):
self.array.reset_mock()
self.array.list_host_connections.return_value = []
self.array.delete_host.side_effect = \
- self.purestorage_module.PureHTTPError(code=400,
+ self.purestorage_module.PureHTTPError(code=http_client.BAD_REQUEST,
text=error)
self.driver.terminate_connection(VOLUME, ISCSI_CONNECTOR)
self.array.disconnect_host.assert_called_with(PURE_HOST_NAME, vol_name)
@@ -1145,7 +1147,7 @@ class PureBaseVolumeDriverTestCase(PureBaseSharedDriverTestCase):
self.array.destroy_pgroup.side_effect = \
self.purestorage_module.PureHTTPError(
- code=400,
+ code=http_client.BAD_REQUEST,
text="Protection group has been destroyed."
)
self.driver.delete_consistencygroup(mock_context,
@@ -1157,7 +1159,7 @@ class PureBaseVolumeDriverTestCase(PureBaseSharedDriverTestCase):
self.array.destroy_pgroup.side_effect = \
self.purestorage_module.PureHTTPError(
- code=400,
+ code=http_client.BAD_REQUEST,
text="Protection group does not exist"
)
self.driver.delete_consistencygroup(mock_context,
@@ -1169,7 +1171,7 @@ class PureBaseVolumeDriverTestCase(PureBaseSharedDriverTestCase):
self.array.destroy_pgroup.side_effect = \
self.purestorage_module.PureHTTPError(
- code=400,
+ code=http_client.BAD_REQUEST,
text="Some other error"
)
self.assertRaises(self.purestorage_module.PureHTTPError,
@@ -1180,7 +1182,7 @@ class PureBaseVolumeDriverTestCase(PureBaseSharedDriverTestCase):
self.array.destroy_pgroup.side_effect = \
self.purestorage_module.PureHTTPError(
- code=500,
+ code=http_client.INTERNAL_SERVER_ERROR,
text="Another different error"
)
self.assertRaises(self.purestorage_module.PureHTTPError,
@@ -1315,7 +1317,7 @@ class PureBaseVolumeDriverTestCase(PureBaseSharedDriverTestCase):
self.array.destroy_pgroup.side_effect = \
self.purestorage_module.PureHTTPError(
- code=400,
+ code=http_client.BAD_REQUEST,
text="Protection group snapshot has been destroyed."
)
self.driver.delete_cgsnapshot(mock_context, mock_cgsnap, [mock_snap])
@@ -1324,7 +1326,7 @@ class PureBaseVolumeDriverTestCase(PureBaseSharedDriverTestCase):
self.array.destroy_pgroup.side_effect = \
self.purestorage_module.PureHTTPError(
- code=400,
+ code=http_client.BAD_REQUEST,
text="Protection group snapshot does not exist"
)
self.driver.delete_cgsnapshot(mock_context, mock_cgsnap, [mock_snap])
@@ -1333,7 +1335,7 @@ class PureBaseVolumeDriverTestCase(PureBaseSharedDriverTestCase):
self.array.destroy_pgroup.side_effect = \
self.purestorage_module.PureHTTPError(
- code=400,
+ code=http_client.BAD_REQUEST,
text="Some other error"
)
self.assertRaises(self.purestorage_module.PureHTTPError,
@@ -1344,7 +1346,7 @@ class PureBaseVolumeDriverTestCase(PureBaseSharedDriverTestCase):
self.array.destroy_pgroup.side_effect = \
self.purestorage_module.PureHTTPError(
- code=500,
+ code=http_client.INTERNAL_SERVER_ERROR,
text="Another different error"
)
self.assertRaises(self.purestorage_module.PureHTTPError,
@@ -1411,7 +1413,7 @@ class PureBaseVolumeDriverTestCase(PureBaseSharedDriverTestCase):
self.array.get_volume.side_effect = \
self.purestorage_module.PureHTTPError(
text="Volume does not exist.",
- code=400
+ code=http_client.BAD_REQUEST
)
self.assertRaises(exception.ManageExistingInvalidReference,
self.driver.manage_existing,
@@ -1479,7 +1481,7 @@ class PureBaseVolumeDriverTestCase(PureBaseSharedDriverTestCase):
self.array.rename_volume.side_effect = \
self.purestorage_module.PureHTTPError(
text="Volume does not exist.",
- code=400
+ code=http_client.BAD_REQUEST
)
self.driver.unmanage(VOLUME)
@@ -1537,7 +1539,7 @@ class PureBaseVolumeDriverTestCase(PureBaseSharedDriverTestCase):
self.array.get_volume.side_effect = \
self.purestorage_module.PureHTTPError(
text="Volume does not exist.",
- code=400
+ code=http_client.BAD_REQUEST
)
self.assertRaises(exception.ManageExistingInvalidReference,
self.driver.manage_existing_snapshot,
@@ -1596,7 +1598,7 @@ class PureBaseVolumeDriverTestCase(PureBaseSharedDriverTestCase):
self.array.get_volume.side_effect = \
self.purestorage_module.PureHTTPError(
text="Volume does not exist.",
- code=400
+ code=http_client.BAD_REQUEST
)
self.assertRaises(exception.ManageExistingInvalidReference,
self.driver.manage_existing_snapshot_get_size,
@@ -1624,7 +1626,7 @@ class PureBaseVolumeDriverTestCase(PureBaseSharedDriverTestCase):
self.array.rename_volume.side_effect = \
self.purestorage_module.PureHTTPError(
text="Snapshot does not exist.",
- code=400
+ code=http_client.BAD_REQUEST
)
self.driver.unmanage_snapshot(SNAPSHOT)
@@ -1853,7 +1855,7 @@ class PureBaseVolumeDriverTestCase(PureBaseSharedDriverTestCase):
def test_does_pgroup_exist_not_exists(self):
self.array.get_pgroup.side_effect = (
- self.purestorage_module.PureHTTPError(code=400,
+ self.purestorage_module.PureHTTPError(code=http_client.BAD_REQUEST,
text="does not exist"))
exists = self.driver._does_pgroup_exist(self.array, "some_pgroup")
self.assertFalse(exists)
@@ -2045,7 +2047,7 @@ class PureBaseVolumeDriverTestCase(PureBaseSharedDriverTestCase):
self, mock_get_volume_type):
mock_get_volume_type.return_value = REPLICATED_VOL_TYPE
self.array.set_pgroup.side_effect = FakePureStorageHTTPError(
- code=400, text='already belongs to')
+ code=http_client.BAD_REQUEST, text='already belongs to')
self.driver._enable_replication_if_needed(self.array, VOLUME)
self.array.set_pgroup.assert_called_with(
self.driver._replication_pg_name,
@@ -2148,7 +2150,7 @@ class PureBaseVolumeDriverTestCase(PureBaseSharedDriverTestCase):
def test_disable_replication_already_disabled(self):
self.array.set_pgroup.side_effect = FakePureStorageHTTPError(
- code=400, text='could not be found')
+ code=http_client.BAD_REQUEST, text='could not be found')
self.driver._disable_replication(VOLUME)
self.array.set_pgroup.assert_called_with(
self.driver._replication_pg_name,
@@ -2375,7 +2377,7 @@ class PureISCSIDriverTestCase(PureDriverTestCase):
[expected, {"host": "extra", "lun": 2}]
self.array.connect_host.side_effect = \
self.purestorage_module.PureHTTPError(
- code=400,
+ code=http_client.BAD_REQUEST,
text="Connection already exists"
)
actual = self.driver._connect(VOLUME, ISCSI_CONNECTOR)
@@ -2389,7 +2391,7 @@ class PureISCSIDriverTestCase(PureDriverTestCase):
self.array.list_volume_private_connections.return_value = {}
self.array.connect_host.side_effect = \
self.purestorage_module.PureHTTPError(
- code=400,
+ code=http_client.BAD_REQUEST,
text="Connection already exists"
)
self.assertRaises(exception.PureDriverException, self.driver._connect,
@@ -2401,10 +2403,11 @@ class PureISCSIDriverTestCase(PureDriverTestCase):
def test_connect_already_connected_list_hosts_exception(self, mock_host):
mock_host.return_value = PURE_HOST
self.array.list_volume_private_connections.side_effect = \
- self.purestorage_module.PureHTTPError(code=400, text="")
+ self.purestorage_module.PureHTTPError(code=http_client.BAD_REQUEST,
+ text="")
self.array.connect_host.side_effect = \
self.purestorage_module.PureHTTPError(
- code=400,
+ code=http_client.BAD_REQUEST,
text="Connection already exists"
)
self.assertRaises(self.purestorage_module.PureHTTPError,
@@ -2422,7 +2425,7 @@ class PureISCSIDriverTestCase(PureDriverTestCase):
self.array.set_host.side_effect = (
self.purestorage_module.PureHTTPError(
- code=400, text='Host does not exist.'))
+ code=http_client.BAD_REQUEST, text='Host does not exist.'))
# Because we mocked out retry make sure we are raising the right
# exception to allow for retries to happen.
@@ -2436,7 +2439,8 @@ class PureISCSIDriverTestCase(PureDriverTestCase):
self.array.create_host.side_effect = (
self.purestorage_module.PureHTTPError(
- code=400, text='The specified IQN is already in use.'))
+ code=http_client.BAD_REQUEST,
+ text='The specified IQN is already in use.'))
# Because we mocked out retry make sure we are raising the right
# exception to allow for retries to happen.
@@ -2450,7 +2454,7 @@ class PureISCSIDriverTestCase(PureDriverTestCase):
self.array.create_host.side_effect = (
self.purestorage_module.PureHTTPError(
- code=400, text='Host already exists.'))
+ code=http_client.BAD_REQUEST, text='Host already exists.'))
# Because we mocked out retry make sure we are raising the right
# exception to allow for retries to happen.
@@ -2578,7 +2582,7 @@ class PureFCDriverTestCase(PureDriverTestCase):
[expected, {"host": "extra", "lun": 2}]
self.array.connect_host.side_effect = \
self.purestorage_module.PureHTTPError(
- code=400,
+ code=http_client.BAD_REQUEST,
text="Connection already exists"
)
actual = self.driver._connect(VOLUME, FC_CONNECTOR)
@@ -2592,7 +2596,7 @@ class PureFCDriverTestCase(PureDriverTestCase):
self.array.list_volume_private_connections.return_value = {}
self.array.connect_host.side_effect = \
self.purestorage_module.PureHTTPError(
- code=400,
+ code=http_client.BAD_REQUEST,
text="Connection already exists"
)
self.assertRaises(exception.PureDriverException, self.driver._connect,
@@ -2604,10 +2608,11 @@ class PureFCDriverTestCase(PureDriverTestCase):
def test_connect_already_connected_list_hosts_exception(self, mock_host):
mock_host.return_value = PURE_HOST
self.array.list_volume_private_connections.side_effect = \
- self.purestorage_module.PureHTTPError(code=400, text="")
+ self.purestorage_module.PureHTTPError(code=http_client.BAD_REQUEST,
+ text="")
self.array.connect_host.side_effect = \
self.purestorage_module.PureHTTPError(
- code=400,
+ code=http_client.BAD_REQUEST,
text="Connection already exists"
)
self.assertRaises(self.purestorage_module.PureHTTPError,
@@ -2621,7 +2626,8 @@ class PureFCDriverTestCase(PureDriverTestCase):
self.array.create_host.side_effect = (
self.purestorage_module.PureHTTPError(
- code=400, text='The specified WWN is already in use.'))
+ code=http_client.BAD_REQUEST,
+ text='The specified WWN is already in use.'))
# Because we mocked out retry make sure we are raising the right
# exception to allow for retries to happen.
diff --git a/cinder/tests/unit/volume/drivers/test_xio.py b/cinder/tests/unit/volume/drivers/test_xio.py
index 1841c9e6d7a..7a7ebb3b9a2 100644
--- a/cinder/tests/unit/volume/drivers/test_xio.py
+++ b/cinder/tests/unit/volume/drivers/test_xio.py
@@ -14,6 +14,7 @@
# under the License.
import mock
+from six.moves import http_client
from cinder import context
from cinder import exception
@@ -119,7 +120,7 @@ ISE_GET_QUERY_XML =\
""" % (ISE_IP1, ISE_IP2)
ISE_GET_QUERY_RESP =\
- {'status': 200,
+ {'status': http_client.OK,
'location': '',
'content': " ".join(ISE_GET_QUERY_XML.split())}
@@ -139,7 +140,7 @@ ISE_GET_QUERY_NO_CAP_XML =\
""" % (ISE_IP1, ISE_IP2)
ISE_GET_QUERY_NO_CAP_RESP =\
- {'status': 200,
+ {'status': http_client.OK,
'location': '',
'content': " ".join(ISE_GET_QUERY_NO_CAP_XML.split())}
@@ -158,7 +159,7 @@ ISE_GET_QUERY_NO_CTRL_XML =\
"""
ISE_GET_QUERY_NO_CTRL_RESP =\
- {'status': 200,
+ {'status': http_client.OK,
'location': '',
'content': " ".join(ISE_GET_QUERY_NO_CTRL_XML.split())}
@@ -187,7 +188,7 @@ ISE_GET_QUERY_NO_IP_XML =\
"""
ISE_GET_QUERY_NO_IP_RESP =\
- {'status': 200,
+ {'status': http_client.OK,
'location': '',
'content': " ".join(ISE_GET_QUERY_NO_IP_XML.split())}
@@ -213,7 +214,7 @@ ISE_GET_QUERY_NO_GID_XML =\
""" % (ISE_IP1, ISE_IP2)
ISE_GET_QUERY_NO_GID_RESP =\
- {'status': 200,
+ {'status': http_client.OK,
'location': '',
'content': " ".join(ISE_GET_QUERY_NO_GID_XML.split())}
@@ -239,7 +240,7 @@ ISE_GET_QUERY_NO_CLONE_XML =\
""" % (ISE_IP1, ISE_IP2)
ISE_GET_QUERY_NO_CLONE_RESP =\
- {'status': 200,
+ {'status': http_client.OK,
'location': '',
'content': " ".join(ISE_GET_QUERY_NO_CLONE_XML.split())}
@@ -287,7 +288,7 @@ ISE_GET_STORAGE_POOLS_XML =\
"""
ISE_GET_STORAGE_POOLS_RESP =\
- {'status': 200,
+ {'status': http_client.OK,
'location': 'Pool location',
'content': " ".join(ISE_GET_STORAGE_POOLS_XML.split())}
@@ -295,7 +296,7 @@ ISE_GET_VOL_STATUS_NO_VOL_NODE_XML =\
""""""
ISE_GET_VOL_STATUS_NO_VOL_NODE_RESP =\
- {'status': 200,
+ {'status': http_client.OK,
'location': 'u%s' % ISE_VOLUME1_LOCATION_URL,
'content': " ".join(ISE_GET_VOL_STATUS_NO_VOL_NODE_XML.split())}
@@ -306,7 +307,7 @@ ISE_GET_VOL_STATUS_NO_STATUS_XML =\
""" % (ISE_VOLUME1_LOCATION_URL)
ISE_GET_VOL_STATUS_NO_STATUS_RESP =\
- {'status': 200,
+ {'status': http_client.OK,
'location': 'u%s' % ISE_VOLUME1_LOCATION_URL,
'content': " ".join(ISE_GET_VOL_STATUS_NO_STATUS_XML.split())}
@@ -323,7 +324,7 @@ ISE_GET_VOL1_STATUS_XML =\
""" % (ISE_VOLUME1_LOCATION_URL)
ISE_GET_VOL1_STATUS_RESP =\
- {'status': 200,
+ {'status': http_client.OK,
'location': 'u%s' % ISE_VOLUME1_LOCATION_URL,
'content': " ".join(ISE_GET_VOL1_STATUS_XML.split())}
@@ -339,7 +340,7 @@ ISE_GET_VOL2_STATUS_XML =\
""" % (ISE_VOLUME2_LOCATION_URL)
ISE_GET_VOL2_STATUS_RESP =\
- {'status': 200,
+ {'status': http_client.OK,
'location': 'u%s' % ISE_VOLUME2_LOCATION_URL,
'content': " ".join(ISE_GET_VOL2_STATUS_XML.split())}
@@ -355,7 +356,7 @@ ISE_GET_VOL3_STATUS_XML =\
""" % (ISE_VOLUME3_LOCATION_URL)
ISE_GET_VOL3_STATUS_RESP =\
- {'status': 200,
+ {'status': http_client.OK,
'location': 'u%s' % ISE_VOLUME3_LOCATION_URL,
'content': " ".join(ISE_GET_VOL3_STATUS_XML.split())}
@@ -371,7 +372,7 @@ ISE_GET_SNAP1_STATUS_XML =\
""" % (ISE_SNAPSHOT_LOCATION_URL)
ISE_GET_SNAP1_STATUS_RESP =\
- {'status': 200,
+ {'status': http_client.OK,
'location': 'u%s' % ISE_SNAPSHOT_LOCATION_URL,
'content': " ".join(ISE_GET_SNAP1_STATUS_XML.split())}
@@ -387,14 +388,14 @@ ISE_GET_CLONE1_STATUS_XML =\
""" % (ISE_CLONE_LOCATION_URL)
ISE_GET_CLONE1_STATUS_RESP =\
- {'status': 200,
+ {'status': http_client.OK,
'location': 'u%s' % ISE_CLONE_LOCATION_URL,
'content': " ".join(ISE_GET_CLONE1_STATUS_XML.split())}
ISE_CREATE_VOLUME_XML = """"""
ISE_CREATE_VOLUME_RESP =\
- {'status': 201,
+ {'status': http_client.CREATED,
'location': ISE_VOLUME1_LOCATION_URL,
'content': " ".join(ISE_CREATE_VOLUME_XML.split())}
@@ -411,7 +412,7 @@ ISE_GET_IONETWORKS_XML =\
"""
ISE_GET_IONETWORKS_RESP =\
- {'status': 200,
+ {'status': http_client.OK,
'location': '',
'content': " ".join(ISE_GET_IONETWORKS_XML.split())}
@@ -428,14 +429,14 @@ ISE_GET_IONETWORKS_CHAP_XML =\
"""
ISE_GET_IONETWORKS_CHAP_RESP =\
- {'status': 200,
+ {'status': http_client.OK,
'location': '',
'content': " ".join(ISE_GET_IONETWORKS_CHAP_XML.split())}
ISE_DELETE_VOLUME_XML = """"""
ISE_DELETE_VOLUME_RESP =\
- {'status': 204,
+ {'status': http_client.NO_CONTENT,
'location': '',
'content': " ".join(ISE_DELETE_VOLUME_XML.split())}
@@ -454,7 +455,7 @@ ISE_GET_ALLOC_WITH_EP_XML =\
(ISE_ALLOCATION_LOCATION_URL, VOLUME1['name'], HOST1)
ISE_GET_ALLOC_WITH_EP_RESP =\
- {'status': 200,
+ {'status': http_client.OK,
'location': ISE_ALLOCATION_LOCATION_URL,
'content': " ".join(ISE_GET_ALLOC_WITH_EP_XML.split())}
@@ -462,14 +463,14 @@ ISE_GET_ALLOC_WITH_NO_ALLOC_XML =\
"""""" % ISE_ALLOCATION_LOCATION_URL
ISE_GET_ALLOC_WITH_NO_ALLOC_RESP =\
- {'status': 200,
+ {'status': http_client.OK,
'location': ISE_ALLOCATION_LOCATION_URL,
'content': " ".join(ISE_GET_ALLOC_WITH_NO_ALLOC_XML.split())}
ISE_DELETE_ALLOC_XML = """"""
ISE_DELETE_ALLOC_RESP =\
- {'status': 204,
+ {'status': http_client.NO_CONTENT,
'location': '',
'content': " ".join(ISE_DELETE_ALLOC_XML.split())}
@@ -477,7 +478,7 @@ ISE_GET_HOSTS_NOHOST_XML =\
""""""
ISE_GET_HOSTS_NOHOST_RESP =\
- {'status': 200,
+ {'status': http_client.OK,
'location': '',
'content': " ".join(ISE_GET_HOSTS_NOHOST_XML.split())}
@@ -502,7 +503,7 @@ ISE_GET_HOSTS_HOST1_XML =\
""" % HOST1
ISE_GET_HOSTS_HOST1_RESP =\
- {'status': 200,
+ {'status': http_client.OK,
'location': '',
'content': " ".join(ISE_GET_HOSTS_HOST1_XML.split())}
@@ -527,7 +528,7 @@ ISE_GET_HOSTS_HOST1_HOST_TYPE_XML =\
""" % HOST1
ISE_GET_HOSTS_HOST1_HOST_TYPE_RESP =\
- {'status': 200,
+ {'status': http_client.OK,
'location': '',
'content': " ".join(ISE_GET_HOSTS_HOST1_HOST_TYPE_XML.split())}
@@ -551,7 +552,7 @@ ISE_GET_HOSTS_HOST2_XML =\
""" % HOST2
ISE_GET_HOSTS_HOST2_RESP =\
- {'status': 200,
+ {'status': http_client.OK,
'location': '',
'content': " ".join(ISE_GET_HOSTS_HOST2_XML.split())}
@@ -559,7 +560,7 @@ ISE_CREATE_HOST_XML =\
""""""
ISE_CREATE_HOST_RESP =\
- {'status': 201,
+ {'status': http_client.CREATED,
'location': 'http://ip/storage/hosts/host1',
'content': " ".join(ISE_CREATE_HOST_XML.split())}
@@ -567,7 +568,7 @@ ISE_CREATE_ALLOC_XML =\
""""""
ISE_CREATE_ALLOC_RESP =\
- {'status': 201,
+ {'status': http_client.CREATED,
'location': ISE_ALLOCATION_LOCATION_URL,
'content': " ".join(ISE_CREATE_ALLOC_XML.split())}
@@ -607,7 +608,7 @@ ISE_GET_ENDPOINTS_XML =\
ISE_ALLOCATION_LOCATION_URL)
ISE_GET_ENDPOINTS_RESP =\
- {'status': 200,
+ {'status': http_client.OK,
'location': '',
'content': " ".join(ISE_GET_ENDPOINTS_XML.split())}
@@ -659,35 +660,35 @@ ISE_GET_CONTROLLERS_XML =\
ISE_ISCSI_IP2, ISE_WWN3, ISE_WWN4)
ISE_GET_CONTROLLERS_RESP =\
- {'status': 200,
+ {'status': http_client.OK,
'location': '',
'content': " ".join(ISE_GET_CONTROLLERS_XML.split())}
ISE_CREATE_SNAPSHOT_XML = """"""
ISE_CREATE_SNAPSHOT_RESP =\
- {'status': 201,
+ {'status': http_client.CREATED,
'location': ISE_SNAPSHOT_LOCATION_URL,
'content': " ".join(ISE_CREATE_SNAPSHOT_XML.split())}
ISE_PREP_SNAPSHOT_XML = """"""
ISE_PREP_SNAPSHOT_RESP =\
- {'status': 202,
+ {'status': http_client.ACCEPTED,
'location': ISE_SNAPSHOT_LOCATION_URL,
'content': " ".join(ISE_PREP_SNAPSHOT_XML.split())}
ISE_MODIFY_VOLUME_XML = """"""
ISE_MODIFY_VOLUME_RESP =\
- {'status': 201,
+ {'status': http_client.CREATED,
'location': ISE_VOLUME1_LOCATION_URL,
'content': " ".join(ISE_MODIFY_VOLUME_XML.split())}
ISE_MODIFY_HOST_XML = """"""
ISE_MODIFY_HOST_RESP =\
- {'status': 201,
+ {'status': http_client.CREATED,
'location': ISE_HOST_LOCATION_URL,
'content': " ".join(ISE_MODIFY_HOST_XML.split())}
@@ -697,7 +698,7 @@ ISE_BAD_CONNECTION_RESP =\
'content': " "}
ISE_400_RESP =\
- {'status': 400,
+ {'status': http_client.BAD_REQUEST,
'location': '',
'content': ""}
@@ -705,7 +706,7 @@ ISE_GET_VOL_STATUS_404_XML = \
"""VOLUME not found."""
ISE_GET_VOL_STATUS_404_RESP =\
- {'status': 404,
+ {'status': http_client.NOT_FOUND,
'location': '',
'content': " ".join(ISE_GET_VOL_STATUS_404_XML.split())}
@@ -713,7 +714,7 @@ ISE_400_INVALID_STATE_XML = \
"""Not in a valid state."""
ISE_400_INVALID_STATE_RESP =\
- {'status': 400,
+ {'status': http_client.BAD_REQUEST,
'location': '',
'content': " ".join(ISE_400_INVALID_STATE_XML.split())}
@@ -721,7 +722,7 @@ ISE_409_CONFLICT_XML = \
"""Conflict"""
ISE_409_CONFLICT_RESP =\
- {'status': 409,
+ {'status': http_client.CONFLICT,
'location': '',
'content': " ".join(ISE_409_CONFLICT_XML.split())}