diff --git a/pkg/kubelet/config/BUILD b/pkg/kubelet/config/BUILD index 47b675d7321..3f88dbf7248 100644 --- a/pkg/kubelet/config/BUILD +++ b/pkg/kubelet/config/BUILD @@ -107,6 +107,7 @@ go_test( "//pkg/apis/core/validation:go_default_library", "//pkg/kubelet/types:go_default_library", "//pkg/securitycontext:go_default_library", + "//vendor/github.com/stretchr/testify/assert:go_default_library", "//vendor/k8s.io/api/core/v1:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", diff --git a/pkg/kubelet/config/common.go b/pkg/kubelet/config/common.go index 02a4f476126..1f45349d0c1 100644 --- a/pkg/kubelet/config/common.go +++ b/pkg/kubelet/config/common.go @@ -21,6 +21,7 @@ import ( "crypto/md5" "encoding/hex" "fmt" + "strings" "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -44,7 +45,7 @@ import ( // Generate a pod name that is unique among nodes by appending the nodeName. func generatePodName(name string, nodeName types.NodeName) string { - return fmt.Sprintf("%s-%s", name, nodeName) + return fmt.Sprintf("%s-%s", name, strings.ToLower(string(nodeName))) } func applyDefaults(pod *api.Pod, source string, isFile bool, nodeName types.NodeName) error { diff --git a/pkg/kubelet/config/common_test.go b/pkg/kubelet/config/common_test.go index 9dd694669f1..45173491863 100644 --- a/pkg/kubelet/config/common_test.go +++ b/pkg/kubelet/config/common_test.go @@ -20,12 +20,17 @@ import ( "reflect" "testing" + "github.com/stretchr/testify/assert" + "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/types" "k8s.io/kubernetes/pkg/api/legacyscheme" "k8s.io/kubernetes/pkg/api/testapi" + "k8s.io/kubernetes/pkg/apis/core" api "k8s.io/kubernetes/pkg/apis/core" + "k8s.io/kubernetes/pkg/apis/core/validation" "k8s.io/kubernetes/pkg/securitycontext" ) @@ -189,3 +194,59 @@ func TestGetSelfLink(t *testing.T) { } } } + +func TestStaticPodNameGenerate(t *testing.T) { + testCases := []struct { + nodeName types.NodeName + podName string + expected string + overwrite string + shouldErr bool + }{ + { + "node1", + "static-pod1", + "static-pod1-node1", + "", + false, + }, + { + "Node1", + "static-pod1", + "static-pod1-node1", + "", + false, + }, + { + "NODE1", + "static-pod1", + "static-pod1-node1", + "static-pod1-NODE1", + true, + }, + } + for _, c := range testCases { + assert.Equal(t, c.expected, generatePodName(c.podName, c.nodeName), "wrong pod name generated") + pod := &core.Pod{} + pod.Name = c.podName + if c.overwrite != "" { + pod.Name = c.overwrite + } + errs := validation.ValidatePod(pod) + if c.shouldErr { + specNameErrored := false + for _, err := range errs { + if err.Field == "metadata.name" { + specNameErrored = true + } + } + assert.NotEmpty(t, specNameErrored, "expecting error") + } else { + for _, err := range errs { + if err.Field == "metadata.name" { + t.Fail() + } + } + } + } +}