mfd-mount


Namemfd-mount JSON
Version 1.8.0 PyPI version JSON
download
home_pageNone
SummaryModule for handling mounting and unmounting fileshares on different operating systems
upload_time2025-07-10 14:34:37
maintainerNone
docs_urlNone
authorNone
requires_python<3.14,>=3.10
licenseNone
keywords
VCS
bugtrack_url
requirements mfd-typing
Travis-CI No Travis.
coveralls test coverage No coveralls.
            > [!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

```python
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:
```python
mount_nfs(self, *, mount_point: Union[Path, str],
                  share_path: Union[Path, str],
                  username: Optional[str],
                  password: Optional[str]
                  ) -> None:
```
Mount CIFS share:
```python
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:
```python
mount_tmpfs(self, *, mount_point: Union[Path, str],
                   share_path: Union[Path, str],
                   params: Optional[str]) -> None:
```
Mount HUGETLBFS share:
```python
mount_hugetlbfs(self, *, mount_point: Union[Path, str],
                   share_path: Union[Path, str],
                   params: Optional[str]) -> None:
```

Check if given mountpoint is mounted:
```python
is_mounted(self, mount_point: Union[Path, str]) -> bool:
```
Unmount share: 
```python
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](https://github.com/intel/mfd-mount/issues).

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "mfd-mount",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<3.14,>=3.10",
    "maintainer_email": null,
    "keywords": null,
    "author": null,
    "author_email": null,
    "download_url": null,
    "platform": null,
    "description": "> [!IMPORTANT]  \n> 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.\n\n# MFD Mount\nModule for handling mounting fileshares on OS\n\n## Usage\n\nYou can create mounter objects in two ways:\n1. use generic Mount class which will automatically detect OS type based on connected setup and instantiate proper subclass\n2. use specific subclass e.g. PosixMount if you know beforehand which OS runs on connected setup\n\n```python\nfrom mfd_connect import LocalConnection, RPyCConnection\nfrom mfd_mount import Mount, ESXiMount, PosixMount, WindowsMount, FreeBSDMount\n\nmounter_generic = Mount(connection=LocalConnection())  # will automatically instantiate proper subclass\n\nmounter_windows = WindowsMount(connection=LocalConnection())\nmounter_windows.mount_nfs(mount_point=\"Z:\", share_path=\"10.10.10.10:/shared\")\nmounter_windows.is_mounted(mount_point=\"Z:\")\n\nmounter_posix = PosixMount(connection=LocalConnection())\nmounter_posix.mount_nfs(mount_point=\"/mnt/shared\", share_path=\"10.10.10.10:/shared\")\nmounter_posix.mount_cifs(mount_point=\"/mnt/shared\", share_path=\"//10.10.10.10/shared\", username='user', password='pass')\nmounter_posix.mount_tmpfs(mount_point=\"/mnt/shared\", share_path=\"//10.10.10.10/shared\", params='-o param')\nmounter_posix.mount_hugetlbfs(mount_point=\"/mnt/shared\", share_path=\"//10.10.10.10/shared\", params='-o param')\nmounter_posix.is_mounted(mount_point=\"/mnt/shared\")\n# or\nwith mounter_posix.mount_nfs(mount_point=\"/mnt/shared\", share_path=\"10.10.10.10:/shared\"):\n    mounter_posix.is_mounted(mount_point=\"/mnt/shared\")  # will automatically unmount share afterwards\nwith mounter_posix.mount_cifs(mount_point=\"/mnt/shared\", share_path=\"//10.10.10.10/shared\", username='user', password='pass'):\n    mounter_posix.is_mounted(mount_point=\"/mnt/shared\")  # will automatically unmount share afterwards\nwith mounter_posix.mount_tmpfs(mount_point=\"/mnt/shared\", share_path=\"//10.10.10.10/shared\", params='-o param'):\n    mounter_posix.is_mounted(mount_point=\"/mnt/shared\")  # will automatically unmount share afterwards\nwith mounter_posix.mount_hugetlbfs(mount_point=\"/mnt/shared\", share_path=\"//10.10.10.10/shared\", params='-o param'):\n    mounter_posix.is_mounted(mount_point=\"/mnt/shared\")  # will automatically unmount share afterwards    \nmounter_esxi = ESXiMount(connection=LocalConnection())\nmounter_esxi.mount_nfs(mount_point=\"NFSVolume\", share_path=\"10.10.10.10:/shared\")\nmounter_esxi.is_mounted(mount_point=\"NFSVolume\")\nmounter_posix.umount(mount_point=\"/mnt/shared\")\nmounter_freebsd = FreeBSDMount(connection=RPyCConnection(ip='11.11.11.11', port=18813))\nmounter_freebsd.mount_cifs(mount_point=\"/mnt/shared\", share_path=\"10.10.10.10/shared\", username='user', password='pass')\n# or \nwith mounter_freebsd.mount_cifs(mount_point=\"/mnt/shared\", share_path=\"10.10.10.10/shared\", username='user', password='pass'):\n    mounter_freebsd.is_mounted(mount_point=\"/mnt/shared\")\n```\n## API documentation\nMount NFS share:\n```python\nmount_nfs(self, *, mount_point: Union[Path, str],\n                  share_path: Union[Path, str],\n                  username: Optional[str],\n                  password: Optional[str]\n                  ) -> None:\n```\nMount CIFS share:\n```python\nmount_cifs(self, *, mount_point: Union[Path, str],\n                   share_path: Union[Path, str],\n                   username: Optional[str],\n                   password: Optional[str]\n                   ) -> None:\n```\n* Currently only implemented in POSIX class.\nMount TMPFS share:\n```python\nmount_tmpfs(self, *, mount_point: Union[Path, str],\n                   share_path: Union[Path, str],\n                   params: Optional[str]) -> None:\n```\nMount HUGETLBFS share:\n```python\nmount_hugetlbfs(self, *, mount_point: Union[Path, str],\n                   share_path: Union[Path, str],\n                   params: Optional[str]) -> None:\n```\n\nCheck if given mountpoint is mounted:\n```python\nis_mounted(self, mount_point: Union[Path, str]) -> bool:\n```\nUnmount share: \n```python\numount(self, mount_point: Union[Path, str]) -> None:\n```\nRaises `UnmountException` on failure\n\n### ESXi with NFS\n`Username` and `password` are unused. \n`Mount_point` is name of new volume.\n`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`\n\n### SSHFS\n\nSSHFS is not built-in system tool. It requires previous installation.\n\nOn POSIX OS'es: `<package-manager> install sshfs`\n\n## OS supported:\n\n* WINDOWS\n* LINUX\n* FreeBSD\n* ESXi\n\n|      |  WINDOWS  |   LINUX   |  FreeBSD  |     ESXi      |\n|------|-----------|-----------| --------- | ------------- |\n| CIFS | Supported :white_check_mark: | Supported :white_check_mark: | Supported :white_check_mark: | Not Supported :red_circle: |\n| NFS  | Supported :white_check_mark: | Supported :white_check_mark: | Supported :white_check_mark: | Supported :white_check_mark: |\n| SSHFS| Not Supported :red_circle: | Supported :white_check_mark: | Not Supported :red_circle: | Not Supported :red_circle: |\n| TMPFS | Not Supported :red_circle: | Supported :white_check_mark: | Not Supported :red_circle: | Not Supported :red_circle: |\n| HUGELBFS | Not Supported :red_circle: | Supported :white_check_mark: | Not Supported :red_circle:| Not Supported :red_circle: |\n\n\n## Issue reporting\n\nIf you encounter any bugs or have suggestions for improvements, you're welcome to contribute directly or open an issue [here](https://github.com/intel/mfd-mount/issues).\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Module for handling mounting and unmounting fileshares on different operating systems",
    "version": "1.8.0",
    "project_urls": {
        "Changelog": "https://github.com/intel/mfd-mount/blob/main/CHANGELOG.md",
        "Homepage": "https://github.com/intel/mfd",
        "Issues": "https://github.com/intel/mfd-mount/issues",
        "Repository": "https://github.com/intel/mfd-mount"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "a5c926648e26250363eeaa37bee8d2fa8d22e5b82c8af9e47c05c98d6e054dbf",
                "md5": "472e5425fb820c56c616ad817edad59d",
                "sha256": "b6bad5764ad073583da8f610d7aa863aaff184190a0711c5726219df2a6547fd"
            },
            "downloads": -1,
            "filename": "mfd_mount-1.8.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "472e5425fb820c56c616ad817edad59d",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<3.14,>=3.10",
            "size": 11894,
            "upload_time": "2025-07-10T14:34:37",
            "upload_time_iso_8601": "2025-07-10T14:34:37.422491Z",
            "url": "https://files.pythonhosted.org/packages/a5/c9/26648e26250363eeaa37bee8d2fa8d22e5b82c8af9e47c05c98d6e054dbf/mfd_mount-1.8.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-10 14:34:37",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "intel",
    "github_project": "mfd-mount",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "mfd-typing",
            "specs": [
                [
                    ">=",
                    "1.23.0"
                ]
            ]
        }
    ],
    "lcname": "mfd-mount"
}
        
Elapsed time: 1.11894s