Skip to content

Commit fc61ff0

Browse files
author
Valeriy Khorunzhin
committed
add secret and vmip
Signed-off-by: Valeriy Khorunzhin <valeriy.khorunzhin@flant.com>
1 parent 2cdcab6 commit fc61ff0

1 file changed

Lines changed: 61 additions & 1 deletion

File tree

  • images/virtualization-artifact/pkg/controller/vmsnapshot/internal

images/virtualization-artifact/pkg/controller/vmsnapshot/internal/life_cycle.go

Lines changed: 61 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -666,11 +666,71 @@ func (h LifeCycleHandler) fillStatusResources(ctx context.Context, vmSnapshot *v
666666
vmSnapshot.Status.Resources = []virtv2.ResourceRef{}
667667

668668
vmSnapshot.Status.Resources = append(vmSnapshot.Status.Resources, virtv2.ResourceRef{
669-
Kind: virtv2.VirtualMachineKind,
669+
Kind: vm.Kind,
670670
ApiVersion: vm.APIVersion,
671671
Name: vm.Name,
672672
})
673673

674+
if vmSnapshot.Spec.KeepIPAddress == virtv2.KeepIPAddressAlways {
675+
vmip, err := object.FetchObject(ctx, types.NamespacedName{
676+
Namespace: vm.Namespace,
677+
Name: vm.Status.VirtualMachineIPAddress,
678+
}, h.client, &virtv2.VirtualMachineIPAddress{})
679+
if err != nil {
680+
return err
681+
}
682+
683+
if vmip == nil {
684+
return fmt.Errorf("the virtual machine ip address %q not found", vm.Status.VirtualMachineIPAddress)
685+
}
686+
687+
vmSnapshot.Status.Resources = append(vmSnapshot.Status.Resources, virtv2.ResourceRef{
688+
Kind: vmip.Kind,
689+
ApiVersion: vmip.APIVersion,
690+
Name: vmip.APIVersion,
691+
})
692+
}
693+
694+
if vm.Spec.Provisioning != nil {
695+
var provisioningSecretName string
696+
697+
switch vm.Spec.Provisioning.Type {
698+
case virtv2.ProvisioningTypeSysprepRef:
699+
if vm.Spec.Provisioning.SysprepRef == nil {
700+
return errors.New("the virtual machine sysprep ref provisioning is nil")
701+
}
702+
703+
if vm.Spec.Provisioning.SysprepRef.Kind == virtv2.SysprepRefKindSecret {
704+
provisioningSecretName = vm.Spec.Provisioning.SysprepRef.Name
705+
}
706+
707+
case virtv2.ProvisioningTypeUserDataRef:
708+
if vm.Spec.Provisioning.UserDataRef == nil {
709+
return errors.New("the virtual machine user data ref provisioning is nil")
710+
}
711+
712+
if vm.Spec.Provisioning.UserDataRef.Kind == virtv2.UserDataRefKindSecret {
713+
provisioningSecretName = vm.Spec.Provisioning.UserDataRef.Name
714+
}
715+
}
716+
717+
if provisioningSecretName != "" {
718+
secretKey := types.NamespacedName{Name: provisioningSecretName, Namespace: vm.Namespace}
719+
provisioner, err := object.FetchObject(ctx, secretKey, h.client, &corev1.Secret{})
720+
if err != nil {
721+
return err
722+
}
723+
724+
if provisioner != nil {
725+
vmSnapshot.Status.Resources = append(vmSnapshot.Status.Resources, virtv2.ResourceRef{
726+
Kind: provisioner.Kind,
727+
ApiVersion: provisioner.APIVersion,
728+
Name: provisioner.Name,
729+
})
730+
}
731+
}
732+
}
733+
674734
for _, bdr := range vm.Status.BlockDeviceRefs {
675735
if bdr.Kind != virtv2.DiskDevice {
676736
continue

0 commit comments

Comments
 (0)