{"id":40564621,"url":"https://github.com/vatesfr/xenorchestra-csi-driver","last_synced_at":"2026-01-21T01:07:02.150Z","repository":{"id":326063076,"uuid":"1090916920","full_name":"vatesfr/xenorchestra-csi-driver","owner":"vatesfr","description":null,"archived":false,"fork":false,"pushed_at":"2025-11-25T10:42:59.000Z","size":99,"stargazers_count":3,"open_issues_count":6,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-11-28T16:01:42.494Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vatesfr.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-06T10:06:52.000Z","updated_at":"2025-11-25T10:42:08.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/vatesfr/xenorchestra-csi-driver","commit_stats":null,"previous_names":["vatesfr/xenorchestra-csi-driver"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/vatesfr/xenorchestra-csi-driver","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vatesfr%2Fxenorchestra-csi-driver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vatesfr%2Fxenorchestra-csi-driver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vatesfr%2Fxenorchestra-csi-driver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vatesfr%2Fxenorchestra-csi-driver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vatesfr","download_url":"https://codeload.github.com/vatesfr/xenorchestra-csi-driver/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vatesfr%2Fxenorchestra-csi-driver/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28620574,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-20T23:49:58.628Z","status":"ssl_error","status_checked_at":"2026-01-20T23:47:29.996Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":[],"created_at":"2026-01-21T01:07:02.081Z","updated_at":"2026-01-21T01:07:02.139Z","avatar_url":"https://github.com/vatesfr.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# XenOrchestra CSI Driver for Kubernetes\n\nA Container Storage Interface (CSI) driver that provides persistent storage for Kubernetes workloads using XenServer/XCP-ng infrastructure through Xen Orchestra.\n\nThis repository hosts the CSI driver and all of its build and dependent configuration files to deploy the driver.\n\nIt is recommended to install the Xen Orchestra CCM in addition to the CSI driver.\n\n* csi plugin name: `csi.xenorchestra.vates.tech`\n* supported accessModes: `ReadWriteOnce`\n\n---\n\u003e **⚠️ WARNING**  \n\u003e This driver is currently under development. It contains unimplemented methods, shortcuts, and non-standard practices. **DO NOT use in production environments.**\n---\n\n## Features\n\n- Static volume provisioning (use an existing VDI by UUID).\n\n## Prerequisite\n\n* XenOrchestra version 5.110.1+\n* XCP-ng version 8.3+\n* Network connectivity between Kubernetes nodes and XO API\n\n## Documentation\n\nTODO. See below for a short one.\n\n## Install driver on a Kubernetes cluster\n\nAn example of an install with kubectl can be found in the './deploy' folder. You may need to adjust this file to fit your actual installation; see below for more information.\n\n### Prerequisites\n* The driver depends on the CCM credentials config secret ([See here](https://github.com/vatesfr/xenorchestra-cloud-controller-manager/blob/main/docs/install.md#deploy-ccm)).\n\n### Quick Start with the PoC\n\n```bash\n# Install the driver\n./deploy/install-driver.sh\n\n# Create a StorageClass\nkubectl apply -f csi-storageclass.yaml\n\n# Install the driver\n./deploy/uninstall-driver.sh\n```\n\n### MicroK8s\n\nUse `/var/snap/microk8s/common/var/lib/kubelet/`\n\n### Other Kubelet installation\n\nUse `/var/lib/kubelet/`\n\n\n## Driver parameters\n\n### Static provisioning\n\nManually attach a disk to the node VM. \n\u003e [Get an example](./examples/pv-volume.yaml)\n\n1. Create a VDI using the Xen Orchestra GUI, or any other tools such as CLI, API or Terraform.\n2. Create a persistent volume (PV) and enter the UUID of the VDI created in Step 1 into the 'volumeHandle' property.\n3. Use the PV with a PVC and then mount the volume inside your pod.\n\nName | Meaning | Example | Required | Default\n--- | --- | --- | --- | ---\n`volumeHandle` | Disk identifier, it must be the VDI UUID | `b05f63f2-692a-4833-9453-980a73f9f27f` | Yes | N/A\n`driver` | Driver to use for the PV | it must be `csi.xenorchestra.vates.tech` | Yes | N/A\n\n\n## 🚀 TODO / Roadmap\n\n### Core CSI Operations\n- [ ] Dynamic Volume Provisioning (Create / Delete VDIs)\n- [ ] Read only full-support\n- [ ] Volume Expansion\n- [ ] Volume Snapshots\n\n### Storage Management\n- [ ] Volume Listing\n- [ ] Storage Capacity\n- [ ] Volume Validation, Information, Modification\n- [ ] Access modes - Add ReadWriteMany and ReadOnlyMany support\n\n### Security \u0026 Configuration\n- [ ] Use with Xen Orchestra Cloud Controller Manager\n- [ ] Alternative for credential management (env variables?)\n- [ ] Check RBAC policies\n\n### Performance \u0026 Monitoring\n- [ ] Metrics endpoint\n- [ ] Switch completely to the Xen Orchestra REST API\n\n### Other\n- [ ] Complete the documentation (installation, configuration, examples...)\n- [ ] Provide improved deployment methods (using kubectl, Helm or other)\n- [ ] Test with other Kubernetes clusters (Talos, Rancher, etc.)\n\n### CI \u0026 Testing\n- [ ] Proper CI pipelines\n- [ ] Unit test and integration tests\n\n### XO related\n- [ ] Cluster Topology support\n- [ ] Multi-SR support (migration...)\n- [ ] Multi-pool support\n- [ ] XO CCM\n\n## Contributing\n\nContributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are **greatly appreciated**.\n\n## License\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n[http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvatesfr%2Fxenorchestra-csi-driver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvatesfr%2Fxenorchestra-csi-driver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvatesfr%2Fxenorchestra-csi-driver/lists"}