Skip to main content

Module for handling mounting and unmounting fileshares on different operating systems

Project description

[!IMPORTANT]
This project is under development. All source code and features on the main branch are for the purpose of testing or evaluation and not production ready.

MFD Mount

Module for handling mounting fileshares on OS

Usage

You can create mounter objects in two ways:

  1. use generic Mount class which will automatically detect OS type based on connected setup and instantiate proper subclass
  2. use specific subclass e.g. PosixMount if you know beforehand which OS runs on connected setup
from mfd_connect import LocalConnection, RPyCConnection
from mfd_mount import Mount, ESXiMount, PosixMount, WindowsMount, FreeBSDMount

mounter_generic = Mount(connection=LocalConnection())  # will automatically instantiate proper subclass

mounter_windows = WindowsMount(connection=LocalConnection())
mounter_windows.mount_nfs(mount_point="Z:", share_path="10.10.10.10:/shared")
mounter_windows.is_mounted(mount_point="Z:")

mounter_posix = PosixMount(connection=LocalConnection())
mounter_posix.mount_nfs(mount_point="/mnt/shared", share_path="10.10.10.10:/shared")
mounter_posix.mount_cifs(mount_point="/mnt/shared", share_path="//10.10.10.10/shared", username='user', password='pass')
mounter_posix.mount_tmpfs(mount_point="/mnt/shared", share_path="//10.10.10.10/shared", params='-o param')
mounter_posix.mount_hugetlbfs(mount_point="/mnt/shared", share_path="//10.10.10.10/shared", params='-o param')
mounter_posix.is_mounted(mount_point="/mnt/shared")
# or
with mounter_posix.mount_nfs(mount_point="/mnt/shared", share_path="10.10.10.10:/shared"):
    mounter_posix.is_mounted(mount_point="/mnt/shared")  # will automatically unmount share afterwards
with mounter_posix.mount_cifs(mount_point="/mnt/shared", share_path="//10.10.10.10/shared", username='user', password='pass'):
    mounter_posix.is_mounted(mount_point="/mnt/shared")  # will automatically unmount share afterwards
with mounter_posix.mount_tmpfs(mount_point="/mnt/shared", share_path="//10.10.10.10/shared", params='-o param'):
    mounter_posix.is_mounted(mount_point="/mnt/shared")  # will automatically unmount share afterwards
with mounter_posix.mount_hugetlbfs(mount_point="/mnt/shared", share_path="//10.10.10.10/shared", params='-o param'):
    mounter_posix.is_mounted(mount_point="/mnt/shared")  # will automatically unmount share afterwards    
mounter_esxi = ESXiMount(connection=LocalConnection())
mounter_esxi.mount_nfs(mount_point="NFSVolume", share_path="10.10.10.10:/shared")
mounter_esxi.is_mounted(mount_point="NFSVolume")
mounter_posix.umount(mount_point="/mnt/shared")
mounter_freebsd = FreeBSDMount(connection=RPyCConnection(ip='11.11.11.11', port=18813))
mounter_freebsd.mount_cifs(mount_point="/mnt/shared", share_path="10.10.10.10/shared", username='user', password='pass')
# or 
with mounter_freebsd.mount_cifs(mount_point="/mnt/shared", share_path="10.10.10.10/shared", username='user', password='pass'):
    mounter_freebsd.is_mounted(mount_point="/mnt/shared")

API documentation

Mount NFS share:

mount_nfs(self, *, mount_point: Union[Path, str],
                  share_path: Union[Path, str],
                  username: Optional[str],
                  password: Optional[str]
                  ) -> None:

Mount CIFS share:

mount_cifs(self, *, mount_point: Union[Path, str],
                   share_path: Union[Path, str],
                   username: Optional[str],
                   password: Optional[str]
                   ) -> None:
  • Currently only implemented in POSIX class. Mount TMPFS share:
mount_tmpfs(self, *, mount_point: Union[Path, str],
                   share_path: Union[Path, str],
                   params: Optional[str]) -> None:

Mount HUGETLBFS share:

mount_hugetlbfs(self, *, mount_point: Union[Path, str],
                   share_path: Union[Path, str],
                   params: Optional[str]) -> None:

Check if given mountpoint is mounted:

is_mounted(self, mount_point: Union[Path, str]) -> bool:

Unmount share:

umount(self, mount_point: Union[Path, str]) -> None:

Raises UnmountException on failure

ESXi with NFS

Username and password are unused. Mount_point is name of new volume. share_path must be in correct format <host>/<share> or <host>:/<share> eg. 10.10.10.10:/to_share or 10.10.10.10/to_share

SSHFS

SSHFS is not built-in system tool. It requires previous installation.

On POSIX OS'es: <package-manager> install sshfs

OS supported:

  • WINDOWS
  • LINUX
  • FreeBSD
  • ESXi
WINDOWS LINUX FreeBSD ESXi
CIFS Supported :white_check_mark: Supported :white_check_mark: Supported :white_check_mark: Not Supported :red_circle:
NFS Supported :white_check_mark: Supported :white_check_mark: Supported :white_check_mark: Supported :white_check_mark:
SSHFS Not Supported :red_circle: Supported :white_check_mark: Not Supported :red_circle: Not Supported :red_circle:
TMPFS Not Supported :red_circle: Supported :white_check_mark: Not Supported :red_circle: Not Supported :red_circle:
HUGELBFS Not Supported :red_circle: Supported :white_check_mark: Not Supported :red_circle: Not Supported :red_circle:

Issue reporting

If you encounter any bugs or have suggestions for improvements, you're welcome to contribute directly or open an issue here.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mfd_mount-1.8.0-py3-none-any.whl (11.9 kB view details)

Uploaded Python 3

File details

Details for the file mfd_mount-1.8.0-py3-none-any.whl.

File metadata

  • Download URL: mfd_mount-1.8.0-py3-none-any.whl
  • Upload date:
  • Size: 11.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for mfd_mount-1.8.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b6bad5764ad073583da8f610d7aa863aaff184190a0711c5726219df2a6547fd
MD5 472e5425fb820c56c616ad817edad59d
BLAKE2b-256 a5c926648e26250363eeaa37bee8d2fa8d22e5b82c8af9e47c05c98d6e054dbf

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page