From d75de037dc935774718655055afbd80e2ba67b13 Mon Sep 17 00:00:00 2001 From: John McCall Date: Sun, 6 Oct 2024 13:58:40 -0400 Subject: [PATCH] fix: Include warnings for restore failures (#266) * Update restore.ps1 * Update restore.ps1 * Update main.yml * Update main.yml * chore: add release info * Update CHANGELOG.rst --- CHANGELOG.rst | 13 ++++++++++++ changelogs/changelog.yaml | 9 +++++++++ galaxy.yml | 2 +- plugins/modules/restore.ps1 | 9 +++++++-- .../targets/win_restore/tasks/main.yml | 20 +++++++++++++++++++ 5 files changed, 50 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 502fe9b8..09d59d36 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -4,6 +4,19 @@ lowlydba.sqlserver Release Notes .. contents:: Topics +v2.3.4 +====== + +Release Summary +--------------- + +Minor bugfix for failed database restores. + +Bugfixes +-------- + +- Include warning logs in failure output for the restore module to indicate root causes (https://github.com/lowlydba/lowlydba.sqlserver/pull/266). + v2.3.3 ====== diff --git a/changelogs/changelog.yaml b/changelogs/changelog.yaml index a8a45ded..160ab72c 100644 --- a/changelogs/changelog.yaml +++ b/changelogs/changelog.yaml @@ -505,3 +505,12 @@ releases: - 2-3-3-release-summary.yml - 245-ag_listener-ip_address-fix.yml release_date: '2024-06-06' + 2.3.4: + changes: + bugfixes: + - Include warning logs in failure output for the restore module to indicate + root causes (https://github.com/lowlydba/lowlydba.sqlserver/pull/266). + release_summary: Minor bugfix for failed database restores. + fragments: + - 266-restore-warnings.yaml + release_date: '2024-10-06' diff --git a/galaxy.yml b/galaxy.yml index dd7ab08d..a36d18d2 100644 --- a/galaxy.yml +++ b/galaxy.yml @@ -2,7 +2,7 @@ namespace: lowlydba name: sqlserver -version: 2.3.3 +version: 2.3.4 readme: README.md authors: - John McCall (github.com/lowlydba) diff --git a/plugins/modules/restore.ps1 b/plugins/modules/restore.ps1 index 57d352b5..359e1588 100644 --- a/plugins/modules/restore.ps1 +++ b/plugins/modules/restore.ps1 @@ -156,7 +156,7 @@ try { if ($null -ne $keepCDC) { $restoreSplat.Add("KeepCDC", $keepCDC) } - $output = Restore-DbaDatabase @restoreSplat + $output = Restore-DbaDatabase @restoreSplat -WarningVariable warnings if ($null -ne $output) { $resultData = ConvertTo-SerializableObject -InputObject $output @@ -166,5 +166,10 @@ try { $module.ExitJson() } catch { - $module.FailJson("Error restoring database: $($_.Exception.Message).", $_) + # Restore command hides relevant error info as warnings, so append warning logs to any failures + $warningMessage = "" + if ($warnings) { + $warningMessage = " Additional warnings: $warnings." + } + $module.FailJson("Error restoring database: $($_.Exception.Message).$warningMessage", $_) } diff --git a/tests/integration/targets/win_restore/tasks/main.yml b/tests/integration/targets/win_restore/tasks/main.yml index 59c80e62..af86b376 100644 --- a/tests/integration/targets/win_restore/tasks/main.yml +++ b/tests/integration/targets/win_restore/tasks/main.yml @@ -29,3 +29,23 @@ that: - result.data.SqlInstance != None - result.data.Database == restore_database + + - name: Test error when restoring to an existing database + lowlydba.sqlserver.restore: + sql_instance: "{{ sqlserver_instance }}" + sql_username: "{{ sqlserver_username }}" + sql_password: "{{ sqlserver_password }}" + database: "{{ restore_database }}" + path: "{{ backup_result.data.BackupPath }}" + replace_db_name_in_file: true + block_size: "16kb" + destination_file_suffix: "_new" + destination_file_prefix: "db_" + register: error_result + failed_when: error_result.failed + ignore_errors: true + - assert: + that: + - error_result.failed == true + - "'already exists' in error_result.msg" + - error_result.msg != None