kubelet/envvars: Adding brackets to IPv6 addresses

Signed-off-by: André Martins <aanm90@gmail.com>
This commit is contained in:
André Martins 2017-02-16 06:55:25 +00:00
parent 8c188b2bce
commit 1c6a978f00
2 changed files with 30 additions and 2 deletions

View File

@ -18,6 +18,7 @@ package envvars
import (
"fmt"
"net"
"strconv"
"strings"
@ -78,18 +79,21 @@ func makeLinkVariables(service *v1.Service) []v1.EnvVar {
if sp.Protocol != "" {
protocol = string(sp.Protocol)
}
hostPort := net.JoinHostPort(service.Spec.ClusterIP, strconv.Itoa(int(sp.Port)))
if i == 0 {
// Docker special-cases the first port.
all = append(all, v1.EnvVar{
Name: prefix + "_PORT",
Value: fmt.Sprintf("%s://%s:%d", strings.ToLower(protocol), service.Spec.ClusterIP, sp.Port),
Value: fmt.Sprintf("%s://%s", strings.ToLower(protocol), hostPort),
})
}
portPrefix := fmt.Sprintf("%s_PORT_%d_%s", prefix, sp.Port, strings.ToUpper(protocol))
all = append(all, []v1.EnvVar{
{
Name: portPrefix,
Value: fmt.Sprintf("%s://%s:%d", strings.ToLower(protocol), service.Spec.ClusterIP, sp.Port),
Value: fmt.Sprintf("%s://%s", strings.ToLower(protocol), hostPort),
},
{
Name: portPrefix + "_PROTO",

View File

@ -79,6 +79,17 @@ func TestFromServices(t *testing.T) {
},
},
},
{
ObjectMeta: metav1.ObjectMeta{Name: "super-ipv6"},
Spec: v1.ServiceSpec{
Selector: map[string]string{"bar": "baz"},
ClusterIP: "2001:DB8::",
Ports: []v1.ServicePort{
{Name: "u-d-p", Port: 8084, Protocol: "UDP"},
{Name: "t-c-p", Port: 8084, Protocol: "TCP"},
},
},
},
}
vars := envvars.FromServices(sl)
expected := []v1.EnvVar{
@ -114,6 +125,19 @@ func TestFromServices(t *testing.T) {
{Name: "Q_U_U_X_PORT_8083_TCP_PROTO", Value: "tcp"},
{Name: "Q_U_U_X_PORT_8083_TCP_PORT", Value: "8083"},
{Name: "Q_U_U_X_PORT_8083_TCP_ADDR", Value: "9.8.7.6"},
{Name: "SUPER_IPV6_SERVICE_HOST", Value: "2001:DB8::"},
{Name: "SUPER_IPV6_SERVICE_PORT", Value: "8084"},
{Name: "SUPER_IPV6_SERVICE_PORT_U_D_P", Value: "8084"},
{Name: "SUPER_IPV6_SERVICE_PORT_T_C_P", Value: "8084"},
{Name: "SUPER_IPV6_PORT", Value: "udp://[2001:DB8::]:8084"},
{Name: "SUPER_IPV6_PORT_8084_UDP", Value: "udp://[2001:DB8::]:8084"},
{Name: "SUPER_IPV6_PORT_8084_UDP_PROTO", Value: "udp"},
{Name: "SUPER_IPV6_PORT_8084_UDP_PORT", Value: "8084"},
{Name: "SUPER_IPV6_PORT_8084_UDP_ADDR", Value: "2001:DB8::"},
{Name: "SUPER_IPV6_PORT_8084_TCP", Value: "tcp://[2001:DB8::]:8084"},
{Name: "SUPER_IPV6_PORT_8084_TCP_PROTO", Value: "tcp"},
{Name: "SUPER_IPV6_PORT_8084_TCP_PORT", Value: "8084"},
{Name: "SUPER_IPV6_PORT_8084_TCP_ADDR", Value: "2001:DB8::"},
}
if len(vars) != len(expected) {
t.Errorf("Expected %d env vars, got: %+v", len(expected), vars)