From 3f0284f272231c3b62b0f3f201cbaaecfa405bcd Mon Sep 17 00:00:00 2001 From: Rishabh Dave Date: Wed, 1 Apr 2020 16:51:06 +0530 Subject: [PATCH] qa/cephfs: add methods to read/write on CephFS mounts Signed-off-by: Rishabh Dave --- qa/tasks/cephfs/mount.py | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/qa/tasks/cephfs/mount.py b/qa/tasks/cephfs/mount.py index 13dd1412241e6..fc70edd77fb87 100644 --- a/qa/tasks/cephfs/mount.py +++ b/qa/tasks/cephfs/mount.py @@ -10,7 +10,7 @@ from contextlib import contextmanager from textwrap import dedent from IPy import IP -from teuthology.misc import get_file +from teuthology.misc import get_file, sudo_write_file from teuthology.orchestra import run from teuthology.orchestra.run import CommandFailedError, ConnectionLostError, Raw @@ -614,6 +614,29 @@ class CephFSMount(object): if r.exitstatus != 0: raise RuntimeError("Expected file {0} not found".format(suffix)) + def write_file(self, path, data, perms=None): + """ + Write the given data at the given path and set the given perms to the + file on the path. + """ + if path.find(self.hostfs_mntpt) == -1: + path = os.path.join(self.hostfs_mntpt, path) + + sudo_write_file(self.client_remote, path, data) + + if perms: + self.run_shell(args=f'chmod {perms} {path}') + + def read_file(self, path): + """ + Return the data from the file on given path. + """ + if path.find(self.hostfs_mntpt) == -1: + path = os.path.join(self.hostfs_mntpt, path) + + return self.run_shell(args=['sudo', 'cat', path], omit_sudo=False).\ + stdout.getvalue().strip() + def create_destroy(self): assert(self.is_mounted()) -- 2.39.5