Stop sorting downward api file lines

This commit is contained in:
Jordan Liggitt 2018-07-09 15:44:03 -04:00
parent f70410959d
commit 3f09fecbe0
No known key found for this signature in database
GPG Key ID: 39928704103C7229
4 changed files with 16 additions and 18 deletions

View File

@ -15,6 +15,7 @@ go_library(
importpath = "k8s.io/kubernetes/pkg/fieldpath", importpath = "k8s.io/kubernetes/pkg/fieldpath",
deps = [ deps = [
"//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/validation:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/validation:go_default_library",
], ],
) )

View File

@ -21,13 +21,19 @@ import (
"strings" "strings"
"k8s.io/apimachinery/pkg/api/meta" "k8s.io/apimachinery/pkg/api/meta"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/apimachinery/pkg/util/validation" "k8s.io/apimachinery/pkg/util/validation"
) )
// FormatMap formats map[string]string to a string. // FormatMap formats map[string]string to a string.
func FormatMap(m map[string]string) (fmtStr string) { func FormatMap(m map[string]string) (fmtStr string) {
for key, value := range m { // output with keys in sorted order to provide stable output
fmtStr += fmt.Sprintf("%v=%q\n", key, value) keys := sets.NewString()
for key := range m {
keys.Insert(key)
}
for _, key := range keys.List() {
fmtStr += fmt.Sprintf("%v=%q\n", key, m[key])
} }
fmtStr = strings.TrimSuffix(fmtStr, "\n") fmtStr = strings.TrimSuffix(fmtStr, "\n")

View File

@ -20,8 +20,6 @@ import (
"fmt" "fmt"
"path" "path"
"path/filepath" "path/filepath"
"sort"
"strings"
"k8s.io/api/core/v1" "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/types"
@ -244,7 +242,7 @@ func CollectData(items []v1.DownwardAPIVolumeFile, pod *v1.Pod, host volume.Volu
glog.Errorf("Unable to extract field %s: %s", fileInfo.FieldRef.FieldPath, err.Error()) glog.Errorf("Unable to extract field %s: %s", fileInfo.FieldRef.FieldPath, err.Error())
errlist = append(errlist, err) errlist = append(errlist, err)
} else { } else {
fileProjection.Data = []byte(sortLines(values)) fileProjection.Data = []byte(values)
} }
} else if fileInfo.ResourceFieldRef != nil { } else if fileInfo.ResourceFieldRef != nil {
containerName := fileInfo.ResourceFieldRef.ContainerName containerName := fileInfo.ResourceFieldRef.ContainerName
@ -255,7 +253,7 @@ func CollectData(items []v1.DownwardAPIVolumeFile, pod *v1.Pod, host volume.Volu
glog.Errorf("Unable to extract field %s: %s", fileInfo.ResourceFieldRef.Resource, err.Error()) glog.Errorf("Unable to extract field %s: %s", fileInfo.ResourceFieldRef.Resource, err.Error())
errlist = append(errlist, err) errlist = append(errlist, err)
} else { } else {
fileProjection.Data = []byte(sortLines(values)) fileProjection.Data = []byte(values)
} }
} }
@ -264,14 +262,6 @@ func CollectData(items []v1.DownwardAPIVolumeFile, pod *v1.Pod, host volume.Volu
return data, utilerrors.NewAggregate(errlist) return data, utilerrors.NewAggregate(errlist)
} }
// sortLines sorts the strings generated from map based data
// (annotations and labels)
func sortLines(values string) string {
splitted := strings.Split(values, "\n")
sort.Strings(splitted)
return strings.Join(splitted, "\n")
}
func (d *downwardAPIVolume) GetPath() string { func (d *downwardAPIVolume) GetPath() string {
return d.plugin.host.GetPodVolumeDir(d.podUID, utilstrings.EscapeQualifiedNameForDisk(downwardAPIPluginName), d.volName) return d.plugin.host.GetPodVolumeDir(d.podUID, utilstrings.EscapeQualifiedNameForDisk(downwardAPIPluginName), d.volName)
} }

View File

@ -84,6 +84,7 @@ func TestDownwardAPI(t *testing.T) {
annotations := map[string]string{ annotations := map[string]string{
"a1": "value1", "a1": "value1",
"a2": "value2", "a2": "value2",
"multiline": "c\nb\na",
} }
testCases := []struct { testCases := []struct {
name string name string
@ -318,8 +319,8 @@ func doVerifyLinesInFile(t *testing.T, volumePath, filename string, expected str
t.Errorf(err.Error()) t.Errorf(err.Error())
return return
} }
actualStr := sortLines(string(data)) actualStr := string(data)
expectedStr := sortLines(expected) expectedStr := expected
if actualStr != expectedStr { if actualStr != expectedStr {
t.Errorf("Found `%s`, expected `%s`", actualStr, expectedStr) t.Errorf("Found `%s`, expected `%s`", actualStr, expectedStr)
} }