{"id":13689087,"url":"https://github.com/chong601/pyzfs-rest-api","last_synced_at":"2025-05-01T23:32:07.517Z","repository":{"id":92058449,"uuid":"398259708","full_name":"chong601/pyzfs-rest-api","owner":"chong601","description":"REST API for ZFS zpool and zfs command line tool","archived":false,"fork":false,"pushed_at":"2021-08-29T14:25:51.000Z","size":85,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-08-03T15:15:18.880Z","etag":null,"topics":["flask","python3","torture","zfs"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chong601.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2021-08-20T11:52:44.000Z","updated_at":"2023-10-03T00:09:54.000Z","dependencies_parsed_at":"2024-01-14T16:11:42.370Z","dependency_job_id":"d12bbd91-bd62-4bc7-becd-524e3ec3b274","html_url":"https://github.com/chong601/pyzfs-rest-api","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chong601%2Fpyzfs-rest-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chong601%2Fpyzfs-rest-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chong601%2Fpyzfs-rest-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chong601%2Fpyzfs-rest-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chong601","download_url":"https://codeload.github.com/chong601/pyzfs-rest-api/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224282114,"owners_count":17285772,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["flask","python3","torture","zfs"],"created_at":"2024-08-02T15:01:33.388Z","updated_at":"2024-11-12T13:30:44.878Z","avatar_url":"https://github.com/chong601.png","language":"Python","funding_links":[],"categories":["flask"],"sub_categories":[],"readme":"# pyzfs-rest-api\nREST API for ZFS zpool and ZFS, because ZFS is *awesome*. It just needs more pizzaz and automation love.\n\npyzfs-rest-api is based on [OpenZFS `libzfs_core`](https://github.com/openzfs/zfs/tree/master/contrib/pyzfs) implementation with custom implementation for unimplemented calls.\n\n# Goals\npyzfs-rest-api is intended to be (almost) feature-parity with upstream OpenZFS, as long the implementation is clear enough.\n\nAPI implementation will be considered stable if the interface is at least compatible with all currently supported versions of ZFS (subject to change)\n\nABI support between pyzfs-rest-api and libzfs_core will depend on how complicated pyzfs is (might need to learn cffi *shudders*)\n\n# `libzfs_core` status (through `pylibzfs_core`)\n| Function name | Status | Notes |\n| - | - | - |\nlzc_create | Works | Requires root |\nlzc_clone | Works | Requires root |\nlzc_promote | Works | May work without root |\nlzc_rename | Works | Requires root |\nlzc_destroy | Works | Requires root |\nlzc_snapshot | Works | Requires root |\nlzc_destroy_snap | Unknown | |\nlzc_snaprange_space | Unknown | |\nlzc_exists | Works | Not exposed on zpool/zfs |\nlzc_sync | Works | Can be executed by non-root users |\nlzc_hold | Done | Code exists, not tested |\nlzc_release | Done | Code exists, not tested |\nlzc_get_holds | Done | Code exists, not tested |\nlzc_send | Unknown | |\nlzc_send_redacted | Unknown | |\nlzc_send_resume | Unknown | |\nlzc_send_resume_redacted | Unknown | |\nlzc_send_space_resume_redacted | Unknown | |\nlzc_send_space | Unknown | |\nlzc_receive | Unknown | |\nlzc_receive_resumable | Unknown | |\nlzc_receive_with_header | Unknown | |\nlzc_receive_one | Unknown | |\nlzc_receive_with_cmdprops | Unknown | |\nlzc_rollback | Works | Requires root |\nlzc_rollback_to | Works | Requires root |\nlzc_bookmark | Unknown | |\nlzc_get_bookmarks | Unknown | |\nlzc_get_bookmark_props | Unknown | |\nlzc_destroy_bookmarks | Unknown | |\nlzc_channel_program_impl | Unknown | |\nlzc_channel_program | Unknown | |\nlzc_pool_checkpoint | Unknown | |\nlzc_pool_checkpoint_discard | Unknown | |\nlzc_channel_program_nosync | Unknown | |\nlzc_load_key | Unknown | |\nlzc_unload_key | Unknown | |\nlzc_change_key | Unknown | |\nlzc_reopen | Unknown | |\nlzc_initialize | Unknown | |\nlzc_trim | NOT AVAILABLE | Missing from libzfs_core. Requires port-in to libzfs_core |\nlzc_redact | Unknown | |\nlzc_wait | Unknown | |\nlzc_wait_tag | Unknown | |\nlzc_wait_fs | Unknown | |\nlzc_set_bootenv | Unknown | |\nlzc_get_bootenv | Unknown | |\n\n# `pyzfs` implementation\n| Function name | Status | Notes |\n| - | - | - |\n| zfs_list | Pending | Lack of sleep sucks |\n| zpool_list | Partially done | Needs more testing on properties |\n| zfs_trim | Done | Alternative implementation to lzc_trim which is missing in `libzfs_core` |\n\n# Why the split between libzfs_core and pyzfs?\nSimple.\n\nlibzfs_core only implements subset of ZFS functions that is offered by ZFS (for now).\nThe idea of libzfs_core is to provide a stable API for any applications that want to interact with\ncore ZFS features.\n\nSadly the libzfs_core development is slow, which makes extending ZFS much more difficult.\n\nAnything that `libzfs_core` does not cover will be implemented on `pyzfs` until C function replacements is available.\n# Plans\nTBD.\n\n# License\nI'm currently undecided on how to license this code. Do provide a recommended license if you're expert in this field!\npyzfs is ©️ ClusterHQ 2015 and ©️ OpenZFS 2018-current and is licensed under Apache License 2.0\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchong601%2Fpyzfs-rest-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchong601%2Fpyzfs-rest-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchong601%2Fpyzfs-rest-api/lists"}