Rework client/fingerprint/fingerprint.go to use a slice and enforce ordering

This commit is contained in:
Clint Shryock 2015-09-22 14:23:48 -05:00
parent d11bd582f7
commit f048326300
1 changed files with 23 additions and 9 deletions

View File

@ -8,21 +8,35 @@ import (
"github.com/hashicorp/nomad/nomad/structs"
)
// BuiltinFingerprints contains the built in registered fingerprints
// which are available
var BuiltinFingerprints = map[string]Factory{
"arch": NewArchFingerprint,
"cpu": NewCPUFingerprint,
"host": NewHostFingerprint,
"memory": NewMemoryFingerprint,
"storage": NewStorageFingerprint,
// BuiltinFingerprints is a slice containing the key names of all regestered
// fingerprints available, to provided an ordered iteration
var BuiltinFingerprints = []string{
"arch",
"cpu",
"host",
"memory",
"storage",
"unix_network",
"aws_network",
}
// builtinFingerprintMap contains the built in registered fingerprints
// which are available, corresponding to a key found in BuiltinFingerprints
var builtinFingerprintMap = map[string]Factory{
"arch": NewArchFingerprint,
"cpu": NewCPUFingerprint,
"host": NewHostFingerprint,
"memory": NewMemoryFingerprint,
"storage": NewStorageFingerprint,
"unix_network": NewUnixNetworkFingerprinter,
"aws_network": NewAWSNetworkFingerprinter,
}
// NewFingerprint is used to instantiate and return a new fingerprint
// given the name and a logger
func NewFingerprint(name string, logger *log.Logger) (Fingerprint, error) {
// Lookup the factory function
factory, ok := BuiltinFingerprints[name]
factory, ok := builtinFingerprintMap[name]
if !ok {
return nil, fmt.Errorf("unknown fingerprint '%s'", name)
}