Skip to content

Commit

Permalink
Merge pull request #965 from hashicorp/f-nomad-fingerprinter
Browse files Browse the repository at this point in the history
client: add nomad fingerprinter
  • Loading branch information
dadgar committed Mar 23, 2016
2 parents 0872c8e + b818379 commit 2417f53
Show file tree
Hide file tree
Showing 6 changed files with 70 additions and 4 deletions.
3 changes: 3 additions & 0 deletions client/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,9 @@ type Config struct {

// Version is the version of the Nomad client
Version string

// Revision is the commit number of the Nomad client
Revision string
}

func (c *Config) Copy() *Config {
Expand Down
4 changes: 3 additions & 1 deletion client/fingerprint/fingerprint.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ var BuiltinFingerprints = []string{
"host",
"memory",
"network",
"nomad",
"storage",
}

Expand All @@ -38,7 +39,8 @@ var builtinFingerprintMap = map[string]Factory{
"env_gce": NewEnvGCEFingerprint,
"host": NewHostFingerprint,
"memory": NewMemoryFingerprint,
"network": NewNetworkFingerprinter,
"network": NewNetworkFingerprint,
"nomad": NewNomadFingerprint,
"storage": NewStorageFingerprint,
}

Expand Down
4 changes: 2 additions & 2 deletions client/fingerprint/network.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,9 @@ func (b *DefaultNetworkInterfaceDetector) Addrs(intf *net.Interface) ([]net.Addr
return intf.Addrs()
}

// NewNetworkFingerprinter returns a new NetworkFingerprinter with the given
// NewNetworkFingerprint returns a new NetworkFingerprinter with the given
// logger
func NewNetworkFingerprinter(logger *log.Logger) Fingerprint {
func NewNetworkFingerprint(logger *log.Logger) Fingerprint {
f := &NetworkFingerprint{logger: logger, interfaceDetector: &DefaultNetworkInterfaceDetector{}}
return f
}
Expand Down
26 changes: 26 additions & 0 deletions client/fingerprint/nomad.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package fingerprint

import (
"log"

client "github.com/hashicorp/nomad/client/config"
"github.com/hashicorp/nomad/nomad/structs"
)

// NomadFingerprint is used to fingerprint the Nomad version
type NomadFingerprint struct {
StaticFingerprinter
logger *log.Logger
}

// NewNomadFingerprint is used to create a Nomad fingerprint
func NewNomadFingerprint(logger *log.Logger) Fingerprint {
f := &NomadFingerprint{logger: logger}
return f
}

func (f *NomadFingerprint) Fingerprint(config *client.Config, node *structs.Node) (bool, error) {
node.Attributes["nomad.version"] = config.Version
node.Attributes["nomad.revision"] = config.Revision
return true, nil
}
34 changes: 34 additions & 0 deletions client/fingerprint/nomad_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package fingerprint

import (
"testing"

"github.com/hashicorp/nomad/client/config"
"github.com/hashicorp/nomad/nomad/structs"
)

func TestNomadFingerprint(t *testing.T) {
f := NewNomadFingerprint(testLogger())
node := &structs.Node{
Attributes: make(map[string]string),
}
v := "foo"
r := "123"
c := &config.Config{
Version: v,
Revision: r,
}
ok, err := f.Fingerprint(c, node)
if err != nil {
t.Fatalf("err: %v", err)
}
if !ok {
t.Fatalf("should apply")
}
if node.Attributes["nomad.version"] != v {
t.Fatalf("incorrect version")
}
if node.Attributes["nomad.revision"] != r {
t.Fatalf("incorrect revision")
}
}
3 changes: 2 additions & 1 deletion command/agent/agent.go
Original file line number Diff line number Diff line change
Expand Up @@ -265,7 +265,8 @@ func (a *Agent) clientConfig() (*clientconfig.Config, error) {
r.IOPS = a.config.Client.Reserved.IOPS
conf.GloballyReservedPorts = a.config.Client.Reserved.ParsedReservedPorts

conf.Version = a.config.Version
conf.Version = fmt.Sprintf("%s%s", a.config.Version, a.config.VersionPrerelease)
conf.Revision = a.config.Revision

return conf, nil
}
Expand Down

0 comments on commit 2417f53

Please sign in to comment.