Not depending on specific K8s version anymore

Kubernetes imports are no longer version specific. Seems like the API change
was just a rename, so now we are importing either `V1beta1Deployment` or
`AppsV1beta1Deployment`. Usage stays the same.
This commit is contained in:
Jochen Breuer 2017-08-11 08:57:03 +02:00
parent d8f7d7a7c0
commit 71995505bc

View file

@ -2,7 +2,7 @@
'''
Module for handling kubernetes calls.
:optdepends: - kubernetes Python client >= version 2.0.0
:optdepends: - kubernetes Python client up to version 2.0.0
:configuration: The k8s API settings are provided either in a pillar, in
the minion's config file, or in master's config file::
@ -40,6 +40,14 @@ try:
except ImportError:
HAS_LIBS = False
try:
# There is an API change in Kubernetes >= 2.0.0.
from kubernetes.client import V1beta1Deployment as AppsV1beta1Deployment
from kubernetes.client import V1beta1DeploymentSpec as AppsV1beta1DeploymentSpec
except ImportError:
from kubernetes.client import AppsV1beta1Deployment
from kubernetes.client import AppsV1beta1DeploymentSpec
log = logging.getLogger(__name__)
@ -762,7 +770,7 @@ def create_deployment(
'''
body = __create_object_body(
kind='Deployment',
obj_class=kubernetes.client.AppsV1beta1Deployment,
obj_class=AppsV1beta1Deployment,
spec_creator=__dict_to_deployment_spec,
name=name,
namespace=namespace,
@ -1013,7 +1021,7 @@ def replace_deployment(name,
'''
body = __create_object_body(
kind='Deployment',
obj_class=kubernetes.client.AppsV1beta1Deployment,
obj_class=AppsV1beta1Deployment,
spec_creator=__dict_to_deployment_spec,
name=name,
namespace=namespace,
@ -1278,7 +1286,7 @@ def __dict_to_deployment_spec(spec):
'''
Converts a dictionary into kubernetes AppsV1beta1DeploymentSpec instance.
'''
spec_obj = kubernetes.client.AppsV1beta1DeploymentSpec()
spec_obj = AppsV1beta1DeploymentSpec()
for key, value in iteritems(spec):
if hasattr(spec_obj, key):
setattr(spec_obj, key, value)