Skip to content

Commit

Permalink
Raise clear error message on invalid Windows minion WinRM creds.
Browse files Browse the repository at this point in the history
Signed-off-by: Nashwan Azhari <nazhari@cloudbasesolutions.com>
  • Loading branch information
aznashwan committed Mar 4, 2024
1 parent f32c251 commit 9a51bb4
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 2 deletions.
16 changes: 16 additions & 0 deletions coriolis/osmorphing/osmount/windows.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import uuid

from oslo_log import log as logging
from winrm import exceptions as winrm_exceptions

from coriolis import exception
from coriolis.osmorphing.osmount import base
Expand Down Expand Up @@ -36,7 +37,22 @@ def check_os(self):
"(get-ciminstance Win32_OperatingSystem).Caption")
LOG.debug("Windows version: %s", version_info)
return True
except winrm_exceptions.InvalidCredentialsError as ex:
raise exception.NotAuthorized(
message="The WinRM connection credentials are invalid. "
"If you are using a template with a default "
"pre-baked username/password, please ensure "
"that you have passed the credentials to the "
"destination Coriolis plugin you have selected,"
" either via the Target Environment parameters "
"set when creating the Migration/Replica, or "
"by setting it in the destination plugin's "
"dedicated section of the coriolis.conf "
"static configuration file.") from ex
except exception.CoriolisException:
LOG.debug(
"Failed Windows OSMount OS check: %s",
utils.get_exception_details())
pass

def _run_diskpart_script(self, script):
Expand Down
6 changes: 4 additions & 2 deletions coriolis/wsman.py
Original file line number Diff line number Diff line change
Expand Up @@ -100,8 +100,9 @@ def set_timeout(self, timeout):
def _exec_command(self, cmd, args=[], timeout=None):
timeout = int(timeout or self._conn_timeout)
self.set_timeout(timeout)
shell_id = self._protocol.open_shell(codepage=CODEPAGE_UTF8)
shell_id = None
try:
shell_id = self._protocol.open_shell(codepage=CODEPAGE_UTF8)
command_id = self._protocol.run_command(shell_id, cmd, args)
try:
(std_out,
Expand All @@ -116,7 +117,8 @@ def _exec_command(self, cmd, args=[], timeout=None):

return (std_out, std_err, exit_code)
finally:
self._protocol.close_shell(shell_id)
if shell_id:
self._protocol.close_shell(shell_id)

def exec_command(self, cmd, args=[], timeout=None):
LOG.debug("Executing WSMAN command: %s", str([cmd] + args))
Expand Down

0 comments on commit 9a51bb4

Please sign in to comment.