From d4a1ec2d0611192f4016006afcf72d57a31a6a1e Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Fri, 8 Oct 2021 13:43:56 -0500 Subject: [PATCH] qa/tasks/nvme_loop: loop until 'nvme list' shows new devs Sometimes this doesn't happen immediately. Signed-off-by: Sage Weil --- qa/tasks/nvme_loop.py | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/qa/tasks/nvme_loop.py b/qa/tasks/nvme_loop.py index 7cb483d1fcf85..c4a027633343c 100644 --- a/qa/tasks/nvme_loop.py +++ b/qa/tasks/nvme_loop.py @@ -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', -- 2.39.5