From db2b447d5d2b082bf538d5caa056a22aac2a4254 Mon Sep 17 00:00:00 2001 From: Carlos Diaz-Padron Date: Mon, 28 Sep 2015 16:45:32 -0700 Subject: [PATCH] Parse Client config Options This adds Options to the agent ClientConfig and fixes the merging logic to include Options, as defined in the docs --- command/agent/agent.go | 1 + command/agent/config.go | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/command/agent/agent.go b/command/agent/agent.go index c05bc0ed9..38104ddcd 100644 --- a/command/agent/agent.go +++ b/command/agent/agent.go @@ -192,6 +192,7 @@ func (a *Agent) setupClient() error { conf.AllocDir = a.config.Client.AllocDir } conf.Servers = a.config.Client.Servers + conf.Options = a.config.Client.Options // Setup the node conf.Node = new(structs.Node) diff --git a/command/agent/config.go b/command/agent/config.go index c39aa0dcb..52cd7cfa3 100644 --- a/command/agent/config.go +++ b/command/agent/config.go @@ -137,6 +137,12 @@ type ClientConfig struct { // NodeClass is used to group the node by class NodeClass string `hcl:"node_class"` + // Options is used for configuration of nomad internals, + // like fingerprinters and drivers. The format is: + // + // namespace.option = value + Options map[string]string `hcl:"options"` + // Metadata associated with the node Meta map[string]string `hcl:"meta"` } @@ -388,6 +394,14 @@ func (a *ClientConfig) Merge(b *ClientConfig) *ClientConfig { // Add the servers result.Servers = append(result.Servers, b.Servers...) + // Add the options map values + if result.Options == nil { + result.Options = make(map[string]string) + } + for k, v := range b.Options { + result.Options[k] = v + } + // Add the meta map values if result.Meta == nil { result.Meta = make(map[string]string)