File tree 1 file changed +20
-9
lines changed
1 file changed +20
-9
lines changed Original file line number Diff line number Diff line change @@ -443,16 +443,27 @@ func (d *Driver) Remove() error {
443
443
dom , err := conn .LookupDomainByName (d .MachineName )
444
444
if err != nil {
445
445
log .Warnf ("Domain %s does not exist, nothing to clean up..." , d .MachineName )
446
+ return nil
446
447
}
447
- if dom != nil {
448
- log .Infof ("Domain %s exists, removing..." , d .MachineName )
449
- if err := dom .Destroy (); err != nil {
450
- return err
451
- }
452
- if err := dom .Undefine (); err != nil {
453
- return err
454
- }
448
+
449
+ log .Infof ("Domain %s exists, removing..." , d .MachineName )
450
+ if err := d .destroyRunningDomain (dom ); err != nil {
451
+ return errors .Wrap (err , "destroying running domain" )
455
452
}
456
453
457
- return nil
454
+ return dom .Undefine ()
455
+ }
456
+
457
+ func (d * Driver ) destroyRunningDomain (dom * libvirt.Domain ) error {
458
+ state , reason , err := dom .GetState ()
459
+ if err != nil {
460
+ return errors .Wrap (err , "getting domain state" )
461
+ }
462
+
463
+ if state == libvirt .DOMAIN_SHUTOFF && reason == int (libvirt .DOMAIN_SHUTOFF_DESTROYED ) {
464
+ log .Warnf ("Domain %s already destroyed, skipping..." , d .MachineName )
465
+ return nil
466
+ }
467
+
468
+ return dom .Destroy ()
458
469
}
You can’t perform that action at this time.
0 commit comments