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  }