From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CB7C4140E34 for ; Sat, 18 Oct 2025 02:32:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.137.202.133 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760754741; cv=none; b=OM5NY5mz1a8kzvFcxrj3ziTfIeriA+R2pE/g4G3GCfUtMMpv36/+53PW++KnaKprmEc5zEnlec6e1NBLH+saTpgAHqoDgAHd13/1a49x9dadNZafNEQ9HAB1AyeUSjhmFzpm6yxbdQJRvUtRjteZHJPKpW/V4aFmyNuLg/874UA= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760754741; c=relaxed/simple; bh=+V3N+koCrnS49hrxlbwLTuddxsBBPN92b4N9C2cB7z4=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=WYSbpUxRHg21u4XE4/w6bqZjCYNijiv7kJgUM480J/PW6FiDsl5XxBULYZicCFO8o3WN7afzNYU+3BlTKi2gRUADGIHcxnDnRraSZKxBnLO5t10qRKFR15ikKFQi3Q3hH1q4ndG+7FgUs8CuIDfH61eH1KCyewnXrFFokbaPOJQ= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=kernel.org; spf=none smtp.mailfrom=infradead.org; dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b=qnJa0Ej2; arc=none smtp.client-ip=198.137.202.133 Authentication-Results: smtp.subspace.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=kernel.org Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=infradead.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="qnJa0Ej2" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Sender:Content-Transfer-Encoding: MIME-Version:Message-ID:Date:Subject:Cc:To:From:Reply-To:Content-Type: Content-ID:Content-Description:In-Reply-To:References; bh=Yn4ilWXwdx/gPdOyszai+xosg9r6omFJCYfNN46tApE=; b=qnJa0Ej2YpMzlzCCkED5DiFwsc +brd3dPbnUYlXz2zr+BnA69zvzfPgS+EmzFyUUAoIEZ4AXcRa82ZxaD3MRM6L4JmGAhq576snRX8o XrJaBPNOa5BHrSJtJ49CXc3+DwkR6IacJ4b4OLvUFtLI1ByLRNutvuITl7Qy923k7GAw8ljiwGljC h1jCdufIH/7F3nwTA5X3qaS/RhgMtQ1d9dmHtXchIFex4B0eCUU+wTEvHMFrAfzNsIt+8cpvkN4sG 7rDwy/12OyxhaH0K9Hktusj9APu80X197imMPHIymOvmXeHDIT/uIIXj1B1ufGu5885KTZ+BaWZ3q h1nWZnCw==; Received: from mcgrof by bombadil.infradead.org with local (Exim 4.98.2 #2 (Red Hat Linux)) id 1v9wjz-00000009Onl-2NuK; Sat, 18 Oct 2025 02:32:19 +0000 From: Luis Chamberlain To: Chuck Lever , Daniel Gomez , kdevops@lists.linux.dev Cc: Luis Chamberlain Subject: [PATCH 0/5] rust + rcloud support Date: Fri, 17 Oct 2025 19:32:12 -0700 Message-ID: <20251018023218.2240269-1-mcgrof@kernel.org> X-Mailer: git-send-email 2.51.0 Precedence: bulk X-Mailing-List: kdevops@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: Luis Chamberlain 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