@@ -19,11 +19,9 @@ package cloud_test
19
19
import (
20
20
"encoding/base64"
21
21
"fmt"
22
-
23
22
"github.com/apache/cloudstack-go/v2/cloudstack"
24
23
"github.com/golang/mock/gomock"
25
24
. "github.com/onsi/ginkgo/v2"
26
-
27
25
infrav1 "sigs.k8s.io/cluster-api-provider-cloudstack/api/v1beta3"
28
26
"sigs.k8s.io/cluster-api-provider-cloudstack/pkg/cloud"
29
27
dummies "sigs.k8s.io/cluster-api-provider-cloudstack/test/dummies/v1beta3"
@@ -750,6 +748,7 @@ var _ = Describe("Instance", func() {
750
748
It ("calls destroy and finds VM doesn't exist, then returns nil" , func () {
751
749
listVolumesParams .SetVirtualmachineid (* dummies .CSMachine1 .Spec .InstanceID )
752
750
listVolumesParams .SetType ("DATADISK" )
751
+ listVolumesParams .SetKeyword ("DATA-" )
753
752
vms .EXPECT ().NewDestroyVirtualMachineParams (* dummies .CSMachine1 .Spec .InstanceID ).
754
753
Return (expungeDestroyParams )
755
754
vms .EXPECT ().DestroyVirtualMachine (expungeDestroyParams ).Return (nil , fmt .Errorf ("unable to find uuid for id" ))
@@ -762,6 +761,7 @@ var _ = Describe("Instance", func() {
762
761
It ("calls destroy and returns unexpected error" , func () {
763
762
listVolumesParams .SetVirtualmachineid (* dummies .CSMachine1 .Spec .InstanceID )
764
763
listVolumesParams .SetType ("DATADISK" )
764
+ listVolumesParams .SetKeyword ("DATA-" )
765
765
vms .EXPECT ().NewDestroyVirtualMachineParams (* dummies .CSMachine1 .Spec .InstanceID ).
766
766
Return (expungeDestroyParams )
767
767
vms .EXPECT ().DestroyVirtualMachine (expungeDestroyParams ).Return (nil , fmt .Errorf ("new error" ))
@@ -773,6 +773,7 @@ var _ = Describe("Instance", func() {
773
773
It ("calls destroy without error but cannot resolve VM after" , func () {
774
774
listVolumesParams .SetVirtualmachineid (* dummies .CSMachine1 .Spec .InstanceID )
775
775
listVolumesParams .SetType ("DATADISK" )
776
+ listVolumesParams .SetKeyword ("DATA-" )
776
777
vms .EXPECT ().NewDestroyVirtualMachineParams (* dummies .CSMachine1 .Spec .InstanceID ).
777
778
Return (expungeDestroyParams )
778
779
vms .EXPECT ().DestroyVirtualMachine (expungeDestroyParams ).Return (nil , nil )
@@ -787,6 +788,7 @@ var _ = Describe("Instance", func() {
787
788
It ("calls destroy without error and identifies it as expunging" , func () {
788
789
listVolumesParams .SetVirtualmachineid (* dummies .CSMachine1 .Spec .InstanceID )
789
790
listVolumesParams .SetType ("DATADISK" )
791
+ listVolumesParams .SetKeyword ("DATA-" )
790
792
vms .EXPECT ().NewDestroyVirtualMachineParams (* dummies .CSMachine1 .Spec .InstanceID ).
791
793
Return (expungeDestroyParams )
792
794
vms .EXPECT ().DestroyVirtualMachine (expungeDestroyParams ).Return (nil , nil )
@@ -803,6 +805,7 @@ var _ = Describe("Instance", func() {
803
805
It ("calls destroy without error and identifies it as expunged" , func () {
804
806
listVolumesParams .SetVirtualmachineid (* dummies .CSMachine1 .Spec .InstanceID )
805
807
listVolumesParams .SetType ("DATADISK" )
808
+ listVolumesParams .SetKeyword ("DATA-" )
806
809
vms .EXPECT ().NewDestroyVirtualMachineParams (* dummies .CSMachine1 .Spec .InstanceID ).
807
810
Return (expungeDestroyParams )
808
811
vms .EXPECT ().DestroyVirtualMachine (expungeDestroyParams ).Return (nil , nil )
@@ -819,6 +822,7 @@ var _ = Describe("Instance", func() {
819
822
It ("calls destroy without error and identifies it as stopping" , func () {
820
823
listVolumesParams .SetVirtualmachineid (* dummies .CSMachine1 .Spec .InstanceID )
821
824
listVolumesParams .SetType ("DATADISK" )
825
+ listVolumesParams .SetKeyword ("DATA-" )
822
826
vms .EXPECT ().NewDestroyVirtualMachineParams (* dummies .CSMachine1 .Spec .InstanceID ).
823
827
Return (expungeDestroyParams )
824
828
vms .EXPECT ().DestroyVirtualMachine (expungeDestroyParams ).Return (nil , nil )
@@ -830,5 +834,35 @@ var _ = Describe("Instance", func() {
830
834
}, 1 , nil )
831
835
Ω (client .DestroyVMInstance (dummies .CSMachine1 )).Should (MatchError ("VM deletion in progress" ))
832
836
})
837
+
838
+ It ("calls destroy without error on a VM without additional diskoffering and does not search for data disks" , func () {
839
+ dummies .CSMachine1 .Spec .DiskOffering = nil
840
+ expungeDestroyParams := & cloudstack.DestroyVirtualMachineParams {}
841
+ expungeDestroyParams .SetExpunge (true )
842
+
843
+ vms .EXPECT ().NewDestroyVirtualMachineParams (* dummies .CSMachine1 .Spec .InstanceID ).
844
+ Return (expungeDestroyParams )
845
+ vms .EXPECT ().DestroyVirtualMachine (gomock .Any ()).DoAndReturn (
846
+ func (p * cloudstack.DestroyVirtualMachineParams ) (* cloudstack.DestroyVirtualMachineResponse , error ) {
847
+ value , ok := p .GetExpunge ()
848
+ Ω (value ).To (BeTrue ())
849
+ Ω (ok ).To (BeTrue ())
850
+
851
+ ids , ok := p .GetVolumeids ()
852
+ Ω (len (ids )).To (Equal (0 ))
853
+ Ω (ok ).To (BeFalse ())
854
+
855
+ return nil , nil
856
+ })
857
+ vs .EXPECT ().NewListVolumesParams ().Times (0 )
858
+ vs .EXPECT ().ListVolumes (gomock .Any ()).Times (0 )
859
+ vms .EXPECT ().GetVirtualMachinesMetricByID (* dummies .CSMachine1 .Spec .InstanceID ).
860
+ Return (& cloudstack.VirtualMachinesMetric {
861
+ State : "Expunged" ,
862
+ }, 1 , nil )
863
+ Ω (dummies .CSMachine1 .Spec .DiskOffering ).Should (BeNil ())
864
+ Ω (client .DestroyVMInstance (dummies .CSMachine1 )).
865
+ Should (Succeed ())
866
+ })
833
867
})
834
868
})
0 commit comments