From 540a089995480bedf6428aa9fa5bebb73495ba72 Mon Sep 17 00:00:00 2001 From: Lucian Petrut Date: Wed, 21 Dec 2022 15:58:07 +0200 Subject: [PATCH] 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 --- qa/workunits/windows/test_rbd_wnbd.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/qa/workunits/windows/test_rbd_wnbd.py b/qa/workunits/windows/test_rbd_wnbd.py index 092a8ae1489..c926b9c7999 100644 --- a/qa/workunits/windows/test_rbd_wnbd.py +++ b/qa/workunits/windows/test_rbd_wnbd.py @@ -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) -- 2.47.3