Skip to content

Commit dbc64c0

Browse files
authored
Merge pull request #4355 from josedonizetti/fix-kvm-remove-when-domain-is-not-defined
Fix kvm remove when domain is not defined
2 parents 05332bd + c099130 commit dbc64c0

File tree

1 file changed

+27
-1
lines changed

1 file changed

+27
-1
lines changed

pkg/drivers/kvm/kvm.go

+27-1
Original file line numberDiff line numberDiff line change
@@ -451,7 +451,11 @@ func (d *Driver) Remove() error {
451451
return errors.Wrap(err, "destroying running domain")
452452
}
453453

454-
return dom.Undefine()
454+
if err := d.undefineDomain(conn, dom); err != nil {
455+
return errors.Wrap(err, "undefine domain")
456+
}
457+
458+
return nil
455459
}
456460

457461
func (d *Driver) destroyRunningDomain(dom *libvirt.Domain) error {
@@ -467,3 +471,25 @@ func (d *Driver) destroyRunningDomain(dom *libvirt.Domain) error {
467471

468472
return dom.Destroy()
469473
}
474+
475+
func (d *Driver) undefineDomain(conn *libvirt.Connect, dom *libvirt.Domain) error {
476+
definedDomains, err := conn.ListDefinedDomains()
477+
if err != nil {
478+
return errors.Wrap(err, "list defined domains")
479+
}
480+
481+
var found bool
482+
for _, domain := range definedDomains {
483+
if domain == d.MachineName {
484+
found = true
485+
break
486+
}
487+
}
488+
489+
if !found {
490+
log.Warnf("Domain %s not defined, skipping undefine...", d.MachineName)
491+
return nil
492+
}
493+
494+
return dom.Undefine()
495+
}

0 commit comments

Comments
 (0)