def pre_enable(self): # ensure a manager is set manager = mount_ctrl.get_manager() if manager is None: from stashutils import mount_manager # import here to prevent an error manager = mount_manager.MountManager() mount_ctrl.set_manager(manager)
def list_mounts(): """list all mounts""" manager = mount_ctrl.get_manager() if manager is None: manager = mount_manager.MountManager() mount_ctrl.set_manager(manager) mounts = manager.get_mounts() for p, fsi, readonly in mounts: print("{f} on {p}".format(f=fsi.repr(), p=p))
def unmount_fsi(self, path, force=False): """unmounts a fsi.""" path = os.path.abspath(path) if not path in self.path2fs: raise MountError("Nothing mounted there.") fsi, readonly = self.path2fs[path] if not force: try: fsi.close() except OperationFailure as e: raise MountError(e.message) del self.path2fs[path] # todo: close files def get_mounts(self): """ returns a list of (path, fsi, readonly) containing all currently mounted filesystems. """ ret = [] for p in self.path2fs: fs, readonly = self.path2fs[p] ret.append((p, fs, readonly)) return ret # install manager if get_manager() is None: set_manager(MountManager())
nargs="?", default=None, help="directory to remove mounted filesystem from", ) ns = parser.parse_args() if not (ns.directory or ("-a" in sys.argv) or ("--all" in sys.argv)): print(_stash.text_color("Error: no target directory specified!", "red")) sys.exit(1) manager = mount_ctrl.get_manager() if manager is None: manager = mount_manager.MountManager() mount_ctrl.set_manager(manager) if ns.all: to_unmount = [m[0] for m in manager.get_mounts()] else: to_unmount = [ns.directory] exitcode = 0 for path in to_unmount: if ns.v: print("Unmounting '{p}'...".format(p=path)) try: manager.unmount_fsi(path, force=ns.force) except mount_manager.MountError as e: exitcode = 1
"directory", action="store", nargs="?", default=None, help="directory to remove mounted filesystem from", ) ns = parser.parse_args() if not (ns.directory or ("-a" in sys.argv) or ("--all" in sys.argv)): print(_stash.text_color( "Error: no target directory specified!", "red" )) sys.exit(1) manager = mount_ctrl.get_manager() if manager is None: manager = mount_manager.MountManager() mount_ctrl.set_manager(manager) if ns.all: to_unmount = [m[0] for m in manager.get_mounts()] else: to_unmount = [ns.directory] exitcode = 0 for path in to_unmount: if ns.v: print("Unmounting '{p}'...".format(p=path)) try: manager.unmount_fsi(path, force=ns.force) except mount_manager.MountError as e: exitcode = 1
self.path2fs[path] = (fsi, readonly) def unmount_fsi(self, path, force=False): """unmounts a fsi.""" path = os.path.abspath(path) if not path in self.path2fs: raise MountError("Nothing mounted there.") fsi, readonly = self.path2fs[path] if not force: try: fsi.close() except OperationFailure as e: raise MountError(e.message) del self.path2fs[path] # todo: close files def get_mounts(self): """ returns a list of (path, fsi, readonly) containing all currently mounted filesystems. """ ret = [] for p in self.path2fs: fs, readonly = self.path2fs[p] ret.append((p,fs, readonly)) return ret # install manager if get_manager() is None: set_manager(MountManager())