diff --git a/pkg/drivers/kvm/network.go b/pkg/drivers/kvm/network.go index d60ae20fd38e..137794507857 100644 --- a/pkg/drivers/kvm/network.go +++ b/pkg/drivers/kvm/network.go @@ -201,7 +201,7 @@ func (d *Driver) deleteNetwork() error { log.Warnf("Network %s does not exist. Skipping deletion", d.PrivateNetwork) return nil } - return errors.Wrapf(err, "failed looking for network %s", d.PrivateNetwork) + return errors.Wrapf(err, "failed looking up network %s", d.PrivateNetwork) } defer func() { _ = network.Free() }() log.Debugf("Network %s exists", d.PrivateNetwork) @@ -213,58 +213,25 @@ func (d *Driver) deleteNetwork() error { // when we reach this point, it means it is safe to delete the network - // cannot destroy an inactive network - try to activate it first - log.Debugf("Trying to reactivate network %s first (if needed)...", d.PrivateNetwork) - activate := func() error { + log.Debugf("Trying to delete network %s...", d.PrivateNetwork) + delete := func() error { active, err := network.IsActive() - if err == nil && active { - return nil - } if err != nil { return err } - // inactive, try to activate - if err := network.Create(); err != nil { - return err - } - return errors.Errorf("needs confirmation") // confirm in the next cycle - } - if err := retry.Local(activate, 10*time.Second); err != nil { - log.Debugf("Reactivating network %s failed, will continue anyway...", d.PrivateNetwork) - } - - log.Debugf("Trying to destroy network %s...", d.PrivateNetwork) - destroy := func() error { - if err := network.Destroy(); err != nil { - return err - } - active, err := network.IsActive() - if err == nil && !active { - return nil - } - return errors.Errorf("retrying %v", err) - } - if err := retry.Local(destroy, 10*time.Second); err != nil { - return errors.Wrap(err, "destroying network") - } - - log.Debugf("Trying to undefine network %s...", d.PrivateNetwork) - undefine := func() error { - if err := network.Undefine(); err != nil { - return err - } - netp, err := conn.LookupNetworkByName(d.PrivateNetwork) - if netp != nil { - _ = netp.Free() - } - if lvErr(err).Code == libvirt.ERR_NO_NETWORK { - return nil + if active { + log.Debugf("Destroying active network %s", d.PrivateNetwork) + if err := network.Destroy(); err != nil { + return err + } } - return errors.Errorf("retrying %v", err) + log.Debugf("Undefining inactive network %s", d.PrivateNetwork) + return network.Undefine() } - if err := retry.Local(undefine, 10*time.Second); err != nil { - return errors.Wrap(err, "undefining network") + if err := retry.Local(delete, 10*time.Second); err != nil { + return errors.Wrap(err, "deleting network") } + log.Debugf("Network %s deleted", d.PrivateNetwork) return nil }