diff --git a/pkg/compute/models/guestnetworks.go b/pkg/compute/models/guestnetworks.go index bd17515f73..ae110ec521 100644 --- a/pkg/compute/models/guestnetworks.go +++ b/pkg/compute/models/guestnetworks.go @@ -338,10 +338,10 @@ func (manager *SGuestnetworkManager) DeleteGuestNics(ctx context.Context, guest return nil } -func (manager *SGuestnetworkManager) getGuestNicByIP(ip string) (*SGuestnetwork, error) { +func (manager *SGuestnetworkManager) getGuestNicByIP(ip string, networkId string) (*SGuestnetwork, error) { gn := SGuestnetwork{} q := manager.Query() - q = q.Equals("ip_addr", ip) + q = q.Equals("ip_addr", ip).Equals("network_id", networkId) err := q.First(&gn) if err != nil { if err != sql.ErrNoRows { @@ -578,4 +578,4 @@ func (manager *SGuestnetworkManager) getRecentlyReleasedIPAddresses(networkId st } } return ret -} \ No newline at end of file +} diff --git a/pkg/compute/models/guests.go b/pkg/compute/models/guests.go index 8946d7ff73..ab79869450 100644 --- a/pkg/compute/models/guests.go +++ b/pkg/compute/models/guests.go @@ -1660,7 +1660,7 @@ func (self *SGuest) SyncVMNics(ctx context.Context, userCred mcclient.TokenCrede continue // cannot determine which network it attached to } // check if the IP has been occupied, if yes, release the IP - gn, err := GuestnetworkManager.getGuestNicByIP(add.nic.GetIP()) + gn, err := GuestnetworkManager.getGuestNicByIP(add.nic.GetIP(), add.net.Id) if err != nil { result.AddError(err) continue