mirror of
https://github.com/ansible-collections/kubernetes.core.git
synced 2026-05-06 21:12:37 +00:00
Add support for dry run (#245)
Add support for dry run SUMMARY Kubernetes server-side dry run will be used when the kubernetes client version is >=18.20.0. For older versions of the client, the existing client side speculative change implementation will be used. The effect of this change should be mostly transparent to the end user and is reflected in the fact the tests have not changed but should still pass. With this change, there are a few edge cases that will be improved. One example of these edge cases is to use check mode on an existing Service resource. With dry run this will correctly report no changes, while the older client side implementation will erroneously report changes to the port spec. ISSUE TYPE Feature Pull Request COMPONENT NAME ADDITIONAL INFORMATION Reviewed-by: Gonéri Le Bouder <goneri@lebouder.net> Reviewed-by: Mike Graves <mgraves@redhat.com> Reviewed-by: Alina Buzachis <None> Reviewed-by: None <None> Reviewed-by: None <None>
This commit is contained in:
@@ -234,13 +234,16 @@ def execute_module(k8s_module, module):
|
||||
msg = 'Failed to retrieve requested object: {0}'.format(to_native(exc))
|
||||
module.fail_json(msg=build_error_msg(kind, name, msg), error='', status='', reason='')
|
||||
|
||||
if module.check_mode:
|
||||
if module.check_mode and not k8s_module.supports_dry_run:
|
||||
obj, error = json_patch(existing.to_dict(), patch)
|
||||
if error:
|
||||
module.fail_json(**error)
|
||||
else:
|
||||
params = {}
|
||||
if module.check_mode:
|
||||
params["dry_run"] = "All"
|
||||
try:
|
||||
obj = resource.patch(patch, name=name, namespace=namespace, content_type="application/json-patch+json").to_dict()
|
||||
obj = resource.patch(patch, name=name, namespace=namespace, content_type="application/json-patch+json", **params).to_dict()
|
||||
except DynamicApiError as exc:
|
||||
msg = "Failed to patch existing object: {0}".format(exc.body)
|
||||
module.fail_json(msg=msg, error=exc.status, status=exc.status, reason=exc.reason)
|
||||
|
||||
Reference in New Issue
Block a user