fix(region): baremetal server resued address nic count should be subtracted

This commit is contained in:
Zexi Li
2021-08-03 15:40:33 +08:00
parent fa8bd78b56
commit 0d6fe4f4e7
+17
View File
@@ -303,9 +303,26 @@ func (self *SNetwork) GetAllocatedNicCount() (*sNicCount, error) {
return nil, errors.Wrapf(err, "GetNatGatewayIpsCount")
}
cnt.Total += cnt.NatNicCount
bmReusedCnt, err := self.GetBaremetalServerReusedCount()
if err != nil {
return nil, errors.Wrapf(err, "Get baremetal server resued count")
}
cnt.Total -= bmReusedCnt
return cnt, nil
}
func (self *SNetwork) GetBaremetalServerReusedCount() (int, error) {
guest := GuestManager.Query().SubQuery()
gn := GuestnetworkManager.Query().Equals("network_id", self.Id)
gn = gn.Join(guest, sqlchemy.Equals(gn.Field("guest_id"), guest.Field("id")))
bmn := HostnetworkManager.Query().Equals("network_id", self.Id).SubQuery()
q := gn.Join(bmn, sqlchemy.AND(
sqlchemy.Equals(gn.Field("ip_addr"), bmn.Field("ip_addr")),
sqlchemy.Equals(guest.Field("host_id"), bmn.Field("baremetal_id")),
))
return q.CountWithError()
}
/*验证elb network可用,并返回关联的region, zone,vpc, wire*/
func (self *SNetwork) ValidateElbNetwork(ipAddr net.IP) (*SCloudregion, *SZone, *SVpc, *SWire, error) {
// 验证IP Address可用