public inbox for kdevops@lists.linux.dev
 help / color / mirror / Atom feed
From: Luis Chamberlain <mcgrof@kernel.org>
To: Chuck Lever <cel@kernel.org>, Daniel Gomez <da.gomez@kruces.com>,
	kdevops@lists.linux.dev
Cc: Luis Chamberlain <mcgrof@kernel.org>
Subject: [PATCH 0/5] rust + rcloud support
Date: Fri, 17 Oct 2025 19:32:12 -0700	[thread overview]
Message-ID: <20251018023218.2240269-1-mcgrof@kernel.org> (raw)

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


             reply	other threads:[~2025-10-18  2:32 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-10-18  2:32 Luis Chamberlain [this message]
2025-10-18  2:32 ` [PATCH 1/5] install-rust-deps: Add generic Rust toolchain role Luis Chamberlain
2025-10-18  2:32 ` [PATCH 2/5] CLAUDE.md: Add Rust code quality requirements Luis Chamberlain
2025-10-18  2:32 ` [PATCH 3/5] bootlinux: Integrate Rust toolchain dependencies Luis Chamberlain
2025-10-18  2:32 ` [PATCH 4/5] install-go-deps: Add generic Go toolchain role Luis Chamberlain
2025-10-18  2:32 ` [PATCH 5/5] rcloud: Add experimental private cloud infrastructure for bare metal Luis Chamberlain
2025-10-18 18:22 ` [PATCH 0/5] rust + rcloud support Chuck Lever
2025-10-21 16:58   ` Luis Chamberlain

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20251018023218.2240269-1-mcgrof@kernel.org \
    --to=mcgrof@kernel.org \
    --cc=cel@kernel.org \
    --cc=da.gomez@kruces.com \
    --cc=kdevops@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox