From: Lucian Petrut Date: Wed, 21 Dec 2022 13:58:07 +0000 (+0200) Subject: qa: fix test_rbd_wnbd.py, properly retrieving the drive letter X-Git-Tag: v18.1.0~587^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=540a089995480bedf6428aa9fa5bebb73495ba72;p=ceph.git 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 --- diff --git a/qa/workunits/windows/test_rbd_wnbd.py b/qa/workunits/windows/test_rbd_wnbd.py index 092a8ae14891..c926b9c79992 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)