Skip to content

Commit 6704619

Browse files
GlassOfWhiskeytomplus
authored andcommitted
Added optional explicit config parameter to InClusterConfigLoader (#196)
1 parent 678395b commit 6704619

File tree

2 files changed

+27
-8
lines changed

2 files changed

+27
-8
lines changed

kubernetes_asyncio/config/incluster_config.py

+15-8
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,14 @@ def __init__(self, token_filename,
4141
self._cert_filename = cert_filename
4242
self._environ = environ
4343

44-
def load_and_set(self):
44+
def load_and_set(self, client_configuration=None):
4545
self._load_config()
46-
self._set_config()
46+
if client_configuration:
47+
self._set_config(client_configuration)
48+
else:
49+
configuration = Configuration()
50+
self._set_config(configuration)
51+
Configuration.set_default(configuration)
4752

4853
def _load_config(self):
4954
if (SERVICE_HOST_ENV_NAME not in self._environ or
@@ -76,18 +81,20 @@ def _load_config(self):
7681

7782
self.ssl_ca_cert = self._cert_filename
7883

79-
def _set_config(self):
80-
configuration = Configuration()
84+
def _set_config(self, configuration):
8185
configuration.host = self.host
8286
configuration.ssl_ca_cert = self.ssl_ca_cert
8387
configuration.api_key['BearerToken'] = "Bearer " + self.token
84-
Configuration.set_default(configuration)
8588

8689

87-
def load_incluster_config():
90+
def load_incluster_config(client_configuration=None):
8891
"""Use the service account kubernetes gives to pods to connect to kubernetes
8992
cluster. It's intended for clients that expect to be running inside a pod
9093
running on kubernetes. It will raise an exception if called from a process
91-
not running in a kubernetes environment."""
94+
not running in a kubernetes environment.
95+
96+
:param client_configuration: The kubernetes.client.Configuration to
97+
set configs to.
98+
"""
9299
InClusterConfigLoader(token_filename=SERVICE_TOKEN_FILENAME,
93-
cert_filename=SERVICE_CERT_FILENAME).load_and_set()
100+
cert_filename=SERVICE_CERT_FILENAME).load_and_set(client_configuration)

kubernetes_asyncio/config/incluster_config_test.py

+12
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
import tempfile
1717
import unittest
1818

19+
from kubernetes_asyncio.client import Configuration
20+
1921
from .config_exception import ConfigException
2022
from .incluster_config import (
2123
SERVICE_HOST_ENV_NAME, SERVICE_PORT_ENV_NAME, InClusterConfigLoader,
@@ -128,6 +130,16 @@ def test_empty_token_file(self):
128130
token_filename=self._create_file_with_temp_content())
129131
self._should_fail_load(loader, "empty token file provided")
130132

133+
def test_client_config(self):
134+
cert_filename = self._create_file_with_temp_content(_TEST_CERT)
135+
loader = self.get_test_loader(cert_filename=cert_filename)
136+
loader._load_config()
137+
client_config = Configuration()
138+
loader._set_config(client_config)
139+
self.assertEqual("https://" + _TEST_HOST_PORT, client_config.host)
140+
self.assertEqual(cert_filename, client_config.ssl_ca_cert)
141+
self.assertEqual("Bearer " + _TEST_TOKEN, client_config.api_key['BearerToken'])
142+
131143

132144
if __name__ == '__main__':
133145
unittest.main()

0 commit comments

Comments
 (0)