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)