diff --git a/images/virtualization-artifact/pkg/controller/service/restorer/secret_restorer.go b/images/virtualization-artifact/pkg/controller/service/restorer/secret_restorer.go index 98f0c3944f..889b9e091e 100644 --- a/images/virtualization-artifact/pkg/controller/service/restorer/secret_restorer.go +++ b/images/virtualization-artifact/pkg/controller/service/restorer/secret_restorer.go @@ -121,10 +121,12 @@ func (r SecretRestorer) RestoreMACAddressOrder(_ context.Context, secret *corev1 var macAddressOrder []string for _, ns := range vm.Status.Networks { - if ns.Type == v1alpha2.NetworksTypeMain { - continue + switch ns.Type { + case v1alpha2.NetworksTypeMain: + macAddressOrder = append(macAddressOrder, "") + default: + macAddressOrder = append(macAddressOrder, ns.MAC) } - macAddressOrder = append(macAddressOrder, ns.MAC) } return macAddressOrder, nil } @@ -180,6 +182,10 @@ func (r SecretRestorer) setVirtualMachineBlockDeviceAttachments(ctx context.Cont } func (r SecretRestorer) setVirtualMachineIPAddress(ctx context.Context, secret *corev1.Secret, vm *v1alpha2.VirtualMachine, keepIPAddress v1alpha2.KeepIPAddress) error { + if vm.Status.VirtualMachineIPAddress == "" { + return nil + } + vmip, err := object.FetchObject(ctx, types.NamespacedName{ Namespace: vm.Namespace, Name: vm.Status.VirtualMachineIPAddress, diff --git a/images/virtualization-artifact/pkg/controller/service/restorer/snapshot_resources.go b/images/virtualization-artifact/pkg/controller/service/restorer/snapshot_resources.go index 178da7f102..42f00b2789 100644 --- a/images/virtualization-artifact/pkg/controller/service/restorer/snapshot_resources.go +++ b/images/virtualization-artifact/pkg/controller/service/restorer/snapshot_resources.go @@ -135,7 +135,7 @@ func (r *SnapshotResources) Prepare(ctx context.Context) error { continue } - ns.VirtualMachineMACAddressName = macAddressNamesByAddress[macAddressOrder[i-1]] + ns.VirtualMachineMACAddressName = macAddressNamesByAddress[macAddressOrder[i]] } } else { for i := range vm.Spec.Networks { diff --git a/images/virtualization-artifact/pkg/controller/vmrestore/internal/life_cycle.go b/images/virtualization-artifact/pkg/controller/vmrestore/internal/life_cycle.go index dec2a44155..75aa9e77ae 100644 --- a/images/virtualization-artifact/pkg/controller/vmrestore/internal/life_cycle.go +++ b/images/virtualization-artifact/pkg/controller/vmrestore/internal/life_cycle.go @@ -186,7 +186,7 @@ func (h LifeCycleHandler) Handle(ctx context.Context, vmRestore *v1alpha2.Virtua continue } - ns.VirtualMachineMACAddressName = macAddressNamesByAddress[macAddressOrder[i-1]] + ns.VirtualMachineMACAddressName = macAddressNamesByAddress[macAddressOrder[i]] } } diff --git a/images/virtualization-artifact/pkg/controller/vmsnapshot/internal/life_cycle.go b/images/virtualization-artifact/pkg/controller/vmsnapshot/internal/life_cycle.go index 87d7dfe763..78f1ec1e06 100644 --- a/images/virtualization-artifact/pkg/controller/vmsnapshot/internal/life_cycle.go +++ b/images/virtualization-artifact/pkg/controller/vmsnapshot/internal/life_cycle.go @@ -767,7 +767,7 @@ func (h LifeCycleHandler) fillStatusResources(ctx context.Context, vmSnapshot *v Name: vm.Name, }) - if vmSnapshot.Spec.KeepIPAddress == v1alpha2.KeepIPAddressAlways { + if vmSnapshot.Spec.KeepIPAddress == v1alpha2.KeepIPAddressAlways && vm.Status.VirtualMachineIPAddress != "" { vmip, err := object.FetchObject(ctx, types.NamespacedName{ Namespace: vm.Namespace, Name: vm.Status.VirtualMachineIPAddress, @@ -787,7 +787,7 @@ func (h LifeCycleHandler) fillStatusResources(ctx context.Context, vmSnapshot *v }) } - if len(vm.Spec.Networks) > 1 { + if len(vm.Spec.Networks) > 0 { for _, ns := range vm.Status.Networks { if ns.Type == v1alpha2.NetworksTypeMain { continue