Import ApiException from single source (#384)

Import ApiException from single source

SUMMARY
Signed-off-by: Abhijeet Kasurde akasurde@redhat.com
ISSUE TYPE

Bugfix Pull Request

COMPONENT NAME
changelogs/fragments/exception.yml
plugins/modules/k8s_drain.py
plugins/modules/k8s_taint.py

Reviewed-by: None <None>
This commit is contained in:
Abhijeet Kasurde
2022-02-15 20:17:33 +05:30
committed by GitHub
parent 1f79a03edf
commit 951be74dc0
4 changed files with 32 additions and 5 deletions

View File

@@ -0,0 +1,3 @@
---
bugfixes:
- import exception from ``kubernetes.client.rest``.

View File

@@ -124,9 +124,12 @@ result:
returned: success
type: str
"""
import copy
from datetime import datetime
import time
import traceback
from datetime import datetime
from ansible_collections.kubernetes.core.plugins.module_utils.ansiblemodule import (
AnsibleModule,
)
@@ -137,12 +140,26 @@ from ansible.module_utils._text import to_native
try:
from kubernetes.client.api import core_v1_api
from kubernetes.client.models import V1beta1Eviction, V1DeleteOptions
from kubernetes.client.models import V1DeleteOptions
from kubernetes.client.exceptions import ApiException
except ImportError:
# ImportError are managed by the common module already.
pass
HAS_EVICTION_API = True
k8s_import_exception = None
K8S_IMP_ERR = None
try:
from kubernetes.client.models import V1beta1Eviction as v1_eviction
except ImportError:
try:
from kubernetes.client.models import V1Eviction as v1_eviction
except ImportError as e:
k8s_import_exception = e
K8S_IMP_ERR = traceback.format_exc()
HAS_EVICTION_API = False
def filter_pods(pods, force, ignore_daemonset, delete_emptydir_data):
k8s_kind_mirror = "kubernetes.io/config.mirror"
@@ -311,7 +328,7 @@ class K8sDrainAnsible(object):
name=name, namespace=namespace, body=body
)
else:
body = V1beta1Eviction(**definition)
body = v1_eviction(**definition)
self._api_instance.create_namespaced_pod_eviction(
name=name, namespace=namespace, body=body
)
@@ -496,6 +513,13 @@ def argspec():
def main():
module = AnsibleModule(argument_spec=argspec())
if not HAS_EVICTION_API:
module.fail_json(
msg="The kubernetes Python library missing with V1Eviction API",
exception=K8S_IMP_ERR,
error=to_native(k8s_import_exception),
)
k8s_drain = K8sDrainAnsible(module)
k8s_drain.execute_module()

View File

@@ -142,7 +142,7 @@ from ansible_collections.kubernetes.core.plugins.module_utils.common import (
try:
from kubernetes.client.apis import core_v1_api
from kubernetes.stream import stream
from kubernetes.client.rest import ApiException
from kubernetes.client.exceptions import ApiException
except ImportError:
# ImportError are managed by the common module already.
pass

View File

@@ -139,7 +139,7 @@ from ansible_collections.kubernetes.core.plugins.module_utils.args_common import
try:
from kubernetes.client.api import core_v1_api
from kubernetes.dynamic.exceptions import ApiException
from kubernetes.client.exceptions import ApiException
except ImportError:
# ImportError are managed by the common module already.
pass