diff --git a/changelogs/fragments/20250428-k8s-service-hide-fields-first.yaml b/changelogs/fragments/20250428-k8s-service-hide-fields-first.yaml new file mode 100644 index 00000000..4d1bc200 --- /dev/null +++ b/changelogs/fragments/20250428-k8s-service-hide-fields-first.yaml @@ -0,0 +1,3 @@ +--- +bugfixes: + - module_utils/k8s/service - hide fields first before creating diffs (https://github.com/ansible-collections/kubernetes.core/pull/915). diff --git a/plugins/module_utils/k8s/service.py b/plugins/module_utils/k8s/service.py index abfa59e3..087fc2d7 100644 --- a/plugins/module_utils/k8s/service.py +++ b/plugins/module_utils/k8s/service.py @@ -498,8 +498,8 @@ def diff_objects( if not diff: return True, result - result["before"] = diff[0] - result["after"] = diff[1] + result["before"] = hide_fields(diff[0], hidden_fields) + result["after"] = hide_fields(diff[1], hidden_fields) if list(result["after"].keys()) == ["metadata"] and list( result["before"].keys() @@ -512,9 +512,6 @@ def diff_objects( ).issubset(ignored_keys): return True, result - result["before"] = hide_fields(result["before"], hidden_fields) - result["after"] = hide_fields(result["after"], hidden_fields) - return False, result diff --git a/tests/integration/targets/k8s_hide_fields/tasks/main.yml b/tests/integration/targets/k8s_hide_fields/tasks/main.yml index f54fe9eb..746384e9 100644 --- a/tests/integration/targets/k8s_hide_fields/tasks/main.yml +++ b/tests/integration/targets/k8s_hide_fields/tasks/main.yml @@ -58,7 +58,7 @@ - "'managedFields' not in hf4.resources[0]['metadata']" - - name: Hiding a changed field should still result in a change + - name: Hiding a changed field should not result in a change k8s: definition: "{{ hide_fields_base_configmap | combine({'data':{'hello':'different'}}) }}" hidden_fields: @@ -67,10 +67,10 @@ register: hf5 diff: true - - name: Ensure that hidden changed field changed + - name: Ensure that hidden changed field not changed assert: that: - - hf5.changed + - not hf5.changed - name: Apply works with hidden fields k8s: