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  }