]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
qa: fix nfs setup and teardown bug in qemu task 34072/head
authordehao shang <dehao.shang@intel.com>
Fri, 20 Mar 2020 13:41:19 +0000 (21:41 +0800)
committerdehao shang <dehao.shang@intel.com>
Tue, 31 Mar 2020 13:43:15 +0000 (21:43 +0800)
For example, when there are two RBD client in the same teuthology node,
no matter what the result of test case is, always lead to the below error :

"Error : test -f /home/ubuntu/cephtest/archive/qemu/client.1/success"

The main reason is that _setup_nfs_mount and _teardown_nfs_mount just
support single mount point.

Signed-off-by: Dehao Shang <dehao.shang@intel.com>
qa/tasks/qemu.py

index 2a0cb40fba0ae6fc03b03cd6bee233c0ce7a6ad7..35c665a84df7ce55aae1b45f9ec44847725b7869 100644 (file)
@@ -285,8 +285,10 @@ def _setup_nfs_mount(remote, client, service_name, mount_dir):
     export = "{dir} *(rw,no_root_squash,no_subtree_check,insecure)".format(
         dir=export_dir
     )
+    log.info("Deleting export from /etc/exports...")
     remote.run(args=[
-        'sudo', 'sed', '-i', '/^\/export\//d', "/etc/exports",
+        'sudo', 'sed', '-i', "\|{export_dir}|d".format(export_dir=export_dir),
+        '/etc/exports'
     ])
     remote.run(args=[
         'echo', export, run.Raw("|"),
@@ -319,13 +321,10 @@ def _teardown_nfs_mount(remote, client, service_name):
     remote.run(args=[
         'sudo', 'umount', export_dir
     ])
-    log.info("Deleting exported directory...")
-    remote.run(args=[
-        'sudo', 'rm', '-r', '/export'
-    ])
     log.info("Deleting export from /etc/exports...")
     remote.run(args=[
-        'sudo', 'sed', '-i', '$ d', '/etc/exports'
+        'sudo', 'sed', '-i', "\|{export_dir}|d".format(export_dir=export_dir),
+        '/etc/exports'
     ])
     log.info("Starting NFS...")
     if remote.os.package_type == "deb":
@@ -457,6 +456,12 @@ def run_qemu(ctx, config):
                         ),
                     ],
                 )
+        log.info("Deleting exported directory...")
+        for client in config.keys():
+            (remote,) = ctx.cluster.only(client).remotes.keys()
+            remote.run(args=[
+                'sudo', 'rm', '-r', '/export'
+            ])
 
 
 @contextlib.contextmanager