提交 c0991307 编写于 作者: J josedonizetti

Fix kvm remove when domain is not defined

上级 fea7e21c
...@@ -451,7 +451,11 @@ func (d *Driver) Remove() error { ...@@ -451,7 +451,11 @@ func (d *Driver) Remove() error {
return errors.Wrap(err, "destroying running domain") return errors.Wrap(err, "destroying running domain")
} }
return dom.Undefine() if err := d.undefineDomain(conn, dom); err != nil {
return errors.Wrap(err, "undefine domain")
}
return nil
} }
func (d *Driver) destroyRunningDomain(dom *libvirt.Domain) error { func (d *Driver) destroyRunningDomain(dom *libvirt.Domain) error {
...@@ -467,3 +471,25 @@ func (d *Driver) destroyRunningDomain(dom *libvirt.Domain) error { ...@@ -467,3 +471,25 @@ func (d *Driver) destroyRunningDomain(dom *libvirt.Domain) error {
return dom.Destroy() return dom.Destroy()
} }
func (d *Driver) undefineDomain(conn *libvirt.Connect, dom *libvirt.Domain) error {
definedDomains, err := conn.ListDefinedDomains()
if err != nil {
return errors.Wrap(err, "list defined domains")
}
var found bool
for _, domain := range definedDomains {
if domain == d.MachineName {
found = true
break
}
}
if !found {
log.Warnf("Domain %s not defined, skipping undefine...", d.MachineName)
return nil
}
return dom.Undefine()
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册