[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