mirror of
https://github.com/ansible-collections/kubernetes.core.git
synced 2026-03-26 21:33:02 +00:00
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:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user