Merge "Check for 204 case in DynamicVendorData"

This commit is contained in:
Jenkins 2017-03-02 07:08:26 +00:00 committed by Gerrit Code Review
commit cb01463af4
3 changed files with 12 additions and 4 deletions

View File

@ -96,7 +96,7 @@ class DynamicVendorData(vendordata.VendorDataDriver):
res = self.session.request(url, 'POST', data=jsonutils.dumps(body),
verify=verify, headers=headers,
timeout=timeout)
if res:
if res and res.text:
# TODO(mikal): Use the Cache-Control response header to do some
# sensible form of caching here.
return jsonutils.loads(res.text)

View File

@ -39,7 +39,11 @@ class FakeResponse(object):
def __nonzero__(self):
# python 2
return self.status_code == 200
return self.status_code < 400
@property
def text(self):
return self.content
class IdentityValidationTest(test.NoDBTestCase):

View File

@ -54,6 +54,7 @@ from nova import test
from nova.tests.unit.api.openstack import fakes
from nova.tests.unit import fake_block_device
from nova.tests.unit import fake_network
from nova.tests.unit import test_identity
from nova.tests import uuidsentinel as uuids
from nova import utils
from nova.virt import netutils
@ -845,9 +846,10 @@ class OpenStackMetadataTestCase(test.TestCase):
def _test_vendordata2_response_inner(self, request_mock, response_code,
include_rest_result=True):
request_mock.return_value.status_code = response_code
fake_response = test_identity.FakeResponse(response_code)
if include_rest_result:
request_mock.return_value.text = '{"color": "blue"}'
fake_response.content = '{"color": "blue"}'
request_mock.return_value = fake_response
with utils.tempdir() as tmpdir:
jsonfile = os.path.join(tmpdir, 'test.json')
@ -905,6 +907,8 @@ class OpenStackMetadataTestCase(test.TestCase):
@mock.patch.object(session.Session, 'request')
def test_vendor_data_response_vendordata2_no_content(self, request_mock):
# Make it a failure if no content was returned and we don't handle it.
self.flags(vendordata_dynamic_failure_fatal=True, group='api')
self._test_vendordata2_response_inner(request_mock,
requests.codes.NO_CONTENT,
include_rest_result=False)