github.com/caos/orbos@v1.5.14-0.20221103111702-e6cd0cea7ad4/pkg/labels/labels.go (about) 1 package labels 2 3 import ( 4 "gopkg.in/yaml.v3" 5 ) 6 7 type Labels interface { 8 comparable 9 yaml.Marshaler 10 yaml.Unmarshaler 11 // Major() int8 12 } 13 14 type IDLabels interface { 15 Labels 16 Name() string 17 } 18 19 type comparable interface { 20 Equal(comparable) bool 21 } 22 23 func K8sMap(l Labels) (map[string]string, error) { 24 return toMapOfStrings(l) 25 } 26 27 func MustK8sMap(l Labels) map[string]string { 28 m, err := K8sMap(l) 29 if err != nil { 30 panic(err) 31 } 32 return m 33 } 34 35 func toMapOfStrings(sth interface{}) (map[string]string, error) { 36 someBytes, err := yaml.Marshal(sth) 37 if err != nil { 38 return nil, err 39 } 40 mapOfStrings := make(map[string]string) 41 return mapOfStrings, yaml.Unmarshal(someBytes, mapOfStrings) 42 }