diff --git a/plugins/modules/nsupdate_zone.py b/plugins/modules/nsupdate_zone.py index c80471e..03b9c76 100644 --- a/plugins/modules/nsupdate_zone.py +++ b/plugins/modules/nsupdate_zone.py @@ -873,25 +873,26 @@ class DNSZoneManager: def _format_diff(self, changes: dict) -> dict: """Format changes as a diff structure for diff mode using zone file format.""" - diff_lines = [] + before_lines = [] + after_lines = [] - # Process deletes - records being removed + # Process deletes - records being removed (appear in before) for record in sorted(changes['deletes'], key=lambda r: (r['name'].to_text(), r['type'])): record_name = record['name'].to_text().rstrip('.') record_type = record['type'] ttl = record.get('ttl', self.soa_minimum_ttl) values = sorted(str(v) for v in record['values']) for value in values: - diff_lines.append(f"-{record_name:<35} {ttl:<10} {record_type:<10} {value}") + before_lines.append(f"{record_name:<35} {ttl:<10} {record_type:<10} {value}") - # Process adds - records being added + # Process adds - records being added (appear in after) for record in sorted(changes['adds'], key=lambda r: (r['name'].to_text(), r['type'])): record_name = record['name'].to_text().rstrip('.') record_type = record['type'] ttl = record.get('ttl', self.soa_minimum_ttl) values = sorted(str(v) for v in record['values']) for value in values: - diff_lines.append(f"+{record_name:<35} {ttl:<10} {record_type:<10} {value}") + after_lines.append(f"{record_name:<35} {ttl:<10} {record_type:<10} {value}") # Process updates - records being changed for record in sorted(changes['updates'], key=lambda r: (r['name'].to_text(), r['type'])): @@ -902,18 +903,17 @@ class DNSZoneManager: old_values = sorted(str(v) for v in record['old_values']) new_values = sorted(str(v) for v in record['new_values']) - # Show old values with - + # Show old values in before for value in old_values: - diff_lines.append(f"-{record_name:<35} {old_ttl:<10} {record_type:<10} {value}") - # Show new values with + + before_lines.append(f"{record_name:<35} {old_ttl:<10} {record_type:<10} {value}") + # Show new values in after for value in new_values: - diff_lines.append(f"+{record_name:<35} {new_ttl:<10} {record_type:<10} {value}") + after_lines.append(f"{record_name:<35} {new_ttl:<10} {record_type:<10} {value}") - # Return diff with content - using actual line breaks, not escaped strings - diff_output = '\n'.join(diff_lines) if diff_lines else 'No changes' + # Return diff with before/after as lists - Ansible will display these properly return { - 'before': diff_output, - 'after': diff_output + 'before': before_lines if before_lines else ['No changes'], + 'after': after_lines if after_lines else ['No changes'] }