@@ -325,4 +325,69 @@ var _ = Describe("Instance", func() {
325
325
})
326
326
})
327
327
})
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
+ })
328
393
})
0 commit comments