Check result of server metadata operation
An accidental failure in one of the functional tests showed, that response of metadata change was not checked. In that particular example nova returned 500 for one of the metadata deletes, but the testcase has not recognized this and went further, what resulted in a later asserEquals failure. So what we need to do here is to check the response of the metadata operation and raise an exception if it was not successful. Change-Id: I37bc96531eb37f9f850d5531354bd4db17973406
This commit is contained in:
parent
84116d6125
commit
8f97fb767c
|
@ -12,6 +12,7 @@
|
|||
|
||||
import six
|
||||
|
||||
from openstack import exceptions
|
||||
from openstack import utils
|
||||
|
||||
|
||||
|
@ -48,6 +49,8 @@ class MetadataMixin(object):
|
|||
|
||||
response = method(url, headers=headers, **kwargs)
|
||||
|
||||
# ensure Nova API has not returned us an error
|
||||
exceptions.raise_from_response(response)
|
||||
# DELETE doesn't return a JSON body while everything else does.
|
||||
return response.json() if not delete else None
|
||||
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
# under the License.
|
||||
|
||||
import mock
|
||||
from openstack import exceptions
|
||||
from openstack.tests.unit import base
|
||||
|
||||
from openstack.compute.v2 import server
|
||||
|
@ -41,6 +42,7 @@ class TestMetadata(base.TestCase):
|
|||
|
||||
def _test_get_all_metadata(self, sot):
|
||||
response = mock.Mock()
|
||||
response.status_code = 200
|
||||
response.json.return_value = self.metadata_result
|
||||
sess = mock.Mock()
|
||||
sess.get.return_value = response
|
||||
|
@ -54,6 +56,7 @@ class TestMetadata(base.TestCase):
|
|||
|
||||
def test_set_metadata(self):
|
||||
response = mock.Mock()
|
||||
response.status_code = 200
|
||||
response.json.return_value = self.metadata_result
|
||||
sess = mock.Mock()
|
||||
sess.post.return_value = response
|
||||
|
@ -71,7 +74,9 @@ class TestMetadata(base.TestCase):
|
|||
|
||||
def test_delete_metadata(self):
|
||||
sess = mock.Mock()
|
||||
sess.delete.return_value = None
|
||||
response = mock.Mock()
|
||||
response.status_code = 200
|
||||
sess.delete.return_value = response
|
||||
|
||||
sot = server.Server(id=IDENTIFIER)
|
||||
|
||||
|
@ -83,3 +88,37 @@ class TestMetadata(base.TestCase):
|
|||
"servers/IDENTIFIER/metadata/" + key,
|
||||
headers={"Accept": ""},
|
||||
)
|
||||
|
||||
def test_delete_metadata_error(self):
|
||||
sess = mock.Mock()
|
||||
response = mock.Mock()
|
||||
response.status_code = 400
|
||||
response.content = None
|
||||
sess.delete.return_value = response
|
||||
|
||||
sot = server.Server(id=IDENTIFIER)
|
||||
|
||||
key = "hey"
|
||||
|
||||
self.assertRaises(
|
||||
exceptions.BadRequestException,
|
||||
sot.delete_metadata,
|
||||
sess,
|
||||
[key])
|
||||
|
||||
def test_set_metadata_error(self):
|
||||
sess = mock.Mock()
|
||||
response = mock.Mock()
|
||||
response.status_code = 400
|
||||
response.content = None
|
||||
sess.post.return_value = response
|
||||
|
||||
sot = server.Server(id=IDENTIFIER)
|
||||
|
||||
set_meta = {"lol": "rofl"}
|
||||
|
||||
self.assertRaises(
|
||||
exceptions.BadRequestException,
|
||||
sot.set_metadata,
|
||||
sess,
|
||||
**set_meta)
|
||||
|
|
Loading…
Reference in New Issue