mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-01 15:07:17 +08:00
fix(region): network reserved ip count not consider expiration of reserved ips
network reserved ip count not consider expiration of reserved ips
This commit is contained in:
@@ -147,16 +147,6 @@ func (self *SNetwork) GetNetworkInterfaces() ([]SNetworkInterface, error) {
|
||||
return networkinterfaces, nil
|
||||
}
|
||||
|
||||
func (self *SNetwork) GetReservedIPs() ([]SReservedip, error) {
|
||||
reservedIps := []SReservedip{}
|
||||
q := ReservedipManager.Query().Equals("network_id", self.Id)
|
||||
err := db.FetchModelObjects(ReservedipManager, q, &reservedIps)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "db.FetchModelObjects")
|
||||
}
|
||||
return reservedIps, nil
|
||||
}
|
||||
|
||||
func (self *SNetwork) ValidateDeleteCondition(ctx context.Context) error {
|
||||
cnt, err := self.GetAllocatedNicCount()
|
||||
if err != nil {
|
||||
@@ -306,7 +296,9 @@ func (self *SNetwork) GetBaremetalNicsCount() (int, error) {
|
||||
}
|
||||
|
||||
func (self *SNetwork) GetReservedNicsCount() (int, error) {
|
||||
return ReservedipManager.Query().Equals("network_id", self.Id).CountWithError()
|
||||
q := ReservedipManager.Query().Equals("network_id", self.Id)
|
||||
q = filterExpiredReservedIps(q)
|
||||
return q.CountWithError()
|
||||
}
|
||||
|
||||
func (self *SNetwork) GetLoadbalancerIpsCount() (int, error) {
|
||||
@@ -1777,10 +1769,7 @@ func (self *SNetwork) RealDelete(ctx context.Context, userCred mcclient.TokenCre
|
||||
return errors.Wrapf(err, "networkinterface.purge %s(%s)", networkinterfaces[i].Name, networkinterfaces[i].Id)
|
||||
}
|
||||
}
|
||||
reservedIps, err := self.GetReservedIPs()
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "GetReservedNicsCount")
|
||||
}
|
||||
reservedIps := ReservedipManager.GetReservedIPs(self)
|
||||
for i := range reservedIps {
|
||||
err = reservedIps[i].Release(ctx, userCred, self)
|
||||
if err != nil {
|
||||
|
||||
@@ -244,10 +244,7 @@ func (manager *SReservedipManager) ListItemFilter(
|
||||
}
|
||||
|
||||
if query.All == nil || *query.All == false {
|
||||
q = q.Filter(sqlchemy.OR(
|
||||
sqlchemy.IsNullOrEmpty(q.Field("expired_at")),
|
||||
sqlchemy.GT(q.Field("expired_at"), time.Now().UTC()),
|
||||
))
|
||||
q = filterExpiredReservedIps(q)
|
||||
}
|
||||
|
||||
if len(query.IpAddr) > 0 {
|
||||
@@ -260,6 +257,13 @@ func (manager *SReservedipManager) ListItemFilter(
|
||||
return q, nil
|
||||
}
|
||||
|
||||
func filterExpiredReservedIps(q *sqlchemy.SQuery) *sqlchemy.SQuery {
|
||||
return q.Filter(sqlchemy.OR(
|
||||
sqlchemy.IsNullOrEmpty(q.Field("expired_at")),
|
||||
sqlchemy.GT(q.Field("expired_at"), time.Now().UTC()),
|
||||
))
|
||||
}
|
||||
|
||||
func (manager *SReservedipManager) OrderByExtraFields(
|
||||
ctx context.Context,
|
||||
q *sqlchemy.SQuery,
|
||||
|
||||
Reference in New Issue
Block a user