Skip to content

Commit

Permalink
fix(vmip): changes to the resource name generation algorithm (#276)
Browse files Browse the repository at this point in the history
Signed-off-by: Dmitry Lopatin <dmitry.lopatin@flant.com>
LopatinDmitr authored Aug 13, 2024
1 parent 8e2ffe5 commit 54c8b49
Showing 2 changed files with 33 additions and 3 deletions.
32 changes: 31 additions & 1 deletion images/virtualization-artifact/pkg/controller/ipam/ipam.go
Original file line number Diff line number Diff line change
@@ -20,6 +20,7 @@ import (
"context"
"errors"
"fmt"
"strings"

metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"sigs.k8s.io/controller-runtime/pkg/client"
@@ -72,7 +73,7 @@ func (m IPAM) CreateIPAddress(ctx context.Context, vm *virtv2.VirtualMachine, cl
Labels: map[string]string{
common.LabelVirtualMachineName: vm.Name,
},
GenerateName: vm.Name + "-",
GenerateName: GenerateName(vm),
Namespace: vm.Namespace,
OwnerReferences: []metav1.OwnerReference{*ownerRef},
},
@@ -81,3 +82,32 @@ func (m IPAM) CreateIPAddress(ctx context.Context, vm *virtv2.VirtualMachine, cl
},
})
}

const generateNameSuffix = "-"

func GenerateName(vm *virtv2.VirtualMachine) string {
if vm == nil {
return ""
}
return vm.GetName() + generateNameSuffix
}

func GetVirtualMachineName(vmip *virtv2.VirtualMachineIPAddress) string {
if vmip == nil {
return ""
}
if gn := vmip.GenerateName; gn != "" {
return strings.TrimSuffix(vmip.GenerateName, generateNameSuffix)
}
if name := vmip.GetLabels()[common.LabelVirtualMachineName]; name != "" {
return name
}
name := vmip.GetName()
for _, ow := range vmip.GetOwnerReferences() {
if ow.Kind == virtv2.VirtualMachineKind {
name = ow.Name
break
}
}
return name
}
Original file line number Diff line number Diff line change
@@ -26,6 +26,7 @@ import (

"github.com/deckhouse/virtualization-controller/pkg/controller/common"
"github.com/deckhouse/virtualization-controller/pkg/controller/indexer"
"github.com/deckhouse/virtualization-controller/pkg/controller/ipam"
"github.com/deckhouse/virtualization-controller/pkg/controller/service"
"github.com/deckhouse/virtualization-controller/pkg/controller/vmip/internal/util"
"github.com/deckhouse/virtualization-controller/pkg/sdk/framework/helper"
@@ -125,10 +126,9 @@ func (s *state) VirtualMachine(ctx context.Context) (*virtv2.VirtualMachine, err
return nil, err
}

vmipNameWithoutHash := string([]rune(s.vmip.Name)[:len(s.vmip.Name)-6])
for i, vm := range vms.Items {
if vm.Spec.VirtualMachineIPAddress == s.vmip.Name ||
vm.Spec.VirtualMachineIPAddress == "" && vm.Name == vmipNameWithoutHash {
vm.Spec.VirtualMachineIPAddress == "" && vm.Name == ipam.GetVirtualMachineName(s.vmip) {
s.vm = &vms.Items[i]
break
}

0 comments on commit 54c8b49

Please sign in to comment.