github.com/kubernetes-incubator/kube-aws@v0.16.4/pkg/api/feature_gates.go (about) 1 package api 2 3 import ( 4 "fmt" 5 "sort" 6 "strconv" 7 "strings" 8 9 yaml "gopkg.in/yaml.v2" 10 ) 11 12 type FeatureGates map[string]string 13 14 func (l FeatureGates) Enabled() bool { 15 return len(l) > 0 16 } 17 18 // Returns key=value pairs separated by ',' to be passed to kubelet's `--feature-gates` flag 19 func (l FeatureGates) String() string { 20 labels := []string{} 21 keys := []string{} 22 for k, _ := range l { 23 keys = append(keys, k) 24 } 25 sort.Strings(keys) 26 for _, k := range keys { 27 v := l[k] 28 if len(v) > 0 { 29 labels = append(labels, fmt.Sprintf("%s=%s", k, v)) 30 } else { 31 labels = append(labels, fmt.Sprintf("%s", k)) 32 } 33 } 34 return strings.Join(labels, ",") 35 } 36 37 // Convert the map[string]string FeatureGates to a map[string]bool yaml representation 38 func (l FeatureGates) Yaml() (string, error) { 39 outmap := make(map[string]bool) 40 var err error 41 for k, v := range l { 42 outmap[k], err = strconv.ParseBool(v) 43 if err != nil { 44 return "", err 45 } 46 } 47 out, err := yaml.Marshal(&outmap) 48 return string(out), err 49 }