diff --git a/magnum/common/pythonk8sclient/swagger_client/api_client.py b/magnum/common/pythonk8sclient/swagger_client/api_client.py index 97745eb..ea0c736 100644 --- a/magnum/common/pythonk8sclient/swagger_client/api_client.py +++ b/magnum/common/pythonk8sclient/swagger_client/api_client.py @@ -65,7 +65,8 @@ class ApiClient(object): :param header_value: a header value to pass when making calls to the API. """ def __init__(self, host=Configuration().host, - header_name=None, header_value=None, cookie=None): + header_name=None, header_value=None, cookie=None, + key_file=None, cert_file=None, ca_certs=None): """ Constructor of the class. @@ -77,6 +78,9 @@ class ApiClient(object): self.cookie = cookie # Set default User-Agent. self.user_agent = 'Python-Swagger' + self.RESTClient = RESTClient(key_file=key_file, + cert_file=cert_file, + ca_certs=ca_certs) @property def user_agent(self): @@ -328,38 +332,38 @@ class ApiClient(object): def request(self, method, url, query_params=None, headers=None, post_params=None, body=None): """ - Makes the HTTP request using RESTClient. + Makes the HTTP request using instance of rest client. """ if method == "GET": - return RESTClient.GET(url, - query_params=query_params, - headers=headers) + return self.RESTClient.GET(url, + query_params=query_params, + headers=headers) elif method == "HEAD": - return RESTClient.HEAD(url, - query_params=query_params, - headers=headers) + return self.RESTClient.HEAD(url, + query_params=query_params, + headers=headers) elif method == "POST": - return RESTClient.POST(url, - query_params=query_params, - headers=headers, - post_params=post_params, - body=body) + return self.RESTClient.POST(url, + query_params=query_params, + headers=headers, + post_params=post_params, + body=body) elif method == "PUT": - return RESTClient.PUT(url, - query_params=query_params, - headers=headers, - post_params=post_params, - body=body) + return self.RESTClient.PUT(url, + query_params=query_params, + headers=headers, + post_params=post_params, + body=body) elif method == "PATCH": - return RESTClient.PATCH(url, - query_params=query_params, - headers=headers, - post_params=post_params, - body=body) + return self.RESTClient.PATCH(url, + query_params=query_params, + headers=headers, + post_params=post_params, + body=body) elif method == "DELETE": - return RESTClient.DELETE(url, - query_params=query_params, - headers=headers) + return self.RESTClient.DELETE(url, + query_params=query_params, + headers=headers) else: raise ValueError( "http method must be `GET`, `HEAD`," diff --git a/magnum/common/pythonk8sclient/swagger_client/rest.py b/magnum/common/pythonk8sclient/swagger_client/rest.py index 819d568..0d70adb 100644 --- a/magnum/common/pythonk8sclient/swagger_client/rest.py +++ b/magnum/common/pythonk8sclient/swagger_client/rest.py @@ -67,20 +67,22 @@ class RESTResponse(io.IOBase): class RESTClientObject(object): - def __init__(self, pools_size=4): + def __init__(self, pools_size=4, + key_file=None, cert_file=None, ca_certs=None): # http pool manager self.pool_manager = urllib3.PoolManager( num_pools=pools_size ) - - # https pool manager - # certificates validated using Mozilla’s root certificates - # TODO(hongbin): fix the hard-coded ca_certs path + + # Note(suro-patz): Changing the behavior to accept security param + if ca_certs is None: + ca_certs = '/etc/ssl/certs/ca-certificates.crt' self.ssl_pool_manager = urllib3.PoolManager( num_pools=pools_size, + key_file=key_file, + cert_file=cert_file, cert_reqs=ssl.CERT_REQUIRED, - ca_certs='/etc/ssl/certs/ca-certificates.crt' - ) + ca_certs=ca_certs) def agent(self, url): """ @@ -229,56 +231,52 @@ class ApiException(Exception): class RESTClient(object): """ - A class with all class methods to perform JSON requests. + A class with methods to perform JSON requests. """ - IMPL = RESTClientObject() + def __init__(self, key_file=None, cert_file=None, ca_certs=None): + self.IMPL = RESTClientObject(key_file=key_file, + cert_file=cert_file, + ca_certs=ca_certs) - @classmethod - def request(cls, *n, **kw): + def request(self, *n, **kw): """ Perform a REST request and parse the response. """ - return cls.IMPL.request(*n, **kw) + return self.IMPL.request(*n, **kw) - @classmethod - def GET(cls, *n, **kw): + def GET(self, *n, **kw): """ Perform a GET request using `RESTClient.request()`. """ - return cls.IMPL.GET(*n, **kw) + return self.IMPL.GET(*n, **kw) - @classmethod - def HEAD(cls, *n, **kw): + def HEAD(self, *n, **kw): """ Perform a HEAD request using `RESTClient.request()`. """ - return cls.IMPL.GET(*n, **kw) + return self.IMPL.GET(*n, **kw) - @classmethod - def POST(cls, *n, **kw): + def POST(self, *n, **kw): """ Perform a POST request using `RESTClient.request()` """ - return cls.IMPL.POST(*n, **kw) + return self.IMPL.POST(*n, **kw) - @classmethod - def PUT(cls, *n, **kw): + def PUT(self, *n, **kw): """ Perform a PUT request using `RESTClient.request()` """ - return cls.IMPL.PUT(*n, **kw) + return self.IMPL.PUT(*n, **kw) - @classmethod - def PATCH(cls, *n, **kw): + def PATCH(self, *n, **kw): """ Perform a PATCH request using `RESTClient.request()` """ - return cls.IMPL.PATCH(*n, **kw) + return self.IMPL.PATCH(*n, **kw) - @classmethod - def DELETE(cls, *n, **kw): + def DELETE(self, *n, **kw): """ Perform a DELETE request using `RESTClient.request()` """ - return cls.IMPL.DELETE(*n, **kw) + return self.IMPL.DELETE(*n, **kw)