qa: fix test_rbd_wnbd.py, properly retrieving the drive letter

Instead of trying to use the first partiton which may be reserved
by Windows, we'll fetch the first non-empty drive letter from
the disk that we've just mounted.

While at it, we're ensuring that the drive letter is actually a
letter and not a null character, which the Powershell command
returns in case of empty drive letters.

Signed-off-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
This commit is contained in:
Lucian Petrut 2022-12-21 15:58:07 +02:00
parent 8b4db5d51c
commit 540a089995

View File

@ -360,11 +360,14 @@ class RbdImage(object):
# Retrieve the drive letter.
cmd = (
"powershell.exe", "-command",
f"(Get-Partition -DiskNumber {self.disk_number})[0].DriveLetter")
f"(Get-Partition -DiskNumber {self.disk_number}"
" | ? { $_.DriveLetter }).DriveLetter")
result = execute(*cmd)
# The PowerShell command will place a null character if no drive letter
# is available. For example, we can receive "\x00\r\n".
self.drive_letter = result.stdout.decode().strip()
if len(self.drive_letter) != 1:
if not self.drive_letter.isalpha() or len(self.drive_letter) != 1:
raise CephTestException(
"Invalid drive letter received: %s" % self.drive_letter)