diff --git a/pkg/compute/models/guestnetworks.go b/pkg/compute/models/guestnetworks.go index 981c74944e..98aa844da7 100644 --- a/pkg/compute/models/guestnetworks.go +++ b/pkg/compute/models/guestnetworks.go @@ -345,10 +345,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 { diff --git a/pkg/compute/models/guests.go b/pkg/compute/models/guests.go index a6d1ea497b..822f7a8c94 100644 --- a/pkg/compute/models/guests.go +++ b/pkg/compute/models/guests.go @@ -1685,7 +1685,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