diff --git a/pkg/compute/models/networks.go b/pkg/compute/models/networks.go index 62ca3a9c81..97d688ea60 100644 --- a/pkg/compute/models/networks.go +++ b/pkg/compute/models/networks.go @@ -2452,7 +2452,10 @@ func (self *SNetwork) CheckInvalidToMerge(ctx context.Context, net *SNetwork, al var wireNets []SNetwork if allNets == nil { - q := NetworkManager.Query().Equals("wire_id", self.WireId).NotEquals("id", self.Id).NotEquals("id", net.Id) + wireSubq := WireManager.Query("vpc_id").Equals("id", self.WireId).SubQuery() + wiresQ := WireManager.Query("id") + wiresSubQ := wiresQ.Join(wireSubq, sqlchemy.Equals(wiresQ.Field("vpc_id"), wireSubq.Field("vpc_id"))).SubQuery() + q := NetworkManager.Query().In("wire_id", wiresSubQ).NotEquals("id", self.Id).NotEquals("id", net.Id) err := db.FetchModelObjects(NetworkManager, q, &wireNets) if err != nil && errors.Cause(err) != sql.ErrNoRows { return "", "", errors.Wrap(err, "Query nets of same wire") diff --git a/pkg/compute/tasks/networks_under_wire_merge_task.go b/pkg/compute/tasks/networks_under_wire_merge_task.go index 7ada6c9dd4..23248cd351 100644 --- a/pkg/compute/tasks/networks_under_wire_merge_task.go +++ b/pkg/compute/tasks/networks_under_wire_merge_task.go @@ -105,7 +105,7 @@ func (self *NetworksUnderWireMergeTask) OnInit(ctx context.Context, obj db.IStan wireNets = append(wireNets, nets[i].SNetwork) } } - ok, err := self.mergeNetwork(ctx, nets[i].SNetwork, nets[i+1].SNetwork, wireNets) + ok, err := self.mergeNetwork(ctx, nets[i].SNetwork, nets[i+1].SNetwork, nil) if err != nil { self.taskFailed(ctx, w, fmt.Sprintf("unable to merge network %q to %q", nets[i].GetId(), nets[i+1].GetId()), err) return @@ -114,7 +114,7 @@ func (self *NetworksUnderWireMergeTask) OnInit(ctx context.Context, obj db.IStan continue } // Try to merge in the opposite direction - ok, err = self.mergeNetwork(ctx, nets[i+1].SNetwork, nets[i].SNetwork, wireNets) + ok, err = self.mergeNetwork(ctx, nets[i+1].SNetwork, nets[i].SNetwork, nil) if err != nil { self.taskFailed(ctx, w, fmt.Sprintf("unable to merge network %q to %q", nets[i+1].GetId(), nets[i].GetId()), err) return