From cac94845c3976cc4d6fc6420ae16843fa2a9403c Mon Sep 17 00:00:00 2001 From: Mridul Gogoi Date: Tue, 12 May 2020 11:25:40 -0700 Subject: [PATCH 1/2] OPS-3453 - Pass dry_run=All to OpenShift when check mode is enabled. --- plugins/module_utils/raw.py | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/plugins/module_utils/raw.py b/plugins/module_utils/raw.py index de214e90..080a9d94 100644 --- a/plugins/module_utils/raw.py +++ b/plugins/module_utils/raw.py @@ -379,21 +379,16 @@ def perform_action(self, resource, definition): self.fail_json(msg="Resource replacement timed out", **result) return result - # Differences exist between the existing obj and requested params - if self.check_mode: - k8s_obj = dict_merge(existing.to_dict(), definition) + # Handle check mode inside of self.patch_resource() + if LooseVersion(self.openshift_version) < LooseVersion("0.6.2"): + k8s_obj, error = self.patch_resource(resource, definition, existing, name, + namespace) else: - if LooseVersion(self.openshift_version) < LooseVersion("0.6.2"): + for merge_type in self.params['merge_type'] or ['strategic-merge', 'merge']: k8s_obj, error = self.patch_resource(resource, definition, existing, name, - namespace) - else: - for merge_type in self.params['merge_type'] or ['strategic-merge', 'merge']: - k8s_obj, error = self.patch_resource(resource, definition, existing, name, - namespace, merge_type=merge_type) - if not error: - break - if error: - self.fail_json(**error) + namespace, merge_type=merge_type) + if not error: + break success = True result['result'] = k8s_obj @@ -413,6 +408,11 @@ def patch_resource(self, resource, definition, existing, name, namespace, merge_ params = dict(name=name, namespace=namespace) if merge_type: params['content_type'] = 'application/{0}-patch+json'.format(merge_type) + + # Pass dry_run=All to openshift + if self.check_mode: + params['dry_run'] = 'All' + k8s_obj = resource.patch(definition, **params).to_dict() match, diffs = self.diff_objects(existing.to_dict(), k8s_obj) error = {} From 88206b2e39b09d2afbddf65c046010d485a82149 Mon Sep 17 00:00:00 2001 From: Mridul Gogoi Date: Wed, 20 May 2020 17:35:46 -0700 Subject: [PATCH 2/2] Revert back to the old logic when openshift version < 0.11.1 --- plugins/module_utils/raw.py | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/plugins/module_utils/raw.py b/plugins/module_utils/raw.py index 080a9d94..767ab11b 100644 --- a/plugins/module_utils/raw.py +++ b/plugins/module_utils/raw.py @@ -379,16 +379,21 @@ def perform_action(self, resource, definition): self.fail_json(msg="Resource replacement timed out", **result) return result - # Handle check mode inside of self.patch_resource() - if LooseVersion(self.openshift_version) < LooseVersion("0.6.2"): - k8s_obj, error = self.patch_resource(resource, definition, existing, name, - namespace) + # Differences exist between the existing obj and requested params + if self.check_mode and LooseVersion(self.openshift_version) < LooseVersion("0.11.1"): + k8s_obj = dict_merge(existing.to_dict(), definition) else: - for merge_type in self.params['merge_type'] or ['strategic-merge', 'merge']: + if LooseVersion(self.openshift_version) < LooseVersion("0.6.2"): k8s_obj, error = self.patch_resource(resource, definition, existing, name, - namespace, merge_type=merge_type) - if not error: - break + namespace) + else: + for merge_type in self.params['merge_type'] or ['strategic-merge', 'merge']: + k8s_obj, error = self.patch_resource(resource, definition, existing, name, + namespace, merge_type=merge_type) + if not error: + break + if error: + self.fail_json(**error) success = True result['result'] = k8s_obj