From f444dc3f4981c1ef6e0b7fd936f3ab7396cb57f0 Mon Sep 17 00:00:00 2001 From: Qiu Jian Date: Mon, 30 Dec 2019 23:08:32 +0800 Subject: [PATCH] fix: baremetal server may reuse host's IPMI address --- pkg/compute/models/hosts.go | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/pkg/compute/models/hosts.go b/pkg/compute/models/hosts.go index b854bc5408..3e367d98b4 100644 --- a/pkg/compute/models/hosts.go +++ b/pkg/compute/models/hosts.go @@ -1276,6 +1276,13 @@ func (self *SHost) GetBaremetalnetworks() []SHostnetwork { func (self *SHost) GetAttach2Network(netId string) *SHostnetwork { q := self.GetBaremetalnetworksQuery() + netifs := NetInterfaceManager.Query().Equals("baremetal_id", self.Id) + netifs = netifs.Filter(sqlchemy.OR( + sqlchemy.IsNullOrEmpty(netifs.Field("nic_type")), + sqlchemy.NotEquals(netifs.Field("nic_type"), api.NIC_TYPE_IPMI), + )) + netifsSub := netifs.SubQuery() + q = q.Join(netifsSub, sqlchemy.Equals(q.Field("mac_addr"), netifsSub.Field("mac"))) q = q.Equals("network_id", netId) hn := SHostnetwork{} hn.SetModelManager(HostnetworkManager, &hn) @@ -1288,11 +1295,6 @@ func (self *SHost) GetAttach2Network(netId string) *SHostnetwork { return &hn } -func (self *SHost) isAttach2Network(network *SNetwork) bool { - hn := self.GetAttach2Network(network.Id) - return hn != nil -} - func (self *SHost) GetNetInterfaces() []SNetInterface { q := NetInterfaceManager.Query().Equals("baremetal_id", self.Id).Asc("index") netifs := make([]SNetInterface, 0)