Use a sensible default for k8s merge_type (#45284)

* Use a sensible default for k8s merge_type

The sensible default for merge_type is `['strategic-merge', 'merge'].
However, we can't make this the default default, as we need to support
users who are using openshift 0.6.0, where the merge_type parameter is
unsupported.

* Refactor k8s test suite for merge_type tests

Allow tests with pre-merge-type openshift and post-merge-type
openshift.
This commit is contained in:
Will Thames 2018-09-08 10:08:09 +10:00 committed by GitHub
commit 1463c2e4a8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 139 additions and 57 deletions

View file

@ -210,18 +210,19 @@ class KubernetesRawModule(KubernetesAnsibleModule):
if self.check_mode:
k8s_obj = dict_merge(existing.to_dict(), definition)
else:
if self.params['merge_type']:
from distutils.version import LooseVersion
if LooseVersion(self.openshift_version) < LooseVersion("0.6.2"):
from distutils.version import LooseVersion
if LooseVersion(self.openshift_version) < LooseVersion("0.6.2"):
if self.params['merge_type']:
self.fail_json(msg="openshift >= 0.6.2 is required for merge_type")
for merge_type in self.params['merge_type']:
else:
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
else:
k8s_obj, error = self.patch_resource(resource, definition, existing, name,
namespace)
if error:
self.fail_json(**error)