Merge "Fix 500 error on retrieving metadata by invalid URI"
This commit is contained in:
commit
667c66b993
@ -232,6 +232,8 @@ class MetadataProxyHandler(object):
|
||||
)
|
||||
LOG.warn(msg)
|
||||
return webob.exc.HTTPForbidden()
|
||||
elif resp.status == 400:
|
||||
return webob.exc.HTTPBadRequest()
|
||||
elif resp.status == 404:
|
||||
return webob.exc.HTTPNotFound()
|
||||
elif resp.status == 409:
|
||||
|
@ -110,6 +110,8 @@ class NetworkMetadataProxyHandler(object):
|
||||
response.headers['Content-Type'] = resp['content-type']
|
||||
response.body = content
|
||||
return response
|
||||
elif resp.status == 400:
|
||||
return webob.exc.HTTPBadRequest()
|
||||
elif resp.status == 404:
|
||||
return webob.exc.HTTPNotFound()
|
||||
elif resp.status == 409:
|
||||
|
@ -433,6 +433,10 @@ class TestMetadataProxyHandlerCache(base.BaseTestCase):
|
||||
self.assertEqual(response.content_type, "text/plain")
|
||||
self.assertEqual(response.body, 'content')
|
||||
|
||||
def test_proxy_request_400(self):
|
||||
self.assertIsInstance(self._proxy_request_test_helper(400),
|
||||
webob.exc.HTTPBadRequest)
|
||||
|
||||
def test_proxy_request_403(self):
|
||||
self.assertIsInstance(self._proxy_request_test_helper(403),
|
||||
webob.exc.HTTPForbidden)
|
||||
|
@ -148,15 +148,15 @@ class TestNetworkMetadataProxyHandler(base.BaseTestCase):
|
||||
'application/json')
|
||||
self.assertEqual(retval.body, '{}')
|
||||
|
||||
def test_proxy_request_network_404(self):
|
||||
def _test_proxy_request_network_4xx(self, status, method, expected):
|
||||
self.handler.network_id = 'network_id'
|
||||
|
||||
resp = mock.Mock(status=404)
|
||||
resp = mock.Mock(status=status)
|
||||
with mock.patch('httplib2.Http') as mock_http:
|
||||
mock_http.return_value.request.return_value = (resp, '')
|
||||
|
||||
retval = self.handler._proxy_request('192.168.1.1',
|
||||
'GET',
|
||||
method,
|
||||
'/latest/meta-data',
|
||||
'',
|
||||
'')
|
||||
@ -164,7 +164,7 @@ class TestNetworkMetadataProxyHandler(base.BaseTestCase):
|
||||
mock_http.assert_has_calls([
|
||||
mock.call().request(
|
||||
'http://169.254.169.254/latest/meta-data',
|
||||
method='GET',
|
||||
method=method,
|
||||
headers={
|
||||
'X-Forwarded-For': '192.168.1.1',
|
||||
'X-Neutron-Network-ID': 'network_id'
|
||||
@ -174,35 +174,19 @@ class TestNetworkMetadataProxyHandler(base.BaseTestCase):
|
||||
)]
|
||||
)
|
||||
|
||||
self.assertIsInstance(retval, webob.exc.HTTPNotFound)
|
||||
self.assertIsInstance(retval, expected)
|
||||
|
||||
def test_proxy_request_network_400(self):
|
||||
self._test_proxy_request_network_4xx(
|
||||
400, 'GET', webob.exc.HTTPBadRequest)
|
||||
|
||||
def test_proxy_request_network_404(self):
|
||||
self._test_proxy_request_network_4xx(
|
||||
404, 'GET', webob.exc.HTTPNotFound)
|
||||
|
||||
def test_proxy_request_network_409(self):
|
||||
self.handler.network_id = 'network_id'
|
||||
|
||||
resp = mock.Mock(status=409)
|
||||
with mock.patch('httplib2.Http') as mock_http:
|
||||
mock_http.return_value.request.return_value = (resp, '')
|
||||
|
||||
retval = self.handler._proxy_request('192.168.1.1',
|
||||
'POST',
|
||||
'/latest/meta-data',
|
||||
'',
|
||||
'')
|
||||
|
||||
mock_http.assert_has_calls([
|
||||
mock.call().request(
|
||||
'http://169.254.169.254/latest/meta-data',
|
||||
method='POST',
|
||||
headers={
|
||||
'X-Forwarded-For': '192.168.1.1',
|
||||
'X-Neutron-Network-ID': 'network_id'
|
||||
},
|
||||
connection_type=ns_proxy.UnixDomainHTTPConnection,
|
||||
body=''
|
||||
)]
|
||||
)
|
||||
|
||||
self.assertIsInstance(retval, webob.exc.HTTPConflict)
|
||||
self._test_proxy_request_network_4xx(
|
||||
409, 'POST', webob.exc.HTTPConflict)
|
||||
|
||||
def test_proxy_request_network_500(self):
|
||||
self.handler.network_id = 'network_id'
|
||||
|
Loading…
x
Reference in New Issue
Block a user