@@ -687,48 +687,20 @@ func (h LifeCycleHandler) fillStatusResources(ctx context.Context, vmSnapshot *v
687687 vmSnapshot .Status .Resources = append (vmSnapshot .Status .Resources , virtv2.ResourceRef {
688688 Kind : vmip .Kind ,
689689 ApiVersion : vmip .APIVersion ,
690- Name : vmip .APIVersion ,
690+ Name : vmip .Name ,
691691 })
692692 }
693693
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- }
694+ provisioner , err := h .getProvisionerFromVM (ctx , vm )
695+ if err != nil {
696+ return err
697+ }
698+ if provisioner != nil {
699+ vmSnapshot .Status .Resources = append (vmSnapshot .Status .Resources , virtv2.ResourceRef {
700+ Kind : provisioner .Kind ,
701+ ApiVersion : provisioner .APIVersion ,
702+ Name : provisioner .Name ,
703+ })
732704 }
733705
734706 for _ , bdr := range vm .Status .BlockDeviceRefs {
@@ -767,3 +739,39 @@ func (h LifeCycleHandler) fillStatusResources(ctx context.Context, vmSnapshot *v
767739
768740 return nil
769741}
742+
743+ func (h LifeCycleHandler ) getProvisionerFromVM (ctx context.Context , vm * virtv2.VirtualMachine ) (* corev1.Secret , error ) {
744+ if vm .Spec .Provisioning != nil {
745+ var provisioningSecretName string
746+
747+ switch vm .Spec .Provisioning .Type {
748+ case virtv2 .ProvisioningTypeSysprepRef :
749+ if vm .Spec .Provisioning .SysprepRef == nil {
750+ return nil , errors .New ("the virtual machine sysprep ref provisioning is nil" )
751+ }
752+
753+ if vm .Spec .Provisioning .SysprepRef .Kind == virtv2 .SysprepRefKindSecret {
754+ provisioningSecretName = vm .Spec .Provisioning .SysprepRef .Name
755+ }
756+
757+ case virtv2 .ProvisioningTypeUserDataRef :
758+ if vm .Spec .Provisioning .UserDataRef == nil {
759+ return nil , errors .New ("the virtual machine user data ref provisioning is nil" )
760+ }
761+
762+ if vm .Spec .Provisioning .UserDataRef .Kind == virtv2 .UserDataRefKindSecret {
763+ provisioningSecretName = vm .Spec .Provisioning .UserDataRef .Name
764+ }
765+ }
766+
767+ if provisioningSecretName != "" {
768+ secretKey := types.NamespacedName {Name : provisioningSecretName , Namespace : vm .Namespace }
769+ provisioner , err := object .FetchObject (ctx , secretKey , h .client , & corev1.Secret {})
770+ return provisioner , err
771+ } else {
772+ return nil , nil
773+ }
774+ } else {
775+ return nil , nil
776+ }
777+ }
0 commit comments