From fbdeff5d4b31d9aec69bf2bd1d79c4cd6817d2cd Mon Sep 17 00:00:00 2001 From: Sandeep Rajan Date: Tue, 27 Feb 2018 19:33:15 -0500 Subject: [PATCH] Code Cleanup --- cmd/kubeadm/app/phases/addons/dns/dns.go | 48 +++++------ cmd/kubeadm/app/phases/addons/dns/dns_test.go | 80 +++++++++---------- .../app/phases/addons/dns/manifests.go | 2 +- 3 files changed, 63 insertions(+), 67 deletions(-) diff --git a/cmd/kubeadm/app/phases/addons/dns/dns.go b/cmd/kubeadm/app/phases/addons/dns/dns.go index 744aed84bff..f7fc2cba5aa 100644 --- a/cmd/kubeadm/app/phases/addons/dns/dns.go +++ b/cmd/kubeadm/app/phases/addons/dns/dns.go @@ -46,7 +46,6 @@ const ( kubeDNSStubDomain = "stubDomains" kubeDNSUpstreamNameservers = "upstreamNameservers" kubeDNSFederation = "federations" - coreDNSStanzaFormat = "\n " ) // EnsureDNSAddon creates the kube-dns or CoreDNS addon @@ -281,24 +280,20 @@ func createDNSService(dnsService *v1.Service, serviceBytes []byte, client client func translateStubDomainOfKubeDNSToProxyCoreDNS(dataField string, kubeDNSConfigMap *v1.ConfigMap) (string, error) { if proxy, ok := kubeDNSConfigMap.Data[dataField]; ok { stubDomainData := make(map[string][]string) - var proxyStanzaList string - err := json.Unmarshal([]byte(proxy), &stubDomainData) if err != nil { return "", fmt.Errorf("failed to parse JSON from 'kube-dns ConfigMap: %v", err) } - var proxyStanza []interface{} + var proxyStanza []interface{} for domain, proxyIP := range stubDomainData { - strings.Join(proxyIP, " ") pStanza := map[string]interface{}{} pStanza["keys"] = []string{domain + ":53"} pStanza["body"] = [][]string{ {"errors"}, {"cache", "30"}, - {"proxy", ".", strings.Join(proxyIP, " ")}, + append([]string{"proxy", "."}, proxyIP...), } - proxyStanza = append(proxyStanza, pStanza) } stanzasBytes, err := json.Marshal(proxyStanza) @@ -306,15 +301,12 @@ func translateStubDomainOfKubeDNSToProxyCoreDNS(dataField string, kubeDNSConfigM return "", err } - outputJSON, err := caddyfile.FromJSON(stanzasBytes) + corefileStanza, err := caddyfile.FromJSON(stanzasBytes) if err != nil { return "", err } - // This is required to format the Corefile, otherwise errors due to bad yaml format. - output := strings.NewReplacer("\n\t", "\n ", "\"", "", "\n}", "\n }", "\n\n", "\n ").Replace(string(outputJSON)) - proxyStanzaList = coreDNSStanzaFormat + output + coreDNSStanzaFormat - return proxyStanzaList, nil + return prepCorefileFormat(string(corefileStanza), 4), nil } return "", nil } @@ -342,7 +334,7 @@ func translateFederationsofKubeDNSToCoreDNS(dataField, coreDNSDomain string, kub if federation, ok := kubeDNSConfigMap.Data[dataField]; ok { var ( federationStanza []interface{} - fData []string + body [][]string ) federationData := make(map[string]string) @@ -350,33 +342,37 @@ func translateFederationsofKubeDNSToCoreDNS(dataField, coreDNSDomain string, kub if err != nil { return "", fmt.Errorf("failed to parse JSON from kube-dns ConfigMap: %v", err) } + fStanza := map[string]interface{}{} for name, domain := range federationData { - fData = append(fData, name+" "+domain) - } - fStanza := map[string]interface{}{} - fStanza["body"] = [][]string{ - {strings.Join(fData, "\n ")}, + body = append(body, []string{name, domain}) } federationStanza = append(federationStanza, fStanza) fStanza["keys"] = []string{"federation " + coreDNSDomain} - + fStanza["body"] = body stanzasBytes, err := json.Marshal(federationStanza) if err != nil { return "", err } - outputJSON, err := caddyfile.FromJSON(stanzasBytes) + corefileStanza, err := caddyfile.FromJSON(stanzasBytes) if err != nil { return "", err } - // This is required to format the Corefile, otherwise errors due to bad yaml format. - output := strings.NewReplacer("\n\t", "\n ", "\"", "", "\n}", "\n }").Replace(string(outputJSON)) - federationStanzaList := coreDNSStanzaFormat + output - - return federationStanzaList, nil - + return prepCorefileFormat(string(corefileStanza), 8), nil } return "", nil } + +// prepCorefileFormat indents the output of the Corefile caddytext and replaces tabs with spaces +// to neatly format the configmap, making it readable. +func prepCorefileFormat(s string, indentation int) string { + r := []string{} + for _, line := range strings.Split(s, "\n") { + indented := strings.Repeat(" ", indentation) + line + r = append(r, indented) + } + corefile := strings.Join(r, "\n") + return "\n" + strings.Replace(corefile, "\t", " ", -1) +} diff --git a/cmd/kubeadm/app/phases/addons/dns/dns_test.go b/cmd/kubeadm/app/phases/addons/dns/dns_test.go index db84e594fd3..2233bf182d0 100644 --- a/cmd/kubeadm/app/phases/addons/dns/dns_test.go +++ b/cmd/kubeadm/app/phases/addons/dns/dns_test.go @@ -201,28 +201,28 @@ func TestTranslateStubDomainKubeDNSToCoreDNS(t *testing.T) { expectOne: ` foo.com:53 { - errors - cache 30 - proxy . 1.2.3.4:5300 3.3.3.3 + errors + cache 30 + proxy . 1.2.3.4:5300 3.3.3.3 } + my.cluster.local:53 { - errors - cache 30 - proxy . 2.3.4.5 - } - `, + errors + cache 30 + proxy . 2.3.4.5 + }`, expectTwo: ` my.cluster.local:53 { - errors - cache 30 - proxy . 2.3.4.5 + errors + cache 30 + proxy . 2.3.4.5 } + foo.com:53 { - errors - cache 30 - proxy . 1.2.3.4:5300 3.3.3.3 - } - `, + errors + cache 30 + proxy . 1.2.3.4:5300 3.3.3.3 + }`, }, { configMap: &v1.ConfigMap{ @@ -248,28 +248,28 @@ func TestTranslateStubDomainKubeDNSToCoreDNS(t *testing.T) { expectOne: ` foo.com:53 { - errors - cache 30 - proxy . 1.2.3.4:5300 + errors + cache 30 + proxy . 1.2.3.4:5300 } + my.cluster.local:53 { - errors - cache 30 - proxy . 2.3.4.5 - } - `, + errors + cache 30 + proxy . 2.3.4.5 + }`, expectTwo: ` my.cluster.local:53 { - errors - cache 30 - proxy . 2.3.4.5 + errors + cache 30 + proxy . 2.3.4.5 } + foo.com:53 { - errors - cache 30 - proxy . 1.2.3.4:5300 - } - `, + errors + cache 30 + proxy . 1.2.3.4:5300 + }`, }, { configMap: &v1.ConfigMap{ @@ -370,15 +370,15 @@ func TestTranslateFederationKubeDNSToCoreDNS(t *testing.T) { }, expectOne: ` - federation cluster.local { - foo foo.feddomain.com - bar bar.feddomain.com - }`, + federation cluster.local { + foo foo.feddomain.com + bar bar.feddomain.com + }`, expectTwo: ` - federation cluster.local { - bar bar.feddomain.com - foo foo.feddomain.com - }`, + federation cluster.local { + bar bar.feddomain.com + foo foo.feddomain.com + }`, }, { configMap: &v1.ConfigMap{ diff --git a/cmd/kubeadm/app/phases/addons/dns/manifests.go b/cmd/kubeadm/app/phases/addons/dns/manifests.go index 26c8878afa6..3289e27f605 100644 --- a/cmd/kubeadm/app/phases/addons/dns/manifests.go +++ b/cmd/kubeadm/app/phases/addons/dns/manifests.go @@ -309,7 +309,7 @@ data: health kubernetes {{ .DNSDomain }} in-addr.arpa ip6.arpa { pods insecure - upstream + upstream fallthrough in-addr.arpa ip6.arpa }{{ .Federation }} prometheus :9153