From de5d08a786a8202ff68034b13b4d8a44bb27af88 Mon Sep 17 00:00:00 2001 From: Scott Sinclair Date: Sat, 7 Jan 2017 18:21:57 +1100 Subject: [PATCH] a copy of the pull request from ansible/ansible-modules-extras#3515 by @twistyWater This fixes #19959 - exception throw when robocopy return_code is not 1 2 or 4. --- lib/ansible/modules/windows/win_robocopy.ps1 | 73 +++++++++++++------- 1 file changed, 47 insertions(+), 26 deletions(-) diff --git a/lib/ansible/modules/windows/win_robocopy.ps1 b/lib/ansible/modules/windows/win_robocopy.ps1 index 6b0e60bac17..ca393c7eba0 100644 --- a/lib/ansible/modules/windows/win_robocopy.ps1 +++ b/lib/ansible/modules/windows/win_robocopy.ps1 @@ -115,34 +115,55 @@ Set-Attr $result.win_robocopy "return_code" $rc Set-Attr $result.win_robocopy "output" $robocopy_output $cmd_msg = "Success" -If ($rc -eq 0) { - $cmd_msg = "No files copied." -} -ElseIf ($rc -eq 1) { - $cmd_msg = "Files copied successfully!" - $changed = $true -} -ElseIf ($rc -eq 2) { - $cmd_msg = "Extra files or directories were detected!" - $changed = $true -} -ElseIf ($rc -eq 4) { - $cmd_msg = "Some mismatched files or directories were detected!" - $changed = $true -} -ElseIf ($rc -eq 8) { - $error_msg = SearchForError $robocopy_output "Some files or directories could not be copied!" - Fail-Json $result $error_msg -} -ElseIf ($rc -eq 10) { - $error_msg = SearchForError $robocopy_output "Serious Error! No files were copied! Do you have permissions to access $src and $dest?" - Fail-Json $result $error_msg -} -ElseIf ($rc -eq 16) { - $error_msg = SearchForError $robocopy_output "Fatal Error!" - Fail-Json $result $error_msg +$changed = $false +switch ($rc) +{ + 0 { + $cmd_msg = "No files copied." + } + 1 { + $cmd_msg = "Files copied successfully!" + $changed = $true + } + 2 { + $cmd_msg = "Some Extra files or directories were detected. No files were copied." + $changed = $true + } + 3 { + $cmd_msg = "(2+1) Some files were copied. Additional files were present." + $changed = $true + } + 4 { + $cmd_msg = "Some mismatched files or directories were detected. Housekeeping might be required!" + $changed = $true + } + 5 { + $cmd_msg = "(4+1) Some files were copied. Some files were mismatched." + $changed = $true + } + 6 { + $cmd_msg = "(4+2) Additional files and mismatched files exist. No files were copied." + $changed = $true + } + 7 { + $cmd_msg = "(4+1+2) Files were copied, a file mismatch was present, and additional files were present." + $changed = $true + } + 8 { + $error_msg = SearchForError $robocopy_output "Some files or directories could not be copied!" + Fail-Json $result $error_msg + } + { @(9, 10, 11, 12, 13, 14, 15) -contains $_ } { + $error_msg = SearchForError $robocopy_output "Fatal error. Check log message!" + Fail-Json $result $error_msg + } + 16 { + $error_msg = SearchForError $robocopy_output "Serious Error! No files were copied! Do you have permissions to access $src and $dest?" + Fail-Json $result $error_msg + } } + Set-Attr $result.win_robocopy "msg" $cmd_msg Set-Attr $result.win_robocopy "changed" $changed