mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-21 14:19:49 +08:00
Merge pull request #12243 from rainzm/mergewire
fix(region): consider the network of the entire VPC when merging networks
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user