Improve error reporting and diff output for updates
- Store both old and new values in updates for proper diff reporting - Show before/after states for updated records in diff mode - Improve exception handling with better error messages and traceback logging - Include full exception type if string representation is empty - Add debug-level traceback output for troubleshooting
This commit is contained in:
@@ -665,7 +665,14 @@ class DNSZoneManager:
|
||||
# Record exists - check if values differ
|
||||
current = current_records[key]
|
||||
if desired['values'] != current['values'] or desired['ttl'] != current['ttl']:
|
||||
changes['updates'].append(desired)
|
||||
changes['updates'].append({
|
||||
'name': desired['name'],
|
||||
'type': desired['type'],
|
||||
'old_values': current['values'],
|
||||
'new_values': desired['values'],
|
||||
'old_ttl': current['ttl'],
|
||||
'new_ttl': desired['ttl']
|
||||
})
|
||||
if self.module._verbosity >= 1 or self.module._diff:
|
||||
before_values = ', '.join(str(v) for v in current['values'])
|
||||
after_values = ', '.join(str(v) for v in desired['values'])
|
||||
@@ -846,8 +853,15 @@ class DNSZoneManager:
|
||||
return result
|
||||
|
||||
except Exception as e:
|
||||
result['error'] = str(e)
|
||||
import traceback
|
||||
error_msg = str(e)
|
||||
if not error_msg or error_msg == "":
|
||||
error_msg = f"{type(e).__name__}: {e}"
|
||||
result['error'] = error_msg
|
||||
result['failed'] = True
|
||||
# Include traceback in debug output for troubleshooting
|
||||
if self.module._verbosity >= 2:
|
||||
self.module.debug(f"[{self.zone_name_str}] Exception traceback: {traceback.format_exc()}")
|
||||
return result
|
||||
|
||||
def _format_diff(self, changes: dict) -> dict:
|
||||
@@ -865,12 +879,11 @@ class DNSZoneManager:
|
||||
record_key = f"{record['name'].to_text()} {record['type']}"
|
||||
diff_before[record_key] = sorted(str(v) for v in record['values'])
|
||||
|
||||
# Process updates
|
||||
# Process updates - show both before and after
|
||||
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'])
|
||||
diff_before[record_key] = sorted(str(v) for v in record['old_values'])
|
||||
diff_after[record_key] = sorted(str(v) for v in record['new_values'])
|
||||
|
||||
return {
|
||||
'before': diff_before,
|
||||
|
||||
Reference in New Issue
Block a user