Allow to specify k8s credentials in config

Change-Id: I483f43fbdb2c5e91edc2e0592530da01765c24b5
This commit is contained in:
Sergey Reshetnyak 2017-01-16 16:02:43 +03:00
parent 886c0179c2
commit 966ae060d0
3 changed files with 23 additions and 6 deletions

View File

@ -6,11 +6,15 @@ DEFAULTS = {
'key_file': None,
'cert_file': None,
'insecure': False,
'username': None,
'password': None,
'cluster_domain': 'cluster.local',
'image_pull_policy': None,
},
}
STRING_OR_NULL = {'anyOf': [{'type': 'string'}, {'type': 'null'}]}
SCHEMA = {
'kubernetes': {
'type': 'object',
@ -18,10 +22,12 @@ SCHEMA = {
'properties': {
'server': {'type': 'string'},
'namespace': {'type': 'string'},
'ca_cert': {'anyOf': [{'type': 'string'}, {'type': 'null'}]},
'key_file': {'anyOf': [{'type': 'string'}, {'type': 'null'}]},
'cert_file': {'anyOf': [{'type': 'string'}, {'type': 'null'}]},
'ca_cert': STRING_OR_NULL,
'key_file': STRING_OR_NULL,
'cert_file': STRING_OR_NULL,
'insecure': {'type': 'boolean'},
'username': STRING_OR_NULL,
'password': STRING_OR_NULL,
'cluster_domain': {'type': 'string'},
'image_pull_policy': {'oneOf': [
{'type': 'null'},

View File

@ -20,12 +20,14 @@ UPDATABLE_OBJECTS = (
def get_client(kube_apiserver=None, key_file=None, cert_file=None,
ca_cert=None, insecure=None):
ca_cert=None, insecure=None, username=None, password=None):
kube_apiserver = kube_apiserver or CONF.kubernetes.server
key_file = key_file or CONF.kubernetes.key_file
cert_file = cert_file or CONF.kubernetes.cert_file
ca_cert = ca_cert or CONF.kubernetes.ca_cert
insecure = insecure or CONF.kubernetes.insecure
username = username or CONF.kubernetes.username
password = password or CONF.kubernetes.password
cluster = {"server": kube_apiserver}
if ca_cert:
@ -37,6 +39,10 @@ def get_client(kube_apiserver=None, key_file=None, cert_file=None,
if cert_file and key_file:
user["client-certificate"] = cert_file
user["client-key"] = key_file
if username:
user["username"] = username
if password:
user["password"] = password
config = {
"clusters": [

View File

@ -26,7 +26,9 @@ class TestKubernetesClient(base.TestCase):
'name': 'ccp',
'user': {
'client-certificate': 'test.cert',
'client-key': 'test.key'
'client-key': 'test.key',
'username': 'test-user',
'password': 'test-passwd'
}
}],
'current-context': 'ccp'
@ -39,6 +41,8 @@ class TestKubernetesClient(base.TestCase):
key_file='test.key',
ca_cert='ca.crt',
cert_file='test.cert',
username='test-user',
password='test-passwd'
)
kubernetes.get_client()
@ -50,7 +54,8 @@ class TestKubernetesClient(base.TestCase):
def test_get_client(self, m_client, m_config):
kubernetes.get_client(
kube_apiserver='http://localhost:8080', key_file='test.key',
cert_file='test.cert', ca_cert='ca.crt')
cert_file='test.cert', ca_cert='ca.crt',
username='test-user', password='test-passwd')
m_config.assert_called_once_with(self.config)
m_client.assrt_called_once_with(m_config)