From 1986ea0048f6efce6d3dbdd47e789e006f1525ca Mon Sep 17 00:00:00 2001 From: rainzm Date: Fri, 17 Sep 2021 14:49:33 +0800 Subject: [PATCH] fix(region): consider the network of the entire VPC when merging networks --- pkg/compute/models/networks.go | 5 ++++- pkg/compute/tasks/networks_under_wire_merge_task.go | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/pkg/compute/models/networks.go b/pkg/compute/models/networks.go index ec4e434c6b..65788ce2ab 100644 --- a/pkg/compute/models/networks.go +++ b/pkg/compute/models/networks.go @@ -2512,7 +2512,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