Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions changelogs/fragments/11172-zfs-changed-extra-props.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
---
bugfixes:
- zfs - mark change correctly when updating properties whose current value differs, even if they already have a non-default value (https://github.com/ansible-collections/community.general/issues/11019, https://github.com/ansible-collections/community.general/pull/11172).
4 changes: 3 additions & 1 deletion plugins/modules/zfs.py
Original file line number Diff line number Diff line change
Expand Up @@ -185,9 +185,11 @@ def set_property(self, prop, value):
def set_properties_if_changed(self):
diff = {"before": {"extra_zfs_properties": {}}, "after": {"extra_zfs_properties": {}}}
current_properties = self.list_properties()
previous_values = {}
for prop, value in self.extra_zfs_properties.items():
current_value = self.get_property(prop, current_properties)
if current_value != value:
previous_values[prop] = current_value
self.set_property(prop, value)
diff["before"]["extra_zfs_properties"][prop] = current_value
diff["after"]["extra_zfs_properties"][prop] = value
Expand All @@ -198,7 +200,7 @@ def set_properties_if_changed(self):
value = self.get_property(prop, updated_properties)
if value is None:
self.module.fail_json(msg=f"zfsprop was not present after being successfully set: {prop}")
if self.get_property(prop, current_properties) != value:
if prop in previous_values and previous_values[prop] != value:
self.changed = True
if prop in diff["after"]["extra_zfs_properties"]:
diff["after"]["extra_zfs_properties"][prop] = value
Expand Down