def request(self, url, method, **kwargs): url = self.baseurl + "/api" + url 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) self.http_log_req(method, url, kwargs) resp = requests.request(method, url, **kwargs) 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-harbor-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): url = self.baseurl + "/api" + url 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'] kwargs["headers"]['Harbor-API-Version'] = "v2" if self.timeout is not None: kwargs.setdefault('timeout', self.timeout) self.http_log_req(method, url, kwargs) resp = requests.request(method, url, verify=self.verify_cert, **kwargs) self.http_log_resp(resp) if resp.status_code >= 400: raise exceptions.from_response(resp, resp.text, url, method) try: body = json.loads(resp.text) except ValueError: body = resp.text return body