mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-08-30 17:13:08 +08:00
fix: network manager keyfile static routes (#23480)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
This commit is contained in:
@@ -1460,17 +1460,21 @@ func (r *sRedhatLikeRootFs) deployNetworkManagerConfigurations(rootFs IDiskParti
|
||||
return errors.Wrap(err, "enableBondingModule")
|
||||
}
|
||||
}
|
||||
// nicCnt := len(allNics) - len(bondNics)
|
||||
nicCnt := len(allNics) - len(bondNics)
|
||||
|
||||
mainNic := getMainNic(allNics)
|
||||
var mainIp, mainIp6 string
|
||||
var mainIp string
|
||||
if mainNic != nil {
|
||||
mainIp = mainNic.Ip
|
||||
mainIp6 = mainNic.Ip6
|
||||
}
|
||||
mainNic6 := getMainNic6(allNics)
|
||||
var mainIp6 string
|
||||
if mainNic6 != nil {
|
||||
mainIp6 = mainNic6.Ip6
|
||||
}
|
||||
for i := range allNics {
|
||||
nicDesc := allNics[i]
|
||||
profile := nicDescToNetworkManager(nicDesc, mainIp, mainIp6)
|
||||
profile := nicDescToNetworkManager(nicDesc, mainIp, mainIp6, nicCnt)
|
||||
var fn = fmt.Sprintf("%s/%s.nmconnection", scriptPath, nicDesc.Name)
|
||||
if err := rootFs.FilePutContents(fn, profile, false, false); err != nil {
|
||||
return err
|
||||
|
||||
@@ -24,7 +24,7 @@ import (
|
||||
"yunion.io/x/onecloud/pkg/util/stringutils2"
|
||||
)
|
||||
|
||||
func nicDescToNetworkManager(nicDesc *types.SServerNic, mainIp string, mainIp6 string) string {
|
||||
func nicDescToNetworkManager(nicDesc *types.SServerNic, mainIp string, mainIp6 string, nicCnt int) string {
|
||||
var profile strings.Builder
|
||||
|
||||
profile.WriteString("[connection]\n")
|
||||
@@ -57,12 +57,6 @@ func nicDescToNetworkManager(nicDesc *types.SServerNic, mainIp string, mainIp6 s
|
||||
|
||||
if len(nicDesc.Mac) > 0 && nicDesc.NicType != api.NIC_TYPE_INFINIBAND {
|
||||
profile.WriteString("[ethernet]\n")
|
||||
if len(nicDesc.TeamingSlaves) == 0 {
|
||||
// only real physical nic can set HWADDR
|
||||
// cmds.WriteString("HWADDR=")
|
||||
// cmds.WriteString(nicDesc.Mac)
|
||||
// cmds.WriteString("\n")
|
||||
}
|
||||
profile.WriteString(fmt.Sprintf("mac-address=%s\n", nicDesc.Mac))
|
||||
if nicDesc.Mtu > 0 {
|
||||
profile.WriteString(fmt.Sprintf("mtu=%d\n", nicDesc.Mtu))
|
||||
@@ -83,6 +77,10 @@ func nicDescToNetworkManager(nicDesc *types.SServerNic, mainIp string, mainIp6 s
|
||||
profile.WriteString(fmt.Sprintf("address1=%s/32\n", netutils2.PSEUDO_VIP))
|
||||
profile.WriteString("\n")
|
||||
} else if nicDesc.Manual {
|
||||
routes4 := make([]netutils2.SRouteInfo, 0)
|
||||
routes6 := make([]netutils2.SRouteInfo, 0)
|
||||
routes4, routes6 = netutils2.AddNicRoutes(routes4, routes6, nicDesc, mainIp, mainIp6, nicCnt)
|
||||
|
||||
// manual interface
|
||||
if len(nicDesc.Ip) > 0 {
|
||||
profile.WriteString("[ipv4]\n")
|
||||
@@ -91,10 +89,20 @@ func nicDescToNetworkManager(nicDesc *types.SServerNic, mainIp string, mainIp6 s
|
||||
if len(nicDesc.Gateway) > 0 && nicDesc.Ip == mainIp {
|
||||
profile.WriteString(fmt.Sprintf("gateway=%s\n", nicDesc.Gateway))
|
||||
}
|
||||
// dns
|
||||
dnslist, _ := netutils2.GetNicDns(nicDesc)
|
||||
if len(dnslist) > 0 {
|
||||
profile.WriteString(fmt.Sprintf("dns=%s\n", strings.Join(dnslist, ",")))
|
||||
}
|
||||
// static routes
|
||||
for i := range routes4 {
|
||||
gwstr := routes4[i].Gateway.String()
|
||||
if gwstr == "0.0.0.0" {
|
||||
profile.WriteString(fmt.Sprintf("route%d=%s\n", i+1, routes4[i].SPrefixInfo.String()))
|
||||
} else {
|
||||
profile.WriteString(fmt.Sprintf("route%d=%s,%s\n", i+1, routes4[i].SPrefixInfo.String(), gwstr))
|
||||
}
|
||||
}
|
||||
profile.WriteString("\n")
|
||||
}
|
||||
if len(nicDesc.Ip6) > 0 {
|
||||
@@ -104,10 +112,20 @@ func nicDescToNetworkManager(nicDesc *types.SServerNic, mainIp string, mainIp6 s
|
||||
if len(nicDesc.Gateway6) > 0 && nicDesc.Ip6 == mainIp6 {
|
||||
profile.WriteString(fmt.Sprintf("gateway=%s\n", nicDesc.Gateway6))
|
||||
}
|
||||
// dns
|
||||
_, dns6list := netutils2.GetNicDns(nicDesc)
|
||||
if len(dns6list) > 0 {
|
||||
profile.WriteString(fmt.Sprintf("dns=%s\n", strings.Join(dns6list, ",")))
|
||||
}
|
||||
// static routes
|
||||
for i := range routes6 {
|
||||
gwstr := routes6[i].Gateway.String()
|
||||
if gwstr == "::" {
|
||||
profile.WriteString(fmt.Sprintf("route%d=%s\n", i+1, routes6[i].SPrefixInfo.String()))
|
||||
} else {
|
||||
profile.WriteString(fmt.Sprintf("route%d=%s,%s\n", i+1, routes6[i].SPrefixInfo.String(), gwstr))
|
||||
}
|
||||
}
|
||||
profile.WriteString("\n")
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -89,11 +89,13 @@ mac-address=00:22:0a:0b:0c:0d
|
||||
method=manual
|
||||
address1=192.168.1.100/24
|
||||
gateway=192.168.1.1
|
||||
route1=169.254.169.254/32
|
||||
|
||||
[ipv6]
|
||||
method=manual
|
||||
address1=2001:db8::200/64
|
||||
gateway=2001:db8::1
|
||||
route1=fd00:ec2::254/128
|
||||
|
||||
`,
|
||||
},
|
||||
@@ -220,7 +222,7 @@ method=disabled
|
||||
}
|
||||
|
||||
for _, c := range cases {
|
||||
got := nicDescToNetworkManager(c.nicDesc, c.mainIp, c.mainIp6)
|
||||
got := nicDescToNetworkManager(c.nicDesc, c.mainIp, c.mainIp6, 1)
|
||||
if got != c.want {
|
||||
t.Errorf("[[got]]\n%s\n[[want]]\n%s\n[[end]]", got, c.want)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user