github.com/rochacon/deis@v1.0.2-0.20150903015341-6839b592a1ff/mesos/pkg/fleet/machine.go (about) 1 package fleet 2 3 import ( 4 "errors" 5 "strings" 6 7 "github.com/coreos/fleet/machine" 8 ) 9 10 func hasMetadata(ms machine.MachineState, metadata map[string][]string) bool { 11 for k, v := range metadata { 12 for _, s := range v { 13 if ms.Metadata[k] == s { 14 return true 15 } 16 } 17 } 18 return false 19 } 20 21 // ParseMetadata parses a string that could contain a comma-delimited key/value 22 // pairs published in the fleet registry returning an equivalen map to represent 23 // the same structure 24 func ParseMetadata(rawMetadata string) (map[string][]string, error) { 25 metadataList := strings.Split(rawMetadata, ",") 26 metadata := make(map[string][]string) 27 for _, kv := range metadataList { 28 i := strings.Index(kv, "=") 29 if i > 0 { 30 if _, ok := metadata[kv[:i]]; !ok { 31 metadata[kv[:i]] = []string{} 32 } 33 metadata[kv[:i]] = append(metadata[kv[:i]], kv[i+1:]) 34 } else { 35 return nil, errors.New("invalid key/value pair " + kv) 36 } 37 } 38 return metadata, nil 39 }