[PATCH 0/5] rust + rcloud support
Luis Chamberlain <[email protected]> Fri, 17 Oct 2025 19:32:12 -0700
| Newsgroups | dev.linux.lists.kdevops |
|---|---|
| Message-ID | <[email protected]> |
This adds first rust dependencies support as a simple common module, and then leverages it for both bootlinux (without actually building anything, just pulling in the deps), and then adds our first kdevops rust project: rcloud. The rcloud effort is our version of a cloud provider built for bare metal, to simplify bringups and enhance CI experience. There will always be a need for needing to do custom qemu stuff, we're hackers after all. But for many use cases, typically CI stuff, we want to leverage just basic guestfs images on default qemu guests with sensible defaults. Future rcloud support can grow to support a network of bare metal hosts in a datacenter, but its not clear if we really need that. Having to set up rcloud per a large server might suffice for most of our developer needs and to help enhance CI. The rcloud support strategy is an alternative to dealing with the complexities with each user on a large system having to set up a guestfs and a kdevops environemnt. Essentially with this one user just need to set up rcloud once. This work is experimental but passes basic bringup. It should be ready to mege unless a regression is found during CI testing. Would love architectural feedback. Is this a sensible alternative to the idea of having say rpm or debian packages for kdevops? Luis Chamberlain (5): install-rust-deps: Add generic Rust toolchain role CLAUDE.md: Add Rust code quality requirements bootlinux: Integrate Rust toolchain dependencies install-go-deps: Add generic Go toolchain role rcloud: Add experimental private cloud infrastructure for bare metal .rustfmt.toml | 12 + CLAUDE.md | 22 + Makefile | 5 + README.md | 1 + defconfigs/rcloud | 53 + defconfigs/rcloud-guest-test | 58 + kconfigs/workflows/Kconfig | 2 + playbooks/install-rcloud-deps.yml | 5 + playbooks/rcloud.yml | 107 + .../base_image/templates/virt-builder.j2 | 8 +- playbooks/roles/bootlinux/tasks/main.yml | 7 + .../templates/rcloud/terraform.tfvars.j2 | 16 + .../tasks/install-deps/debian/main.yml | 10 + .../tasks/install-deps/fedora/main.yml | 9 + .../tasks/install-deps/main.yml | 21 + .../tasks/install-deps/redhat/main.yml | 9 + .../tasks/install-deps/suse/main.yml | 9 + .../roles/install-go-deps/tasks/main.yml | 15 + .../tasks/install-deps/debian/main.yml | 10 + .../tasks/install-deps/fedora/main.yml | 9 + .../tasks/install-deps/main.yml | 21 + .../tasks/install-deps/redhat/main.yml | 9 + .../tasks/install-deps/suse/main.yml | 9 + .../roles/install-rcloud-deps/tasks/main.yml | 25 + playbooks/roles/install-rust-deps/README.md | 90 + .../tasks/install-deps/debian/main.yml | 12 + .../tasks/install-deps/fedora/main.yml | 11 + .../tasks/install-deps/main.yml | 21 + .../tasks/install-deps/redhat/main.yml | 11 + .../tasks/install-deps/suse/main.yml | 11 + .../roles/install-rust-deps/tasks/main.yml | 15 + scripts/generate_cloud_configs.py | 2 +- scripts/install-rcloud-deps.Makefile | 13 + scripts/terraform.Makefile | 8 + terraform-provider-rcloud/.gitignore | 20 + terraform-provider-rcloud/README.md | 101 + terraform-provider-rcloud/examples/main.tf | 28 + terraform-provider-rcloud/go.mod | 32 + terraform-provider-rcloud/go.sum | 75 + .../internal/provider/client.go | 207 + .../internal/provider/provider.go | 129 + .../internal/provider/resource_vm.go | 344 ++ terraform-provider-rcloud/main.go | 47 + terraform/Kconfig.providers | 12 + terraform/rcloud/Kconfig | 25 + terraform/rcloud/main.tf | 8 + terraform/rcloud/output.tf | 10 + terraform/rcloud/provider.tf | 14 + terraform/rcloud/shared.tf | 60 + terraform/rcloud/vars.tf | 9 + workflows/rcloud/.gitignore | 1 + workflows/rcloud/Cargo.lock | 3550 +++++++++++++++++ workflows/rcloud/Cargo.toml | 69 + workflows/rcloud/DESIGN.md | 444 +++ workflows/rcloud/Kconfig | 53 + workflows/rcloud/Makefile | 149 + workflows/rcloud/docs/AUTHENTICATION.md | 166 + workflows/rcloud/docs/TESTING.md | 429 ++ workflows/rcloud/scripts/check-health.py | 158 + workflows/rcloud/src/api/handlers/health.rs | 51 + workflows/rcloud/src/api/handlers/images.rs | 31 + workflows/rcloud/src/api/handlers/metrics.rs | 15 + workflows/rcloud/src/api/handlers/mod.rs | 4 + workflows/rcloud/src/api/handlers/vms.rs | 172 + workflows/rcloud/src/api/mod.rs | 3 + workflows/rcloud/src/api/models.rs | 55 + workflows/rcloud/src/api/routes.rs | 24 + workflows/rcloud/src/config/kdevops.rs | 121 + workflows/rcloud/src/config/mod.rs | 117 + workflows/rcloud/src/lib.rs | 4 + workflows/rcloud/src/main.rs | 64 + workflows/rcloud/src/metrics.rs | 100 + workflows/rcloud/src/vm/disk.rs | 66 + workflows/rcloud/src/vm/manager.rs | 520 +++ workflows/rcloud/src/vm/mod.rs | 5 + workflows/rcloud/src/vm/xml.rs | 169 + workflows/rcloud/tests/api_tests.rs | 18 + 77 files changed, 8322 insertions(+), 3 deletions(-) create mode 100644 .rustfmt.toml create mode 100644 defconfigs/rcloud create mode 100644 defconfigs/rcloud-guest-test create mode 100644 playbooks/install-rcloud-deps.yml create mode 100644 playbooks/rcloud.yml create mode 100644 playbooks/roles/gen_tfvars/templates/rcloud/terraform.tfvars.j2 create mode 100644 playbooks/roles/install-go-deps/tasks/install-deps/debian/main.yml create mode 100644 playbooks/roles/install-go-deps/tasks/install-deps/fedora/main.yml create mode 100644 playbooks/roles/install-go-deps/tasks/install-deps/main.yml create mode 100644 playbooks/roles/install-go-deps/tasks/install-deps/redhat/main.yml create mode 100644 playbooks/roles/install-go-deps/tasks/install-deps/suse/main.yml create mode 100644 playbooks/roles/install-go-deps/tasks/main.yml create mode 100644 playbooks/roles/install-rcloud-deps/tasks/install-deps/debian/main.yml create mode 100644 playbooks/roles/install-rcloud-deps/tasks/install-deps/fedora/main.yml create mode 100644 playbooks/roles/install-rcloud-deps/tasks/install-deps/main.yml create mode 100644 playbooks/roles/install-rcloud-deps/tasks/install-deps/redhat/main.yml create mode 100644 playbooks/roles/install-rcloud-deps/tasks/install-deps/suse/main.yml create mode 100644 playbooks/roles/install-rcloud-deps/tasks/main.yml create mode 100644 playbooks/roles/install-rust-deps/README.md create mode 100644 playbooks/roles/install-rust-deps/tasks/install-deps/debian/main.yml create mode 100644 playbooks/roles/install-rust-deps/tasks/install-deps/fedora/main.yml create mode 100644 playbooks/roles/install-rust-deps/tasks/install-deps/main.yml create mode 100644 playbooks/roles/install-rust-deps/tasks/install-deps/redhat/main.yml create mode 100644 playbooks/roles/install-rust-deps/tasks/install-deps/suse/main.yml create mode 100644 playbooks/roles/install-rust-deps/tasks/main.yml create mode 100644 scripts/install-rcloud-deps.Makefile create mode 100644 terraform-provider-rcloud/.gitignore create mode 100644 terraform-provider-rcloud/README.md create mode 100644 terraform-provider-rcloud/examples/main.tf create mode 100644 terraform-provider-rcloud/go.mod create mode 100644 terraform-provider-rcloud/go.sum create mode 100644 terraform-provider-rcloud/internal/provider/client.go create mode 100644 terraform-provider-rcloud/internal/provider/provider.go create mode 100644 terraform-provider-rcloud/internal/provider/resource_vm.go create mode 100644 terraform-provider-rcloud/main.go create mode 100644 terraform/rcloud/Kconfig create mode 100644 terraform/rcloud/main.tf create mode 100644 terraform/rcloud/output.tf create mode 100644 terraform/rcloud/provider.tf create mode 100644 terraform/rcloud/shared.tf create mode 100644 terraform/rcloud/vars.tf create mode 100644 workflows/rcloud/.gitignore create mode 100644 workflows/rcloud/Cargo.lock create mode 100644 workflows/rcloud/Cargo.toml create mode 100644 workflows/rcloud/DESIGN.md create mode 100644 workflows/rcloud/Kconfig create mode 100644 workflows/rcloud/Makefile create mode 100644 workflows/rcloud/docs/AUTHENTICATION.md create mode 100644 workflows/rcloud/docs/TESTING.md create mode 100644 workflows/rcloud/scripts/check-health.py create mode 100644 workflows/rcloud/src/api/handlers/health.rs create mode 100644 workflows/rcloud/src/api/handlers/images.rs create mode 100644 workflows/rcloud/src/api/handlers/metrics.rs create mode 100644 workflows/rcloud/src/api/handlers/mod.rs create mode 100644 workflows/rcloud/src/api/handlers/vms.rs create mode 100644 workflows/rcloud/src/api/mod.rs create mode 100644 workflows/rcloud/src/api/models.rs create mode 100644 workflows/rcloud/src/api/routes.rs create mode 100644 workflows/rcloud/src/config/kdevops.rs create mode 100644 workflows/rcloud/src/config/mod.rs create mode 100644 workflows/rcloud/src/lib.rs create mode 100644 workflows/rcloud/src/main.rs create mode 100644 workflows/rcloud/src/metrics.rs create mode 100644 workflows/rcloud/src/vm/disk.rs create mode 100644 workflows/rcloud/src/vm/manager.rs create mode 100644 workflows/rcloud/src/vm/mod.rs create mode 100644 workflows/rcloud/src/vm/xml.rs create mode 100644 workflows/rcloud/tests/api_tests.rs -- 2.51.0