k8s - add support for Server Side apply (#260)

k8s - add support for Server Side apply

SUMMARY

Server side apply is now support for k8s module with this Pull request.
The feature is not yet released on kubernetes-client, once this is done, we can merge this pull request.
closes #87

ISSUE TYPE


Feature Pull Request

COMPONENT NAME

k8s
ADDITIONAL INFORMATION

Reviewed-by: Mike Graves <mgraves@redhat.com>
Reviewed-by: None <None>
Reviewed-by: None <None>
This commit is contained in:
abikouo
2021-12-16 17:48:00 +01:00
committed by GitHub
parent 526f0454ab
commit b19ff9d70a
5 changed files with 213 additions and 2 deletions

View File

@@ -490,7 +490,7 @@ class K8sAnsibleMixin(object):
self.params.pop(alias)
def load_resource_definitions(self, src):
""" Load the requested src path """
"""Load the requested src path"""
result = None
path = os.path.normpath(src)
if not os.path.exists(path):
@@ -834,6 +834,7 @@ class K8sAnsibleMixin(object):
wait_condition = None
continue_on_error = self.params.get("continue_on_error")
label_selectors = self.params.get("label_selectors")
server_side_apply = self.params.get("server_side_apply")
if self.params.get("wait_condition") and self.params["wait_condition"].get(
"type"
):
@@ -1028,6 +1029,7 @@ class K8sAnsibleMixin(object):
namespace=namespace,
)
)
return result
if apply:
if self.check_mode and not self.supports_dry_run:
@@ -1043,6 +1045,24 @@ class K8sAnsibleMixin(object):
params = {}
if self.check_mode:
params["dry_run"] = "All"
if server_side_apply:
params["server_side"] = True
if LooseVersion(kubernetes.__version__) < LooseVersion(
"19.15.0"
):
msg = "kubernetes >= 19.15.0 is required to use server side apply."
if continue_on_error:
result["error"] = dict(msg=msg)
return result
else:
self.fail_json(
msg=msg, version=kubernetes.__version__
)
if not server_side_apply.get("field_manager"):
self.fail(
msg="field_manager is required to use server side apply."
)
params.update(server_side_apply)
k8s_obj = resource.apply(
definition, namespace=namespace, **params
).to_dict()