Re: [PATCH 0/5] rust + rcloud support

Luis Chamberlain <[email protected]> Tue, 21 Oct 2025 09:58:19 -0700
Newsgroups dev.linux.lists.kdevops
Message-ID <[email protected]>
On Sat, Oct 18, 2025 at 02:22:15PM -0400, Chuck Lever wrote:
> On 10/17/25 10:32 PM, Luis Chamberlain wrote:
> > 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
> > 
> 
> For the bits under terraform/ ...
> 
> Acked-by: Chuck Lever <[email protected]>

Great, thanks, pushed.

 Luis