def test_generic_microversion_is_specified(self): response = mock.MagicMock(headers={api_versions.HEADER_NAME: ""}) api_versions.check_headers(response, api_versions.APIVersion("2.27")) self.assertFalse(self.mock_log.warning.called) response = mock.MagicMock(headers={}) api_versions.check_headers(response, api_versions.APIVersion("2.27")) self.assertTrue(self.mock_log.warning.called)
def test_microversion_is_not_specified(self): response = mock.MagicMock(headers={api_versions.HEADER_NAME: ""}) api_versions.check_headers(response, api_versions.APIVersion("2.2")) self.assertFalse(self.mock_log.warning.called) response = mock.MagicMock(headers={}) api_versions.check_headers(response, api_versions.APIVersion("2.0")) self.assertFalse(self.mock_log.warning.called)
def test_microversion_is_not_specified(self): response = mock.MagicMock( headers={api_versions.LEGACY_HEADER_NAME: ""}) api_versions.check_headers(response, api_versions.APIVersion("2.2")) self.assertFalse(self.mock_log.warning.called) response = mock.MagicMock(headers={}) api_versions.check_headers(response, api_versions.APIVersion("2.0")) self.assertFalse(self.mock_log.warning.called)
def request(self, url, method, **kwargs): kwargs.setdefault('headers', kwargs.get('headers', {})) kwargs['headers']['User-Agent'] = self.USER_AGENT kwargs['headers']['Accept'] = 'application/json' if 'body' in kwargs: kwargs['headers']['Content-Type'] = 'application/json' kwargs['data'] = json.dumps(kwargs['body']) del kwargs['body'] api_versions.update_headers(kwargs["headers"], self.api_version) if self.timeout is not None: kwargs.setdefault('timeout', self.timeout) kwargs['verify'] = self.verify_cert self.http_log_req(method, url, kwargs) request_func = requests.request #session = self._get_session(url) session = None if session: request_func = session.request resp = request_func( method, url, **kwargs) api_versions.check_headers(resp, self.api_version) #self.http_log_resp(resp) #write to log if resp.text: # TODO(dtroyer): verify the note below in a requests context # NOTE(alaski): Because force_exceptions_to_status_code=True # httplib2 returns a connection refused event as a 400 response. # To determine if it is a bad request or refused connection we need # to check the body. httplib2 tests check for 'Connection refused' # or 'actively refused' in the body, so that's what we'll do. if resp.status_code == 400: if ('Connection refused' in resp.text or 'actively refused' in resp.text): raise exceptions.ConnectionRefused(resp.text) try: body = json.loads(resp.text) except ValueError: body = None else: body = None self.last_request_id = (resp.headers.get('x-openstack-request-id') if resp.headers else None) if resp.status_code >= 400: raise exceptions.from_response(resp, body, url, method) return resp, body
def request(self, url, method, **kwargs): kwargs.setdefault('headers', kwargs.get('headers', {})) kwargs['headers']['User-Agent'] = self.USER_AGENT kwargs['headers']['Accept'] = 'application/json' if 'body' in kwargs: kwargs['headers']['Content-Type'] = 'application/json' kwargs['data'] = json.dumps(kwargs['body']) del kwargs['body'] api_versions.update_headers(kwargs["headers"], self.api_version) if self.timeout is not None: kwargs.setdefault('timeout', self.timeout) kwargs['verify'] = self.verify_cert self.http_log_req(method, url, kwargs) request_func = requests.request session = self._get_session(url) if session: request_func = session.request resp = request_func(method, url, **kwargs) api_versions.check_headers(resp, self.api_version) self.http_log_resp(resp) if resp.text: # TODO(dtroyer): verify the note below in a requests context # NOTE(alaski): Because force_exceptions_to_status_code=True # httplib2 returns a connection refused event as a 400 response. # To determine if it is a bad request or refused connection we need # to check the body. httplib2 tests check for 'Connection refused' # or 'actively refused' in the body, so that's what we'll do. if resp.status_code == 400: if ('Connection refused' in resp.text or 'actively refused' in resp.text): raise exceptions.ConnectionRefused(resp.text) try: body = json.loads(resp.text) except ValueError: body = None else: body = None self.last_request_id = (resp.headers.get('x-openstack-request-id') if resp.headers else None) if resp.status_code >= 400: raise exceptions.from_response(resp, body, url, method) return resp, body
def request(self, url, method, **kwargs): kwargs.setdefault('headers', kwargs.get('headers', {})) api_versions.update_headers(kwargs["headers"], self.api_version) # NOTE(jamielennox): The standard call raises errors from # keystoneclient, where we need to raise the novaclient errors. raise_exc = kwargs.pop('raise_exc', True) with utils.record_time(self.times, self.timings, method, url): resp, body = super(SessionClient, self).request(url, method, raise_exc=False, **kwargs) api_versions.check_headers(resp, self.api_version) if raise_exc and resp.status_code >= 400: raise exceptions.from_response(resp, body, url, method) return resp, body
def request(self, url, method, **kwargs): kwargs.setdefault('headers', kwargs.get('headers', {})) api_versions.update_headers(kwargs["headers"], self.api_version) # NOTE(jamielennox): The standard call raises errors from # keystoneauth1, where we need to raise the novaclient errors. raise_exc = kwargs.pop('raise_exc', True) with utils.record_time(self.times, self.timings, method, url): resp, body = super(SessionClient, self).request(url, method, raise_exc=False, **kwargs) api_versions.check_headers(resp, self.api_version) if raise_exc and resp.status_code >= 400: raise exceptions.from_response(resp, body, url, method) return resp, body