diff --git a/plugins/modules/nsupdate_zone.py b/plugins/modules/nsupdate_zone.py index 17e2c0a..8d631d0 100644 --- a/plugins/modules/nsupdate_zone.py +++ b/plugins/modules/nsupdate_zone.py @@ -621,23 +621,17 @@ class DNSZoneManager: return filtered def _compute_changes(self, desired_records, current_records): - """Compute adds, deletes, and updates needed with verbose action tracking.""" + """Compute adds, deletes, and updates needed.""" changes = { 'adds': [], 'deletes': [], - 'updates': [], - 'skipped': [], - 'ignored': [] + 'updates': [] } - # Track verbose actions per record - verbose_actions = [] - # Find adds, updates, and unchanged records for key, desired in desired_records.items(): name_str = desired['name'].to_text() record_type = desired['type'] - record_key = f"{name_str} {record_type}" if desired['state'] == 'absent': # Handle explicit absents @@ -647,42 +641,29 @@ class DNSZoneManager: 'type': desired['type'], 'values': desired['values'] }) - verbose_actions.append({ - 'record': record_key, - 'action': 'Removed', - 'before': current_records[key]['values'], - 'after': set() - }) + if self.module._verbosity >= 1: + self.module.log(f"[{self.zone_name_str}] Removed: {name_str} {record_type}") else: # State is 'present' if key not in current_records: # Record doesn't exist - add it changes['adds'].append(desired) - verbose_actions.append({ - 'record': record_key, - 'action': 'Added', - 'before': set(), - 'after': desired['values'] - }) + if self.module._verbosity >= 1: + values_str = ', '.join(str(v) for v in desired['values']) + self.module.log(f"[{self.zone_name_str}] Added: {name_str} {record_type} {values_str}") else: # Record exists - check if values differ current = current_records[key] if desired['values'] != current['values'] or desired['ttl'] != current['ttl']: changes['updates'].append(desired) - verbose_actions.append({ - 'record': record_key, - 'action': 'Changed', - 'before': current['values'], - 'after': desired['values'] - }) + if self.module._verbosity >= 1: + before_values = ', '.join(str(v) for v in current['values']) + after_values = ', '.join(str(v) for v in desired['values']) + self.module.log(f"[{self.zone_name_str}] Changed: {name_str} {record_type} ({before_values} -> {after_values})") else: # Record unchanged - verbose_actions.append({ - 'record': record_key, - 'action': 'Skipped', - 'before': current['values'], - 'after': desired['values'] - }) + if self.module._verbosity >= 2: + self.module.log(f"[{self.zone_name_str}] Skipped: {name_str} {record_type} (unchanged)") # Find deletes (records in current but not in desired, unless ignored) for key, current in current_records.items(): @@ -690,21 +671,15 @@ class DNSZoneManager: # Not in desired state - delete it name_str = current['name'].to_text() record_type = current['type'] - record_key = f"{name_str} {record_type}" changes['deletes'].append({ 'name': current['name'], 'type': current['type'], 'values': current['values'] }) - verbose_actions.append({ - 'record': record_key, - 'action': 'Removed', - 'before': current['values'], - 'after': set() - }) + if self.module._verbosity >= 1: + self.module.log(f"[{self.zone_name_str}] Removed: {name_str} {record_type}") - changes['verbose_actions'] = verbose_actions return changes def _validate_cname_conflicts(self, desired_records): @@ -840,9 +815,6 @@ class DNSZoneManager: if total_changes == 0: result['changed'] = False - if self.module._verbosity >= 1: - # Include verbose output even if no changes - result['changes']['verbose'] = changes.get('verbose_actions', []) return result result['changed'] = True @@ -850,10 +822,6 @@ class DNSZoneManager: result['changes']['deletes'] = len(changes['deletes']) result['changes']['updates'] = len(changes['updates']) - # Add verbose output if verbosity enabled - if self.module._verbosity >= 1: - result['changes']['verbose'] = changes.get('verbose_actions', []) - # Add diff output if enabled if self.module.diff: result['diff'] = self._format_diff(changes) @@ -877,19 +845,22 @@ class DNSZoneManager: diff_before = {} diff_after = {} - # Process all changes - for action_info in changes.get('verbose_actions', []): - record_key = action_info['record'] - action = action_info['action'] - - if action == 'Added': - diff_after[record_key] = list(action_info['after']) - elif action == 'Removed': - diff_before[record_key] = list(action_info['before']) - elif action == 'Changed': - diff_before[record_key] = list(action_info['before']) - diff_after[record_key] = list(action_info['after']) - # Skipped records are not included in diff + # Process adds + for record in changes['adds']: + record_key = f"{record['name'].to_text()} {record['type']}" + diff_after[record_key] = sorted(str(v) for v in record['values']) + + # Process deletes + for record in changes['deletes']: + record_key = f"{record['name'].to_text()} {record['type']}" + diff_before[record_key] = sorted(str(v) for v in record['values']) + + # Process updates + for record in changes['updates']: + record_key = f"{record['name'].to_text()} {record['type']}" + # For updates, we need to show before state from current_records + # Since we don't have it here, we'll just show after state + diff_after[record_key] = sorted(str(v) for v in record['values']) return { 'before': diff_before,