Merge pull request #12243 from rainzm/mergewire

fix(region): consider the network of the entire VPC when merging networks
This commit is contained in:
Zexi Li
2021-09-22 11:56:59 +08:00
committed by GitHub
2 changed files with 6 additions and 3 deletions
+4 -1
View File
@@ -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")
@@ -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