diff --git a/kubernetes/base/stream/ws_client.py b/kubernetes/base/stream/ws_client.py index 10c6c1bcd5..4c5d13c1da 100644 --- a/kubernetes/base/stream/ws_client.py +++ b/kubernetes/base/stream/ws_client.py @@ -508,7 +508,7 @@ def websocket_proxycare(connect_opt, configuration, url, headers): if configuration.proxy: proxy_url = urlparse(configuration.proxy) - connect_opt.update({'http_proxy_host': proxy_url.hostname, 'http_proxy_port': proxy_url.port}) + connect_opt.update({'http_proxy_host': proxy_url.hostname, 'http_proxy_port': proxy_url.port, 'proxy_type': proxy_url.scheme}) if configuration.proxy_headers: for key,value in configuration.proxy_headers.items(): if key == 'proxy-authorization' and value.startswith('Basic'): diff --git a/kubernetes/client/rest.py b/kubernetes/client/rest.py index 3e3b8b2736..ce0c0544f7 100644 --- a/kubernetes/client/rest.py +++ b/kubernetes/client/rest.py @@ -88,17 +88,31 @@ def __init__(self, configuration, pools_size=4, maxsize=None): # https pool manager if configuration.proxy and not should_bypass_proxies(configuration.host, no_proxy=configuration.no_proxy or ''): - self.pool_manager = urllib3.ProxyManager( - num_pools=pools_size, - maxsize=maxsize, - cert_reqs=cert_reqs, - ca_certs=ca_certs, - cert_file=configuration.cert_file, - key_file=configuration.key_file, - proxy_url=configuration.proxy, - proxy_headers=configuration.proxy_headers, - **addition_pool_args - ) + if configuration.proxy.startswith('sock'): + from urllib3.contrib.socks import SOCKSProxyManager + self.pool_manager = SOCKSProxyManager( + num_pools=pools_size, + maxsize=maxsize, + cert_reqs=cert_reqs, + ca_certs=ca_certs, + cert_file=configuration.cert_file, + key_file=configuration.key_file, + proxy_url=configuration.proxy, + headers=configuration.proxy_headers, + **addition_pool_args + ) + else: + self.pool_manager = urllib3.ProxyManager( + num_pools=pools_size, + maxsize=maxsize, + cert_reqs=cert_reqs, + ca_certs=ca_certs, + cert_file=configuration.cert_file, + key_file=configuration.key_file, + proxy_url=configuration.proxy, + proxy_headers=configuration.proxy_headers, + **addition_pool_args + ) else: self.pool_manager = urllib3.PoolManager( num_pools=pools_size,