Skip to content

Commit 7371c0c

Browse files
authored
fix(vmop): fix the validation of VirtualDisk names during VirtualMachine cloning (#1496)
Fix the validation of VirtualDisk names during the cloning process of a VirtualMachine. Signed-off-by: Dmitry Lopatin <[email protected]>
1 parent 960534f commit 7371c0c

File tree

5 files changed

+22
-12
lines changed

5 files changed

+22
-12
lines changed

images/virtualization-artifact/pkg/controller/service/restorer/common/common.go

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,13 @@ import (
2020
"errors"
2121
"fmt"
2222

23+
"github.com/deckhouse/virtualization-controller/pkg/common/validate"
2324
virtv2 "github.com/deckhouse/virtualization/api/core/v1alpha2"
2425
)
2526

2627
const (
27-
// MaxKubernetesResourceNameLength defines the maximum allowed length for Kubernetes resource names
28-
// according to DNS label standard (RFC 1123) - 63 characters for labels
29-
MaxKubernetesResourceNameLength = 63
28+
// MaxKubernetesResourceNameLength specifies the maximum allowable length for Kubernetes resource names.
29+
MaxKubernetesResourceNameLength = 253
3030
)
3131

3232
var (
@@ -72,12 +72,22 @@ func OverrideName(kind, name string, rules []virtv2.NameReplacement) string {
7272
return name
7373
}
7474

75-
// ValidateResourceNameLength validates that the resource name does not exceed
76-
// the maximum allowed length for Kubernetes resources
77-
func ValidateResourceNameLength(resourceName string) error {
78-
if len(resourceName) > MaxKubernetesResourceNameLength {
75+
// ValidateResourceNameLength checks if the given resource name exceeds
76+
// the maximum allowed length for the specified Kubernetes resource kind.
77+
// By default, the maximum length is set to MaxKubernetesResourceNameLength,
78+
// but for VirtualMachine and VirtualDisk resources, it uses
79+
// MaxVirtualMachineNameLen and MaxDiskNameLen respectively.
80+
func ValidateResourceNameLength(resourceName, kind string) error {
81+
maxLength := MaxKubernetesResourceNameLength
82+
switch kind {
83+
case virtv2.VirtualMachineKind:
84+
maxLength = validate.MaxVirtualMachineNameLen
85+
case virtv2.VirtualDiskKind:
86+
maxLength = validate.MaxDiskNameLen
87+
}
88+
if len(resourceName) > maxLength {
7989
return fmt.Errorf("name %q too long (%d > %d): %w",
80-
resourceName, len(resourceName), MaxKubernetesResourceNameLength, ErrResourceNameTooLong)
90+
resourceName, len(resourceName), maxLength, ErrResourceNameTooLong)
8191
}
8292
return nil
8393
}

images/virtualization-artifact/pkg/controller/service/restorer/restorers/provisioner_restorer.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ func (v *ProvisionerHandler) ValidateRestore(ctx context.Context) error {
9797
}
9898

9999
func (v *ProvisionerHandler) ValidateClone(ctx context.Context) error {
100-
if err := common.ValidateResourceNameLength(v.secret.Name); err != nil {
100+
if err := common.ValidateResourceNameLength(v.secret.Name, v.secret.Kind); err != nil {
101101
return err
102102
}
103103

images/virtualization-artifact/pkg/controller/service/restorer/restorers/vd_restorer.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ func (v *VirtualDiskHandler) ValidateRestore(ctx context.Context) error {
9797
}
9898

9999
func (v *VirtualDiskHandler) ValidateClone(ctx context.Context) error {
100-
if err := common.ValidateResourceNameLength(v.vd.Name); err != nil {
100+
if err := common.ValidateResourceNameLength(v.vd.Name, v.vd.Kind); err != nil {
101101
return err
102102
}
103103

images/virtualization-artifact/pkg/controller/service/restorer/restorers/vm_restorer.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ func (v *VirtualMachineHandler) ValidateRestore(ctx context.Context) error {
138138
}
139139

140140
func (v *VirtualMachineHandler) ValidateClone(ctx context.Context) error {
141-
if err := common.ValidateResourceNameLength(v.vm.Name); err != nil {
141+
if err := common.ValidateResourceNameLength(v.vm.Name, v.vm.Kind); err != nil {
142142
return err
143143
}
144144

images/virtualization-artifact/pkg/controller/service/restorer/restorers/vmbda_restorer.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ func (v *VMBlockDeviceAttachmentHandler) ValidateRestore(ctx context.Context) er
112112
}
113113

114114
func (v *VMBlockDeviceAttachmentHandler) ValidateClone(ctx context.Context) error {
115-
if err := common.ValidateResourceNameLength(v.vmbda.Name); err != nil {
115+
if err := common.ValidateResourceNameLength(v.vmbda.Name, v.vmbda.Kind); err != nil {
116116
return err
117117
}
118118

0 commit comments

Comments
 (0)