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>
# 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)