From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 B565C1096F for ; Sat, 18 Oct 2025 18:22:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760811738; cv=none; b=gVgV3QKVfrXpH90BrSMANatLLwXyKL/bK4WmQcmHVUYQRf4hvngRiZ8DFyEDE6hd3ppDjVZHSHA+OROt34PMcV3vDg4u5ptB0HtlWhshUmNiwm0tMo5OtU2dQ2FSUM448g25swN1iD8THL0P6wQOUZoBNgAmUUOiL4GCK6TG7C8= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760811738; c=relaxed/simple; bh=J3gzltOS1M+TzYEF048+K06DnVmNouXakysDfF9k7lI=; h=Message-ID:Date:MIME-Version:Subject:To:References:Cc:From: In-Reply-To:Content-Type; b=hq9NXjl24+us+pfaZ2ZkCmuaP+awnljFL4VV9Tuk2Ol+lhqBAnZuL+JW/k6LHwrtiZiaLBnKUTFxKe3f+kG4bEP18R5FquI9K/RBoKmnV0R+bVv5U/9j4wHQqrec1fdU9YzeYwjIhbLFv6p/XExRkYZlhtcExBNAXYbTGAWs37o= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Ci5nfXKo; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Ci5nfXKo" Received: by smtp.kernel.org (Postfix) with ESMTPSA id E7898C4CEF8; Sat, 18 Oct 2025 18:22:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1760811737; bh=J3gzltOS1M+TzYEF048+K06DnVmNouXakysDfF9k7lI=; h=Date:Subject:To:References:Cc:From:In-Reply-To:From; b=Ci5nfXKoXyyH4whaBZWnVNBVDCnPO9odn9ROo1YYJw74nsnD775Vv7MchRsUF22sZ /Tp/4fg47Q9uZogPwIWXJdoH6wVhWhTjY/GeYu38jUG5LiaEAvRKXuEp0q/FRp8FPC O6J3F2aG4lJdjWuP/DiL5XGQU17EzXY051z7nUUZN7W1pQRfzoAASPxmYxBl/L+fjM RcMGK0l1o9EEjYqGeRccyduwm4/Kf4L6VC28VpLoyUZrLT5PjP45t/BZxK33MgP6mR tfFphr3kE6LDeWnzEkHGuRUhLNE1HkIEteaPDSGkOgyZsSUbxf5I7NPbO/68H1u4VH gX6Vbw3oYLkYA== Message-ID: <3d41444b-5db0-4b76-95cd-1466ea4237f2@kernel.org> Date: Sat, 18 Oct 2025 14:22:15 -0400 Precedence: bulk X-Mailing-List: kdevops@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 0/5] rust + rcloud support To: Luis Chamberlain References: <20251018023218.2240269-1-mcgrof@kernel.org> Content-Language: en-US Cc: Daniel Gomez , kdevops@lists.linux.dev From: Chuck Lever Organization: kernel.org In-Reply-To: <20251018023218.2240269-1-mcgrof@kernel.org> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit 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 -- Chuck Lever