-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathmachine.go
More file actions
39 lines (35 loc) · 944 Bytes
/
machine.go
File metadata and controls
39 lines (35 loc) · 944 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package fleet
import (
"errors"
"strings"
"github.com/coreos/fleet/machine"
)
func hasMetadata(ms machine.MachineState, metadata map[string][]string) bool {
for k, v := range metadata {
for _, s := range v {
if ms.Metadata[k] == s {
return true
}
}
}
return false
}
// ParseMetadata parses a string that could contain a comma-delimited key/value
// pairs published in the fleet registry returning an equivalen map to represent
// the same structure
func ParseMetadata(rawMetadata string) (map[string][]string, error) {
metadataList := strings.Split(rawMetadata, ",")
metadata := make(map[string][]string)
for _, kv := range metadataList {
i := strings.Index(kv, "=")
if i > 0 {
if _, ok := metadata[kv[:i]]; !ok {
metadata[kv[:i]] = []string{}
}
metadata[kv[:i]] = append(metadata[kv[:i]], kv[i+1:])
} else {
return nil, errors.New("invalid key/value pair " + kv)
}
}
return metadata, nil
}