Fix kubeconfig parameter when multiple config files are provided (#468)

Fix kubeconfig parameter when multiple config files are provided

SUMMARY

#435

ISSUE TYPE


Bugfix Pull Request

Reviewed-by: Mike Graves <mgraves@redhat.com>
This commit is contained in:
Bikouo Aubin
2022-05-25 17:04:02 +02:00
committed by GitHub
parent 3729b8bb5b
commit 193a0cb68c
3 changed files with 16 additions and 4 deletions

View File

@@ -0,0 +1,3 @@
---
bugfixes:
- Fix kubeconfig parameter when multiple config files are provided (https://github.com/ansible-collections/kubernetes.core/issues/435).

View File

@@ -11,6 +11,7 @@ import copy
import traceback import traceback
import os import os
from contextlib import contextmanager from contextlib import contextmanager
import platform
from ansible.config.manager import ensure_type from ansible.config.manager import ensure_type
from ansible.errors import ( from ansible.errors import (
@@ -50,6 +51,9 @@ class RemoveOmit(object):
return [self.remove_omit(d) for d in self.data] return [self.remove_omit(d) for d in self.data]
ENV_KUBECONFIG_PATH_SEPARATOR = ";" if platform.system() == "Windows" else ":"
class ActionModule(ActionBase): class ActionModule(ActionBase):
TRANSFERS_FILES = True TRANSFERS_FILES = True
@@ -308,11 +312,15 @@ class ActionModule(ActionBase):
if not remote_transport: if not remote_transport:
# kubeconfig is local # kubeconfig is local
# find in expected paths # find in expected paths
kubeconfig = self._find_needle("files", kubeconfig) configs = []
for config in kubeconfig.split(ENV_KUBECONFIG_PATH_SEPARATOR):
config = self._find_needle("files", config)
# decrypt kubeconfig found # decrypt kubeconfig found
actual_file = self._loader.get_real_file(kubeconfig, decrypt=True) configs.append(self._loader.get_real_file(config, decrypt=True))
new_module_args["kubeconfig"] = actual_file new_module_args["kubeconfig"] = ENV_KUBECONFIG_PATH_SEPARATOR.join(
configs
)
elif isinstance(kubeconfig, dict): elif isinstance(kubeconfig, dict):
new_module_args["kubeconfig"] = kubeconfig new_module_args["kubeconfig"] = kubeconfig

View File

@@ -28,6 +28,7 @@ options:
options are provided, the Kubernetes client will attempt to load the default options are provided, the Kubernetes client will attempt to load the default
configuration file from I(~/.kube/config). Can also be specified via K8S_AUTH_KUBECONFIG environment configuration file from I(~/.kube/config). Can also be specified via K8S_AUTH_KUBECONFIG environment
variable. variable.
- Multiple Kubernetes config file can be provided using separator ';' for Windows platform or ':' for others platforms.
- The kubernetes configuration can be provided as dictionary. This feature requires a python kubernetes client version >= 17.17.0. Added in version 2.2.0. - The kubernetes configuration can be provided as dictionary. This feature requires a python kubernetes client version >= 17.17.0. Added in version 2.2.0.
type: raw type: raw
context: context: