]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
qa/tasks/nvme_loop: loop until 'nvme list' shows new devs
authorSage Weil <sage@newdream.net>
Fri, 8 Oct 2021 18:43:56 +0000 (13:43 -0500)
committerGuillaume Abrioux <gabrioux@redhat.com>
Mon, 13 Dec 2021 08:51:51 +0000 (09:51 +0100)
Sometimes this doesn't happen immediately.

Signed-off-by: Sage Weil <sage@newdream.net>
(cherry picked from commit d4a1ec2d0611192f4016006afcf72d57a31a6a1e)

qa/tasks/nvme_loop.py

index 7cb483d1fcf857ad18ef67db6bcbecebb629078e..c4a027633343cbee68956902524ae87c768d6f52 100644 (file)
@@ -60,13 +60,20 @@ def task(ctx, config):
 
         # identify nvme_loops devices
         old_scratch_by_remote[remote] = remote.read_file('/scratch_devs')
-        p = remote.run(args=['sudo', 'nvme', 'list'], stdout=StringIO())
-        new_devs = []
-        for line in p.stdout.getvalue().splitlines():
-            dev, _, vendor = line.split()[0:3]
-            if dev.startswith('/dev/') and vendor == 'Linux':
-                new_devs.append(dev)
-        log.info(f'new_devs {new_devs}')
+
+        with contextutil.safe_while(sleep=1, tries=15) as proceed:
+            while proceed():
+                p = remote.run(args=['sudo', 'nvme', 'list'], stdout=StringIO())
+                new_devs = []
+                for line in p.stdout.getvalue().splitlines():
+                    dev, _, vendor = line.split()[0:3]
+                    if dev.startswith('/dev/') and vendor == 'Linux':
+                        new_devs.append(dev)
+                log.info(f'new_devs {new_devs}')
+                assert len(new_devs) <= len(devs)
+                if len(new_devs) == len(devs):
+                    break
+
         remote.write_file(
             path='/scratch_devs',
             data='\n'.join(new_devs) + '\n',