From 79dfb17bc2295ce19846a72ee97b361e764d3e7c Mon Sep 17 00:00:00 2001 From: Melvin Hillsman Date: Thu, 28 May 2026 00:45:08 -0500 Subject: [PATCH] fix(run): propagate registry.Get error in service creation loop The service creation loop silently swallowed registry.Get errors with continue, masking configuration problems. Return a wrapped error consistent with the earlier workload-building loop. Resolves #101 Signed-off-by: Melvin Hillsman --- cmd/virtwork/main.go | 2 +- cmd/virtwork/main_test.go | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/cmd/virtwork/main.go b/cmd/virtwork/main.go index 3bdcb48..df3146b 100644 --- a/cmd/virtwork/main.go +++ b/cmd/virtwork/main.go @@ -446,7 +446,7 @@ func runE(cmd *cobra.Command, args []string) error { } w, err := registry.Get(name, wlCfg, registryOpts...) if err != nil { - continue + return fmt.Errorf("creating workload %q for service check: %w", name, err) } if w.RequiresService() { svc := w.ServiceSpec() diff --git a/cmd/virtwork/main_test.go b/cmd/virtwork/main_test.go index 6216e1f..dba2ccd 100644 --- a/cmd/virtwork/main_test.go +++ b/cmd/virtwork/main_test.go @@ -822,6 +822,25 @@ var _ = Describe("CLI end-to-end scenarios", func() { }) }) +var _ = Describe("Service creation loop error handling", func() { + It("should return error from registry for unknown workload", func() { + registry := workloads.DefaultRegistry() + cfg := config.WorkloadConfig{ + Enabled: config.BoolPtr(true), + VMCount: 1, + CPUCores: constants.DefaultCPUCores, + Memory: constants.DefaultMemory, + } + + _, err := registry.Get("nonexistent-workload", cfg, + workloads.WithNamespace(constants.DefaultNamespace), + workloads.WithSSHCredentials(constants.DefaultSSHUser, "", nil), + ) + Expect(err).To(HaveOccurred()) + Expect(err.Error()).To(ContainSubstring("nonexistent-workload")) + }) +}) + var _ = Describe("DataVolume namespacing for multi-VM deployments", func() { // nolint: dupl Context("when deploying multiple VMs of disk workload", func() {