mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-08-31 01:35:56 +08:00
fix(region): fix default network on get desc (#21397)
This commit is contained in:
@@ -2794,10 +2794,22 @@ func (self *SGuest) PerformDetachnetwork(
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
func (guest *SGuest) fixDefaultGateway(ctx context.Context, userCred mcclient.TokenCredential) error {
|
||||
func (guest *SGuest) fixDefaultGatewayByNics(ctx context.Context, userCred mcclient.TokenCredential, nics []SGuestnetwork) (bool, error) {
|
||||
defaultGwCnt := 0
|
||||
for i := range nics {
|
||||
if nics[i].Virtual || len(nics[i].TeamWith) > 0 {
|
||||
continue
|
||||
}
|
||||
if nics[i].IsDefault {
|
||||
defaultGwCnt++
|
||||
}
|
||||
}
|
||||
|
||||
if defaultGwCnt == 1 {
|
||||
return false, nil
|
||||
}
|
||||
|
||||
nicList := netutils2.SNicInfoList{}
|
||||
nics, _ := guest.GetNetworks("")
|
||||
for i := range nics {
|
||||
if nics[i].Virtual || len(nics[i].TeamWith) > 0 {
|
||||
continue
|
||||
@@ -2805,22 +2817,24 @@ func (guest *SGuest) fixDefaultGateway(ctx context.Context, userCred mcclient.To
|
||||
net, _ := nics[i].GetNetwork()
|
||||
if net != nil {
|
||||
nicList = nicList.Add(nics[i].IpAddr, nics[i].MacAddr, net.GuestGateway)
|
||||
if nics[i].IsDefault {
|
||||
defaultGwCnt++
|
||||
}
|
||||
}
|
||||
}
|
||||
if defaultGwCnt != 1 {
|
||||
gwMac, _ := nicList.FindDefaultNicMac()
|
||||
if gwMac != "" {
|
||||
err := guest.setDefaultGateway(ctx, userCred, gwMac)
|
||||
if err != nil {
|
||||
log.Errorf("setDefaultGateway fail %s", err)
|
||||
return errors.Wrap(err, "setDefaultGateway")
|
||||
}
|
||||
|
||||
gwMac, _ := nicList.FindDefaultNicMac()
|
||||
if gwMac != "" {
|
||||
err := guest.setDefaultGateway(ctx, userCred, gwMac)
|
||||
if err != nil {
|
||||
log.Errorf("setDefaultGateway fail %s", err)
|
||||
return true, errors.Wrap(err, "setDefaultGateway")
|
||||
}
|
||||
}
|
||||
return nil
|
||||
return true, nil
|
||||
}
|
||||
|
||||
func (guest *SGuest) fixDefaultGateway(ctx context.Context, userCred mcclient.TokenCredential) error {
|
||||
nics, _ := guest.GetNetworks("")
|
||||
_, err := guest.fixDefaultGatewayByNics(ctx, userCred, nics)
|
||||
return err
|
||||
}
|
||||
|
||||
func (self *SGuest) PerformAttachnetwork(
|
||||
|
||||
@@ -5211,6 +5211,10 @@ func (self *SGuest) GetJsonDescAtHypervisor(ctx context.Context, host *SHost) *a
|
||||
// nics, domain
|
||||
desc.Domain = options.Options.DNSDomain
|
||||
nics, _ := self.GetNetworks("")
|
||||
changed, _ := self.fixDefaultGatewayByNics(ctx, auth.AdminCredential(), nics)
|
||||
if changed {
|
||||
nics, _ = self.GetNetworks("")
|
||||
}
|
||||
for _, nic := range nics {
|
||||
nicDesc := nic.getJsonDescAtHost(ctx, host)
|
||||
desc.Nics = append(desc.Nics, nicDesc)
|
||||
@@ -5320,6 +5324,7 @@ func (self *SGuest) GetJsonDescAtBaremetal(ctx context.Context, host *SHost) *ap
|
||||
|
||||
desc.DiskConfig = host.getDiskConfig()
|
||||
|
||||
self.fixDefaultGateway(ctx, auth.AdminCredential())
|
||||
netifs := host.GetAllNetInterfaces()
|
||||
desc.Domain = options.Options.DNSDomain
|
||||
|
||||
|
||||
@@ -1317,6 +1317,11 @@ func getMainNic(nics []*types.SServerNic) *types.SServerNic {
|
||||
return nics[i]
|
||||
}
|
||||
}
|
||||
for i := range nics {
|
||||
if len(nics[i].Gateway) > 0 {
|
||||
return nics[i]
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user