]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
qa/tasks/nvme_loop: loop until 'nvme list' shows new devs 43455/head
authorSage Weil <sage@newdream.net>
Fri, 8 Oct 2021 18:43:56 +0000 (13:43 -0500)
committerSage Weil <sage@newdream.net>
Fri, 8 Oct 2021 21:06:28 +0000 (16:06 -0500)
Sometimes this doesn't happen immediately.

Signed-off-by: Sage Weil <sage@newdream.net>
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',