Merge pull request #803 from Random-Liu/select-ipv4-first
Select ipv4 first if there is one.
This commit is contained in:
commit
db028fd208
@ -524,7 +524,7 @@ func (c *criService) setupPod(id string, path string, config *runtime.PodSandbox
|
|||||||
}
|
}
|
||||||
// Check if the default interface has IP config
|
// Check if the default interface has IP config
|
||||||
if configs, ok := result.Interfaces[defaultIfName]; ok && len(configs.IPConfigs) > 0 {
|
if configs, ok := result.Interfaces[defaultIfName]; ok && len(configs.IPConfigs) > 0 {
|
||||||
return configs.IPConfigs[0].IP.String(), nil
|
return selectPodIP(configs.IPConfigs), nil
|
||||||
}
|
}
|
||||||
// If it comes here then the result was invalid so destroy the pod network and return error
|
// If it comes here then the result was invalid so destroy the pod network and return error
|
||||||
if err := c.teardownPod(id, path, config); err != nil {
|
if err := c.teardownPod(id, path, config); err != nil {
|
||||||
@ -550,6 +550,16 @@ func toCNIPortMappings(criPortMappings []*runtime.PortMapping) []cni.PortMapping
|
|||||||
return portMappings
|
return portMappings
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// selectPodIP select an ip from the ip list. It prefers ipv4 more than ipv6.
|
||||||
|
func selectPodIP(ipConfigs []*cni.IPConfig) string {
|
||||||
|
for _, c := range ipConfigs {
|
||||||
|
if c.IP.To4() != nil {
|
||||||
|
return c.IP.String()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ipConfigs[0].IP.String()
|
||||||
|
}
|
||||||
|
|
||||||
// untrustedWorkload returns true if the sandbox contains untrusted workload.
|
// untrustedWorkload returns true if the sandbox contains untrusted workload.
|
||||||
func untrustedWorkload(config *runtime.PodSandboxConfig) bool {
|
func untrustedWorkload(config *runtime.PodSandboxConfig) bool {
|
||||||
return config.GetAnnotations()[annotations.UntrustedWorkload] == "true"
|
return config.GetAnnotations()[annotations.UntrustedWorkload] == "true"
|
||||||
|
@ -17,6 +17,7 @@ limitations under the License.
|
|||||||
package server
|
package server
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"net"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"testing"
|
"testing"
|
||||||
@ -407,6 +408,31 @@ func TestToCNIPortMappings(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestSelectPodIP(t *testing.T) {
|
||||||
|
for desc, test := range map[string]struct {
|
||||||
|
ips []string
|
||||||
|
expected string
|
||||||
|
}{
|
||||||
|
"ipv4 should be picked even if ipv6 comes first": {
|
||||||
|
ips: []string{"2001:db8:85a3::8a2e:370:7334", "192.168.17.43"},
|
||||||
|
expected: "192.168.17.43",
|
||||||
|
},
|
||||||
|
"ipv6 should be picked when there is no ipv4": {
|
||||||
|
ips: []string{"2001:db8:85a3::8a2e:370:7334"},
|
||||||
|
expected: "2001:db8:85a3::8a2e:370:7334",
|
||||||
|
},
|
||||||
|
} {
|
||||||
|
t.Logf("TestCase %q", desc)
|
||||||
|
var ipConfigs []*cni.IPConfig
|
||||||
|
for _, ip := range test.ips {
|
||||||
|
ipConfigs = append(ipConfigs, &cni.IPConfig{
|
||||||
|
IP: net.ParseIP(ip),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
assert.Equal(t, test.expected, selectPodIP(ipConfigs))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestTypeurlMarshalUnmarshalSandboxMeta(t *testing.T) {
|
func TestTypeurlMarshalUnmarshalSandboxMeta(t *testing.T) {
|
||||||
for desc, test := range map[string]struct {
|
for desc, test := range map[string]struct {
|
||||||
configChange func(*runtime.PodSandboxConfig)
|
configChange func(*runtime.PodSandboxConfig)
|
||||||
|
Loading…
Reference in New Issue
Block a user