fix(region): fix default network on get desc (#21397)

This commit is contained in:
wanyaoqi
2024-10-14 12:35:59 +08:00
committed by GitHub
parent 54c36d25b0
commit 3f9510ec41
3 changed files with 38 additions and 14 deletions
+28 -14
View File
@@ -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(
+5
View File
@@ -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
+5
View File
@@ -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
}