mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-24 16:03:43 +08:00
Merge pull request #10104 from ioito/hotfix/qx-network-delete
fix(region): delete virtual nics with network
This commit is contained in:
@@ -298,6 +298,16 @@ func (self *SNetwork) ValidateElbNetwork(ipAddr net.IP) (*SCloudregion, *SZone,
|
||||
return region, zone, vpc, wire, nil
|
||||
}
|
||||
|
||||
func (self *SNetwork) GetGuestnetworks() ([]SGuestnetwork, error) {
|
||||
q := GuestnetworkManager.Query().Equals("network_id", self.Id)
|
||||
gns := []SGuestnetwork{}
|
||||
err := db.FetchModelObjects(GuestnetworkManager, q, &gns)
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "db.FetchModelObjects")
|
||||
}
|
||||
return gns, nil
|
||||
}
|
||||
|
||||
func (self *SNetwork) GetGuestnicsCount() (int, error) {
|
||||
return GuestnetworkManager.Query().Equals("network_id", self.Id).IsFalse("virtual").CountWithError()
|
||||
}
|
||||
@@ -1791,6 +1801,16 @@ func (self *SNetwork) RealDelete(ctx context.Context, userCred mcclient.TokenCre
|
||||
return errors.Wrapf(err, "reservedIps.Release %s(%d)", reservedIps[i].IpAddr, reservedIps[i].Id)
|
||||
}
|
||||
}
|
||||
gns, err := self.GetGuestnetworks() // delete virtual nics
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "GetGuestnetworks")
|
||||
}
|
||||
for i := range gns {
|
||||
err = gns[i].Delete(ctx, userCred)
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "delete virtual nic %s(%d)", gns[i].Ifname, gns[i].RowId)
|
||||
}
|
||||
}
|
||||
if err := self.SSharableVirtualResourceBase.Delete(ctx, userCred); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user