@@ -325,4 +325,69 @@ var _ = Describe("Instance", func() {
325325 })
326326 })
327327 })
328+
329+ Context ("when destroying a VM instance" , func () {
330+ expungeDestroyParams := & cloudstack.DestroyVirtualMachineParams {}
331+ expungeDestroyParams .SetExpunge (true )
332+
333+ It ("calls destroy and finds VM doesn't exist, then returns nil" , func () {
334+ vms .EXPECT ().NewDestroyVirtualMachineParams (* dummies .CSMachine1 .Spec .InstanceID ).
335+ Return (expungeDestroyParams )
336+ vms .EXPECT ().DestroyVirtualMachine (expungeDestroyParams ).Return (nil , fmt .Errorf ("unable to find uuid for id" ))
337+ Ω (client .DestroyVMInstance (dummies .CSMachine1 )).
338+ Should (Succeed ())
339+ })
340+
341+ It ("calls destroy and returns unexpected error" , func () {
342+ vms .EXPECT ().NewDestroyVirtualMachineParams (* dummies .CSMachine1 .Spec .InstanceID ).
343+ Return (expungeDestroyParams )
344+ vms .EXPECT ().DestroyVirtualMachine (expungeDestroyParams ).Return (nil , fmt .Errorf ("new error" ))
345+ Ω (client .DestroyVMInstance (dummies .CSMachine1 )).Should (MatchError ("new error" ))
346+ })
347+
348+ It ("calls destroy without error but cannot resolve VM after" , func () {
349+ vms .EXPECT ().NewDestroyVirtualMachineParams (* dummies .CSMachine1 .Spec .InstanceID ).
350+ Return (expungeDestroyParams )
351+ vms .EXPECT ().DestroyVirtualMachine (expungeDestroyParams ).Return (nil , nil )
352+ vms .EXPECT ().GetVirtualMachinesMetricByID (* dummies .CSMachine1 .Spec .InstanceID ).Return (nil , - 1 , notFoundError )
353+ vms .EXPECT ().GetVirtualMachinesMetricByName (dummies .CSMachine1 .Name ).Return (nil , - 1 , notFoundError )
354+ Ω (client .DestroyVMInstance (dummies .CSMachine1 )).
355+ Should (Succeed ())
356+ })
357+
358+ It ("calls destroy without error and identifies it as expunging" , func () {
359+ vms .EXPECT ().NewDestroyVirtualMachineParams (* dummies .CSMachine1 .Spec .InstanceID ).
360+ Return (expungeDestroyParams )
361+ vms .EXPECT ().DestroyVirtualMachine (expungeDestroyParams ).Return (nil , nil )
362+ vms .EXPECT ().GetVirtualMachinesMetricByID (* dummies .CSMachine1 .Spec .InstanceID ).
363+ Return (& cloudstack.VirtualMachinesMetric {
364+ State : "Expunging" ,
365+ }, 1 , nil )
366+ Ω (client .DestroyVMInstance (dummies .CSMachine1 )).
367+ Should (Succeed ())
368+ })
369+
370+ It ("calls destroy without error and identifies it as expunged" , func () {
371+ vms .EXPECT ().NewDestroyVirtualMachineParams (* dummies .CSMachine1 .Spec .InstanceID ).
372+ Return (expungeDestroyParams )
373+ vms .EXPECT ().DestroyVirtualMachine (expungeDestroyParams ).Return (nil , nil )
374+ vms .EXPECT ().GetVirtualMachinesMetricByID (* dummies .CSMachine1 .Spec .InstanceID ).
375+ Return (& cloudstack.VirtualMachinesMetric {
376+ State : "Expunged" ,
377+ }, 1 , nil )
378+ Ω (client .DestroyVMInstance (dummies .CSMachine1 )).
379+ Should (Succeed ())
380+ })
381+
382+ It ("calls destroy without error and identifies it as stopping" , func () {
383+ vms .EXPECT ().NewDestroyVirtualMachineParams (* dummies .CSMachine1 .Spec .InstanceID ).
384+ Return (expungeDestroyParams )
385+ vms .EXPECT ().DestroyVirtualMachine (expungeDestroyParams ).Return (nil , nil )
386+ vms .EXPECT ().GetVirtualMachinesMetricByID (* dummies .CSMachine1 .Spec .InstanceID ).
387+ Return (& cloudstack.VirtualMachinesMetric {
388+ State : "Stopping" ,
389+ }, 1 , nil )
390+ Ω (client .DestroyVMInstance (dummies .CSMachine1 )).Should (MatchError ("VM deletion in progress" ))
391+ })
392+ })
328393})
0 commit comments