From 6394cdd41943e3cda6867ecc59ab835cb2151707 Mon Sep 17 00:00:00 2001 From: Alfredo Deza Date: Fri, 3 Nov 2017 14:34:06 -0400 Subject: [PATCH] ceph-volume util.system add a context manager for temporary mounting/unmounting Signed-off-by: Alfredo Deza --- src/ceph-volume/ceph_volume/util/system.py | 31 ++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/ceph-volume/ceph_volume/util/system.py b/src/ceph-volume/ceph_volume/util/system.py index f8213c6d15415..940b9dbdc5d37 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 -- 2.39.5