Skip to content

Commit 709ec35

Browse files
authored
fix(vm): clarify missing default VirtualMachineClass error (#2534)
Signed-off-by: Valeriy Khorunzhin <valeriy.khorunzhin@flant.com>
1 parent af33d4f commit 709ec35

2 files changed

Lines changed: 4 additions & 5 deletions

File tree

images/virtualization-artifact/pkg/controller/vm/internal/defaulter/defaulters_suite_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ var _ = Describe("Set default class in virtualMachineClasName", func() {
9797
})
9898

9999
Context("creating VM with empty virtualMachineClassName", func() {
100-
It("should keep virtualMachineClassName empty if no default class", func() {
100+
It("should return a clear error if no default class", func() {
101101
// Initialize fake client with some classes.
102102
name := "single-custom-class"
103103
setup(
@@ -107,7 +107,7 @@ var _ = Describe("Set default class in virtualMachineClasName", func() {
107107

108108
vm := newVMWithEmptyClass("vm-with-empty-class")
109109
err := classDefaulter.Default(ctx, vm)
110-
Expect(err).Should(BeNil())
110+
Expect(err).Should(MatchError(ContainSubstring("spec.virtualMachineClassName is empty and no default VirtualMachineClass is configured")))
111111
Expect(vm.Spec.VirtualMachineClassName).Should(BeEmpty())
112112
})
113113

images/virtualization-artifact/pkg/controller/vm/internal/defaulter/virtual_machine_class_name.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222

2323
"sigs.k8s.io/controller-runtime/pkg/client"
2424

25+
"github.com/deckhouse/virtualization-controller/pkg/common/annotations"
2526
"github.com/deckhouse/virtualization-controller/pkg/controller/service"
2627
"github.com/deckhouse/virtualization/api/core/v1alpha2"
2728
)
@@ -56,10 +57,8 @@ func (v *VirtualMachineClassNameDefaulter) Default(ctx context.Context, vm *v1al
5657
return err
5758
}
5859

59-
// "No default class" is not a mutating error, validators will complain
60-
// about missing field during validation phase later.
6160
if defaultClass == nil {
62-
return nil
61+
return fmt.Errorf("spec.virtualMachineClassName is empty and no default VirtualMachineClass is configured; set spec.virtualMachineClassName explicitly or mark one VirtualMachineClass as default with the %q annotation set to %q", annotations.AnnVirtualMachineClassDefault, "true")
6362
}
6463

6564
vm.Spec.VirtualMachineClassName = defaultClass.GetName()

0 commit comments

Comments
 (0)