From 76275e857cc17ea0386049e5bcb3af12f79f4224 Mon Sep 17 00:00:00 2001 From: Dominic Wong Date: Fri, 25 Sep 2020 08:41:28 +0100 Subject: [PATCH] Fix branch names support for k8s runtime (#2020) * fix branch names support for k8s * remove logs Co-authored-by: Asim Aslam --- runtime/kubernetes/kubernetes.go | 5 ++--- util/kubernetes/client/util.go | 9 ++++++--- util/kubernetes/client/util_test.go | 2 ++ 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/runtime/kubernetes/kubernetes.go b/runtime/kubernetes/kubernetes.go index 348b28b6e3..7eca37ce88 100644 --- a/runtime/kubernetes/kubernetes.go +++ b/runtime/kubernetes/kubernetes.go @@ -211,7 +211,6 @@ func (k *kubernetes) getService(labels map[string]string, opts ...client.GetOpti // now try get a deeper status state := item.Status.Containers[0].State - // set start time if state.Running != nil { svc.Metadata["started"] = state.Running.Started @@ -484,7 +483,7 @@ func (k *kubernetes) Read(opts ...runtime.ReadOption) ([]*runtime.Service, error // add version to labels if a version has been supplied if len(options.Version) > 0 { - labels["version"] = options.Version + labels["version"] = client.Format(options.Version) } if len(options.Type) > 0 { @@ -521,7 +520,7 @@ func (k *kubernetes) Update(s *runtime.Service, opts ...runtime.UpdateOption) er } if len(s.Version) > 0 { - labels["version"] = s.Version + labels["version"] = client.Format(s.Version) } // get the existing service diff --git a/util/kubernetes/client/util.go b/util/kubernetes/client/util.go index 747ac9cb62..7482c31f9c 100644 --- a/util/kubernetes/client/util.go +++ b/util/kubernetes/client/util.go @@ -88,13 +88,16 @@ func CertsFromPEM(pemCerts []byte) ([]*x509.Certificate, error) { } // Format is used to format a string value into a k8s valid name +// https://kubernetes.io/docs/concepts/overview/working-with-objects/names/ func Format(v string) string { // to lower case v = strings.ToLower(v) // / to dashes - v = strings.ReplaceAll(v, "/", "-") - // dots to dashes - v = strings.ReplaceAll(v, ".", "-") + replaceChars := []string{"/", ".", "_"} + for _, s := range replaceChars { + v = strings.ReplaceAll(v, s, "-") + } + // limit to 253 chars if len(v) > 253 { v = v[:253] diff --git a/util/kubernetes/client/util_test.go b/util/kubernetes/client/util_test.go index 8073a049a0..b7282f2d0d 100644 --- a/util/kubernetes/client/util_test.go +++ b/util/kubernetes/client/util_test.go @@ -36,6 +36,8 @@ func TestFormatName(t *testing.T) { {"foo.bar", "foo-bar"}, {"Foo.Bar", "foo-bar"}, {"go.micro.foo.bar", "go-micro-foo-bar"}, + {"go.micro.foo.bar", "go-micro-foo-bar"}, + {"foo/bar_baz", "foo-bar-baz"}, } for _, test := range testCases {