From: Alfredo Deza Date: Fri, 3 Nov 2017 18:34:06 +0000 (-0400) Subject: ceph-volume util.system add a context manager for temporary mounting/unmounting X-Git-Tag: v12.2.2~23^2~39 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=84d2a15ce9f1a045ed67f79fa7d1dc99dc1e4b8f;p=ceph.git ceph-volume util.system add a context manager for temporary mounting/unmounting Signed-off-by: Alfredo Deza (cherry picked from commit 6394cdd41943e3cda6867ecc59ab835cb2151707) --- diff --git a/src/ceph-volume/ceph_volume/util/system.py b/src/ceph-volume/ceph_volume/util/system.py index f8213c6d1541..940b9dbdc5d3 100644 --- a/src/ceph-volume/ceph_volume/util/system.py +++ b/src/ceph-volume/ceph_volume/util/system.py @@ -2,6 +2,7 @@ import errno import os import pwd import platform +import tempfile import uuid from ceph_volume import process from . import as_string @@ -68,6 +69,36 @@ def chown(path, recursive=True): os.chown(path, uid, gid) +class tmp_mount(object): + """ + Temporarily mount a device on a temporary directory, + and unmount it upon exit + """ + + def __init__(self, device): + self.device = device + self.path = None + + def __enter__(self): + self.path = tempfile.mkdtemp() + process.run([ + 'sudo', + 'mount', + '-v', + self.device, + self.path + ]) + return self.path + + def __exit__(self, exc_type, exc_val, exc_tb): + process.run([ + 'sudo', + 'umount', + '-v', + self.path + ]) + + def path_is_mounted(path, destination=None): """ Check if the given path is mounted