diff --git a/command/agent/command.go b/command/agent/command.go
index 480534589..b65602193 100644
--- a/command/agent/command.go
+++ b/command/agent/command.go
@@ -87,6 +87,7 @@ func (c *Command) readConfig() *Config {
cmdFlags.StringVar(&cmdConfig.AtlasInfrastructure, "atlas", "", "infrastructure name in Atlas")
cmdFlags.StringVar(&cmdConfig.AtlasToken, "atlas-token", "", "authentication token for Atlas")
cmdFlags.BoolVar(&cmdConfig.AtlasJoin, "atlas-join", false, "auto-join with Atlas")
+ cmdFlags.StringVar(&cmdConfig.AtlasEndpoint, "atlas-endpoint", "", "endpoint for Atlas integration")
cmdFlags.IntVar(&cmdConfig.Protocol, "protocol", -1, "protocol version")
@@ -962,6 +963,7 @@ Options:
-atlas=org/name Sets the Atlas infrastructure name, enables SCADA.
-atlas-join Enables auto-joining the Atlas cluster
-atlas-token=token Provides the Atlas API token
+ -atlas-endpoint=1.2.3.4 The address of the endpoint for Atlas integration.
-bootstrap Sets server to bootstrap mode
-bind=0.0.0.0 Sets the bind address for cluster communication
-bootstrap-expect=0 Sets server to expect bootstrap mode.
diff --git a/command/agent/config.go b/command/agent/config.go
index 5b3357a34..f0aba4247 100644
--- a/command/agent/config.go
+++ b/command/agent/config.go
@@ -363,6 +363,10 @@ type Config struct {
// to it's cluster. Requires Atlas integration.
AtlasJoin bool `mapstructure:"atlas_join"`
+ // AtlasEndpoint is the SCADA endpoint used for Atlas integration. If
+ // empty, the defaults from the provider are used.
+ AtlasEndpoint string `mapstructure:"atlas_endpoint"`
+
// AEInterval controls the anti-entropy interval. This is how often
// the agent attempts to reconcile it's local state with the server'
// representation of our state. Defaults to every 60s.
@@ -1056,6 +1060,9 @@ func MergeConfig(a, b *Config) *Config {
if b.AtlasJoin {
result.AtlasJoin = true
}
+ if b.AtlasEndpoint != "" {
+ result.AtlasEndpoint = b.AtlasEndpoint
+ }
if b.SessionTTLMinRaw != "" {
result.SessionTTLMin = b.SessionTTLMin
result.SessionTTLMinRaw = b.SessionTTLMinRaw
diff --git a/command/agent/config_test.go b/command/agent/config_test.go
index ed2a2921e..37e0cf27d 100644
--- a/command/agent/config_test.go
+++ b/command/agent/config_test.go
@@ -706,7 +706,13 @@ func TestDecodeConfig(t *testing.T) {
}
// Atlas configs
- input = `{"atlas_infrastructure": "hashicorp/prod", "atlas_token": "abcdefg", "atlas_acl_token": "123456789", "atlas_join": true}`
+ input = `{
+ "atlas_infrastructure": "hashicorp/prod",
+ "atlas_token": "abcdefg",
+ "atlas_acl_token": "123456789",
+ "atlas_join": true,
+ "atlas_endpoint": "foo.bar:1111"
+}`
config, err = DecodeConfig(bytes.NewReader([]byte(input)))
if err != nil {
t.Fatalf("err: %s", err)
@@ -724,6 +730,9 @@ func TestDecodeConfig(t *testing.T) {
if !config.AtlasJoin {
t.Fatalf("bad: %#v", config)
}
+ if config.AtlasEndpoint != "foo.bar:1111" {
+ t.Fatalf("bad: %#v", config)
+ }
// SessionTTLMin
input = `{"session_ttl_min": "5s"}`
diff --git a/command/agent/scada.go b/command/agent/scada.go
index 2fd3d543d..7cd69e023 100644
--- a/command/agent/scada.go
+++ b/command/agent/scada.go
@@ -47,6 +47,7 @@ func ProviderConfig(c *Config) *client.ProviderConfig {
Handlers: map[string]client.CapabilityProvider{
"http": nil,
},
+ Endpoint: c.AtlasEndpoint,
ResourceGroup: c.AtlasInfrastructure,
Token: c.AtlasToken,
}
diff --git a/command/agent/scada_test.go b/command/agent/scada_test.go
index e142f54ae..bdd52be6e 100644
--- a/command/agent/scada_test.go
+++ b/command/agent/scada_test.go
@@ -43,6 +43,7 @@ func TestProviderConfig(t *testing.T) {
conf.Server = true
conf.AtlasInfrastructure = "armon/test"
conf.AtlasToken = "foobarbaz"
+ conf.AtlasEndpoint = "foo.bar:1111"
pc := ProviderConfig(conf)
expect := &client.ProviderConfig{
@@ -62,6 +63,7 @@ func TestProviderConfig(t *testing.T) {
Handlers: map[string]client.CapabilityProvider{
"http": nil,
},
+ Endpoint: "foo.bar:1111",
ResourceGroup: "armon/test",
Token: "foobarbaz",
}
diff --git a/website/Gemfile.lock b/website/Gemfile.lock
index 9477360f6..c9d4cb975 100644
--- a/website/Gemfile.lock
+++ b/website/Gemfile.lock
@@ -21,21 +21,25 @@ GIT
GEM
remote: https://rubygems.org/
specs:
- activesupport (4.1.12)
- i18n (~> 0.6, >= 0.6.9)
+ activesupport (4.2.4)
+ i18n (~> 0.7)
json (~> 1.7, >= 1.7.7)
minitest (~> 5.1)
- thread_safe (~> 0.1)
+ thread_safe (~> 0.3, >= 0.3.4)
tzinfo (~> 1.1)
- autoprefixer-rails (5.2.1)
+ autoprefixer-rails (5.2.1.3)
execjs
json
bootstrap-sass (3.3.5.1)
autoprefixer-rails (>= 5.0.0.1)
sass (>= 3.3.0)
builder (3.2.2)
- celluloid (0.16.0)
- timers (~> 4.0.0)
+ capybara (2.4.4)
+ mime-types (>= 1.16)
+ nokogiri (>= 1.3.3)
+ rack (>= 1.0.0)
+ rack-test (>= 0.5.4)
+ xpath (~> 2.0)
chunky_png (1.3.4)
coffee-script (2.4.1)
coffee-script-source
@@ -59,16 +63,15 @@ GEM
eventmachine (>= 0.12.9)
http_parser.rb (~> 0.6.0)
erubis (2.7.0)
- eventmachine (1.0.7)
- execjs (2.5.2)
+ eventmachine (1.0.8)
+ execjs (2.6.0)
ffi (1.9.10)
git-version-bump (0.15.1)
- haml (4.0.6)
+ haml (4.0.7)
tilt
hike (1.2.3)
- hitimes (1.2.2)
- hooks (0.4.0)
- uber (~> 0.0.4)
+ hooks (0.4.1)
+ uber (~> 0.0.14)
htmlcompressor (0.2.0)
http_parser.rb (0.6.0)
i18n (0.7.0)
@@ -77,34 +80,33 @@ GEM
less (2.6.0)
commonjs (~> 0.2.7)
libv8 (3.16.14.11)
- listen (2.10.1)
- celluloid (~> 0.16.0)
+ listen (3.0.3)
rb-fsevent (>= 0.9.3)
rb-inotify (>= 0.9)
- middleman (3.3.13)
+ middleman (3.4.0)
coffee-script (~> 2.2)
compass (>= 1.0.0, < 2.0.0)
compass-import-once (= 1.0.5)
execjs (~> 2.0)
haml (>= 4.0.5)
kramdown (~> 1.2)
- middleman-core (= 3.3.13)
+ middleman-core (= 3.4.0)
middleman-sprockets (>= 3.1.2)
sass (>= 3.4.0, < 4.0)
uglifier (~> 2.5)
- middleman-core (3.3.13)
- activesupport (~> 4.1.0)
+ middleman-core (3.4.0)
+ activesupport (~> 4.1)
bundler (~> 1.1)
+ capybara (~> 2.4.4)
erubis
hooks (~> 0.3)
i18n (~> 0.7.0)
- listen (>= 2.7.9, < 3.0)
+ listen (~> 3.0.3)
padrino-helpers (~> 0.12.3)
rack (>= 1.4.5, < 2.0)
- rack-test (~> 0.6.2)
thor (>= 0.15.2, < 2.0)
tilt (~> 1.4.1, < 2.0)
- middleman-livereload (3.4.2)
+ middleman-livereload (3.4.3)
em-websocket (~> 0.5.1)
middleman-core (>= 3.3)
rack-livereload (~> 0.3.15)
@@ -119,8 +121,12 @@ GEM
middleman-syntax (2.0.0)
middleman-core (~> 3.2)
rouge (~> 1.0)
- minitest (5.7.0)
+ mime-types (2.6.1)
+ mini_portile (0.6.2)
+ minitest (5.8.0)
multi_json (1.11.2)
+ nokogiri (1.6.6.2)
+ mini_portile (~> 0.6.0)
padrino-helpers (0.12.5)
i18n (~> 0.6, >= 0.6.7)
padrino-support (= 0.12.5)
@@ -128,7 +134,7 @@ GEM
padrino-support (0.12.5)
activesupport (>= 3.1)
rack (1.6.4)
- rack-contrib (1.3.0)
+ rack-contrib (1.4.0)
git-version-bump (~> 0.15)
rack (~> 1.4)
rack-livereload (0.3.16)
@@ -136,7 +142,7 @@ GEM
rack-protection (1.5.3)
rack
rack-rewrite (1.5.1)
- rack-ssl-enforcer (0.2.8)
+ rack-ssl-enforcer (0.2.9)
rack-test (0.6.3)
rack (>= 1.0)
rb-fsevent (0.9.5)
@@ -145,7 +151,7 @@ GEM
redcarpet (3.3.2)
ref (2.0.0)
rouge (1.9.1)
- sass (3.4.16)
+ sass (3.4.18)
sprockets (2.12.4)
hike (~> 1.2)
multi_json (~> 1.0)
@@ -166,14 +172,14 @@ GEM
thor (0.19.1)
thread_safe (0.3.5)
tilt (1.4.1)
- timers (4.0.1)
- hitimes
tzinfo (1.2.2)
thread_safe (~> 0.1)
- uber (0.0.13)
- uglifier (2.7.1)
+ uber (0.0.14)
+ uglifier (2.7.2)
execjs (>= 0.3.0)
json (>= 1.8.0)
+ xpath (2.0.0)
+ nokogiri (~> 1.3)
PLATFORMS
ruby
diff --git a/website/source/docs/agent/options.html.markdown b/website/source/docs/agent/options.html.markdown
index e014dea04..ba9c526e1 100644
--- a/website/source/docs/agent/options.html.markdown
+++ b/website/source/docs/agent/options.html.markdown
@@ -63,6 +63,11 @@ The options below are all specified on the command-line.
API authentication token. This can also be provided
using the `ATLAS_TOKEN` environment variable. Required for use with Atlas.
+* `-atlas-endpoint` - The endpoint
+ address used for Atlas integration. Used only if the `-atlas` and
+ `-atlas-token` options are specified. This is optional, and defaults to the
+ public Atlas endpoints.
+
* `-bootstrap` - This flag is used to control if a
server is in "bootstrap" mode. It is important that
no more than one server *per* datacenter be running in this mode. Technically, a server in bootstrap mode
@@ -351,6 +356,9 @@ definitions support being updated during a reload.
* `atlas_token` Equivalent to the
[`-atlas-token` command-line flag](#_atlas_token).
+* `atlas_endpoint` Equivalent to the
+ [`-atlas-endpoint` command-line flag](#_atlas_endpoint).
+
* `bootstrap` Equivalent to the
[`-bootstrap` command-line flag](#_bootstrap).
@@ -645,3 +653,4 @@ items which are reloaded include:
* HTTP Client Address
* Atlas Token
* Atlas Infrastructure
+* Atlas Endpoint