Kyle Havlovitz
d129767657
Add agent.segment interpolation to prepared queries
2017-08-30 11:58:29 -07:00
Kyle Havlovitz
2ada0439d4
Add rpc_listener option to segment config
2017-08-30 11:58:29 -07:00
James Phillips
b1a15e0c3d
Adds open source side of network segments (feature is Enterprise-only).
2017-08-30 11:58:29 -07:00
Frank Schroeder
831d84c940
build: make tests independent of build tags
...
When the metadata server is scanning the agents for potential servers
it is parsing the version number which the agent provided when it
joined. This version number has to conform to a certain format, i.e.
'n.n.n'. Without this version number properly set some tests fail with
error messages that disguise the root cause.
The default version number is currently set to 'unknown' in
version/version.go which does not parse and triggers the tests to fail.
The work around is to use a build tag 'consul' which will use the
version number set in version_base.go instead which has the correct
format and is set to the current release version.
In addition, some parts of the code also require the version number to
be of a certain value. Setting it to '0.0.0' for example makes some
tests pass and others fail since they don't pass the semantic check.
When using go build/install/test one has to remember to use '-tags
consul' or tests will fail with non-obvious error messages.
Using build tags makes the build process more complex and error prone
since it prevents the use of the plain go toolchain and - at least in
its current form - introduces subtle build and test issues. We should
try to eliminate build tags for anything else but platform specific
code.
This patch removes all references to specific version numbers in the
code and tests and sets the default version to '9.9.9' which is
syntactically correct and passes the semantic check. This solves the
issue of running go build/install/test without tags for the OSS build.
2017-08-30 13:40:18 +02:00
wuxin
d6729243eb
fix command/kv_import.go help text ( #3387 )
2017-08-10 09:17:37 +02:00
Frank Schröder
4b642fed2f
agent: honor deprecated flags for retry-join-{ec2,azure,gce} ( #3384 )
2017-08-09 16:18:30 -07:00
Frank Schroeder
1acff3533e
agent: move agent/consul/structs to agent/structs
2017-08-09 14:32:12 +02:00
Kyle Havlovitz
d5634fe2a8
Add support for labels/filters from go-metrics
2017-08-08 01:45:10 -07:00
Frank Schroeder
2fac427cd4
agent: use github.com/hashicorp/go-discover
...
Replace the provider specific node discovery code
with go-discover to support AWS, Azure and GCE.
Fixes #3282
2017-08-01 11:41:43 +02:00
Preetha Appan
840749db7e
Fix comments, and remove redundant TestConfig init from a couple of unit tests
2017-07-28 10:40:43 -05:00
Preetha Appan
aa98aeb4b1
Moved handling advertise address to readConfig and out of the agent's constructor, plus unit test fixes
2017-07-27 22:06:31 -05:00
Preetha Appan
25acd1534a
Move go-socketaddr template parsing into config package to make it happen before creating a new agent. Also removed redundant parsetemplate calls from agent.go.
2017-07-27 16:17:35 -05:00
James Phillips
08a8d9f2a7
command/lock: Add -child-exitcode, return 2 on child error ( #3329 )
...
* Exit 2 if -child-exit-code and the child returned with an error.
* There is no platform independent way to check the exact return code of
* the child, so on error always return 2.
* Closes #947
* Closes #1503
2017-07-26 22:09:19 -07:00
Kyle Havlovitz
9268849d11
Add UpgradeVersionTag to autopilot get/set commands
2017-07-18 14:01:04 -07:00
James Phillips
1791d99a10
Adds new config to make script checks opt-in, updates documentation. ( #3284 )
2017-07-17 11:20:35 -07:00
James Phillips
86918be323
Sort tags so output is deterministic.
2017-07-14 17:00:08 -07:00
Seth Vargo
afd83a9705
Add catalog CLI functions ( #3204 )
2017-07-14 12:45:08 -07:00
Frank Schroeder
406dc2ead8
command: make TestExecCommandRun_CrossDC more resilient
...
Wait after WAN join that both members see each other.
2017-07-07 09:22:34 +02:00
James Phillips
f1bded7c5e
Removes unneeded shutdown channel in config reading tests.
2017-06-25 10:39:51 -07:00
James Phillips
6977e40077
Fixes watch tracking during reloads and fixes address issue. ( #3189 )
...
This patch fixes watch registration through the config file and a broken log line when the watch registration fails. It also plumbs all the watch loading through a common function and tweaks the
unit test to create the watch before the reload.
2017-06-24 12:52:41 -07:00
James Phillips
380c8b957d
Changes host-based node IDs from opt-out to opt-in. ( #3187 )
2017-06-24 09:36:53 -07:00
Jared Wasinger
3cdde3c7ca
Warn when attempting to bootstrap an even number of nodes ( #3158 )
...
* Warn when attempting to bootstrap an even number of nodes. Addresses #1282
* add more detailed warning for two server case
2017-06-21 15:36:55 -07:00
Frank Schroeder
ea5b0f2c7c
agent: fix 'consul leave' shutdown race ( #2880 )
...
When the agent is triggered to shutdown via an external 'consul leave'
command delivered via the HTTP API then the client expects to receive a
response when the agent is down. This creates a race on when to shutdown
the agent itself like the RPC server, the checks and the state and the
external endpoints like DNS and HTTP.
This patch splits the shutdown process into two parts:
* shutdown the agent
* shutdown the endpoints (http and dns)
They can be executed multiple times, concurrently and in any order but
should be executed first agent, then endpoints to provide consistent
behavior across all use cases. Both calls have to be executed for a
proper shutdown.
This could be partially hidden in a single function but would introduce
some magic that happens behind the scenes which one has to know of but
isn't obvious.
Fixes #2880
2017-06-21 05:52:51 +02:00
James Phillips
6b2ad20131
Moves flag slice helper into configutil.
2017-06-20 12:52:35 -07:00
James Phillips
902f1ce16f
Moves config util helpers into their own package. ( #3165 )
2017-06-20 10:49:37 -07:00
Kyle Havlovitz
5d99ee80ca
Add an option to disable keyring file ( #3145 )
...
Also disables keyring file in dev mode.
2017-06-15 15:24:04 -07:00
Frank Schroeder
1c75cf1af5
pkg refactor
...
command/agent/* -> agent/*
command/consul/* -> agent/consul/*
command/agent/command{,_test}.go -> command/agent{,_test}.go
command/base/command.go -> command/base.go
command/base/* -> command/*
commands.go -> command/commands.go
The script which did the refactor is:
(
cd $GOPATH/src/github.com/hashicorp/consul
git mv command/agent/command.go command/agent.go
git mv command/agent/command_test.go command/agent_test.go
git mv command/agent/flag_slice_value{,_test}.go command/
git mv command/agent .
git mv command/base/command.go command/base.go
git mv command/base/config_util{,_test}.go command/
git mv commands.go command/
git mv consul agent
rmdir command/base/
gsed -i -e 's|package agent|package command|' command/agent{,_test}.go
gsed -i -e 's|package agent|package command|' command/flag_slice_value{,_test}.go
gsed -i -e 's|package base|package command|' command/base.go command/config_util{,_test}.go
gsed -i -e 's|package main|package command|' command/commands.go
gsed -i -e 's|base.Command|BaseCommand|' command/commands.go
gsed -i -e 's|agent.Command|AgentCommand|' command/commands.go
gsed -i -e 's|\tCommand:|\tBaseCommand:|' command/commands.go
gsed -i -e 's|base\.||' command/commands.go
gsed -i -e 's|command\.||' command/commands.go
gsed -i -e 's|command|c|' main.go
gsed -i -e 's|range Commands|range command.Commands|' main.go
gsed -i -e 's|Commands: Commands|Commands: command.Commands|' main.go
gsed -i -e 's|base\.BoolValue|BoolValue|' command/operator_autopilot_set.go
gsed -i -e 's|base\.DurationValue|DurationValue|' command/operator_autopilot_set.go
gsed -i -e 's|base\.StringValue|StringValue|' command/operator_autopilot_set.go
gsed -i -e 's|base\.UintValue|UintValue|' command/operator_autopilot_set.go
gsed -i -e 's|\bCommand\b|BaseCommand|' command/base.go
gsed -i -e 's|BaseCommand Options|Command Options|' command/base.go
gsed -i -e 's|base.Command|BaseCommand|' command/*.go
gsed -i -e 's|c\.Command|c.BaseCommand|g' command/*.go
gsed -i -e 's|\tCommand:|\tBaseCommand:|' command/*_test.go
gsed -i -e 's|base\.||' command/*_test.go
gsed -i -e 's|\bCommand\b|AgentCommand|' command/agent{,_test}.go
gsed -i -e 's|cmd.AgentCommand|cmd.BaseCommand|' command/agent.go
gsed -i -e 's|cli.AgentCommand = new(Command)|cli.Command = new(AgentCommand)|' command/agent_test.go
gsed -i -e 's|exec.AgentCommand|exec.Command|' command/agent_test.go
gsed -i -e 's|exec.BaseCommand|exec.Command|' command/agent_test.go
gsed -i -e 's|NewTestAgent|agent.NewTestAgent|' command/agent_test.go
gsed -i -e 's|= TestConfig|= agent.TestConfig|' command/agent_test.go
gsed -i -e 's|: RetryJoin|: agent.RetryJoin|' command/agent_test.go
gsed -i -e 's|\.\./\.\./|../|' command/config_util_test.go
gsed -i -e 's|\bverifyUniqueListeners|VerifyUniqueListeners|' agent/config{,_test}.go command/agent.go
gsed -i -e 's|\bserfLANKeyring\b|SerfLANKeyring|g' agent/{agent,keyring,testagent}.go command/agent.go
gsed -i -e 's|\bserfWANKeyring\b|SerfWANKeyring|g' agent/{agent,keyring,testagent}.go command/agent.go
gsed -i -e 's|\bNewAgent\b|agent.New|g' command/agent{,_test}.go
gsed -i -e 's|\bNewAgent|New|' agent/{acl_test,agent,testagent}.go
gsed -i -e 's|\bAgent\b|agent.&|g' command/agent{,_test}.go
gsed -i -e 's|\bBool\b|agent.&|g' command/agent{,_test}.go
gsed -i -e 's|\bConfig\b|agent.&|g' command/agent{,_test}.go
gsed -i -e 's|\bDefaultConfig\b|agent.&|g' command/agent{,_test}.go
gsed -i -e 's|\bDevConfig\b|agent.&|g' command/agent{,_test}.go
gsed -i -e 's|\bMergeConfig\b|agent.&|g' command/agent{,_test}.go
gsed -i -e 's|\bReadConfigPaths\b|agent.&|g' command/agent{,_test}.go
gsed -i -e 's|\bParseMetaPair\b|agent.&|g' command/agent{,_test}.go
gsed -i -e 's|\bSerfLANKeyring\b|agent.&|g' command/agent{,_test}.go
gsed -i -e 's|\bSerfWANKeyring\b|agent.&|g' command/agent{,_test}.go
gsed -i -e 's|circonus\.agent|circonus|g' command/agent{,_test}.go
gsed -i -e 's|logger\.agent|logger|g' command/agent{,_test}.go
gsed -i -e 's|metrics\.agent|metrics|g' command/agent{,_test}.go
gsed -i -e 's|// agent.Agent|// agent|' command/agent{,_test}.go
gsed -i -e 's|a\.agent\.Config|a.Config|' command/agent{,_test}.go
gsed -i -e 's|agent\.AppendSliceValue|AppendSliceValue|' command/{configtest,validate}.go
gsed -i -e 's|consul/consul|agent/consul|' GNUmakefile
gsed -i -e 's|\.\./test|../../test|' agent/consul/server_test.go
# fix imports
f=$(grep -rl 'github.com/hashicorp/consul/command/agent' * | grep '\.go')
gsed -i -e 's|github.com/hashicorp/consul/command/agent|github.com/hashicorp/consul/agent|' $f
goimports -w $f
f=$(grep -rl 'github.com/hashicorp/consul/consul' * | grep '\.go')
gsed -i -e 's|github.com/hashicorp/consul/consul|github.com/hashicorp/consul/agent/consul|' $f
goimports -w $f
goimports -w command/*.go main.go
)
2017-06-10 18:52:45 +02:00
Frank Schroeder
9ceef2b32e
test: move discover tests
2017-06-10 18:52:45 +02:00
Frank Schroeder
d2ee591fbf
use 'c' as command receiver for simple commands
2017-06-10 18:52:45 +02:00
Frank Schroeder
902f4caff2
agent: move watch plans into agent
2017-06-10 18:52:45 +02:00
preetapan
2de032125b
Fixed regression with dns server start condition ( #3137 )
2017-06-09 15:50:06 -07:00
Seth Vargo
89f16984f9
Simplify
2017-06-09 14:55:04 -04:00
Seth Vargo
ee1b5d5024
Update comment
2017-06-09 14:51:34 -04:00
Seth Vargo
532f8d1435
Parse values given to ?passing in the API
...
This PR fixes GH-2212 in the most backwards-compatible way I can think
of. If the user does not pass a value for `?passing`, it's assumed to be
true, which mirrors the current behavior. However, if the user passes
any value for passing, that value is parsed as a bool using strconv.
It's important to note that this is technically a breaking change.
Previously using `?passing=false` would return only passing nodes. While
this behavior is obviously incorrect, it was the previous behavior. We
should call this out very clearly in the CHANGELOG.
2017-06-09 14:36:00 -04:00
James Phillips
86713c1b8a
Opens up timing bound on flaky test.
2017-06-08 21:37:52 -07:00
James Phillips
66ec9c7a7d
Fixes HTTP header compare by including standard headers.
2017-06-08 14:10:46 -07:00
Frank Schroeder
b5f8d6f9fd
agent: fix time.Duration parsing
...
The duration can be passed as a string, a float64 or a time.Duration
and this patch handles this properly.
2017-06-08 22:42:49 +02:00
Frank Schroeder
39d33c2fdc
agent: log events and exit code to the log file
...
This patch logs the signals, events, errors and the exit
code to the log file instead of printing it on the console.
This should provide a more complete picture for debugging.
2017-06-08 10:07:55 +02:00
Frank Schroeder
4a223111d2
log: use prefix [ERR] instead of [ERROR]
2017-06-08 09:50:47 +02:00
James Phillips
fa8a26ad54
Updates static assets to latest.
2017-06-07 21:16:59 -07:00
James Phillips
a09eed585e
Merge pull request #3121 from hashicorp/increase-graceful-timeout
...
agent: increase graceful shutdown timeout
2017-06-07 10:42:19 -07:00
Frank Schroeder
fe69de3bba
agent: increase graceful shutdown timeout
...
When triggering a leave through an INT/TERM signal the hard-coded
timeout of 5 seconds is too short to complete the leave successfully.
Therefore, the agent always times out.
This value should probably configurable.
2017-06-07 13:12:34 +02:00
Frank Schroeder
46c055d57b
agent: log differnt shutdown stages
...
Log the different code paths during shutdown.
2017-06-07 13:11:04 +02:00
Frank Schröder
825f72f5ef
agent: support custom header and method for http checks ( #3106 )
...
This patch adds support for custom headers and
method for HTTP checks.
Fixes #2474
Fixes #2657
Fixes #3106
2017-06-07 01:11:56 +02:00
Frank Schroeder
94b39557e8
test: refactor TestDecodeConfig test
...
This patch refactors the multiple tests for
DecodeConfig into a single table-driven test
that tests most fields individually.
2017-06-04 23:55:12 +02:00
Frank Schroeder
325f82972a
test: Fix TestAgent_Reload
...
This test was still referring to cmd.agent which has been removed.
2017-06-04 22:45:40 +02:00
James Phillips
240413f5d6
Merge pull request #3105 from hashicorp/test-stability
...
Tweaks things for better test stability.
2017-06-03 10:09:12 -07:00
Frank Schroeder
51e0e158f1
agent: fix graceful http server shutdown
2017-06-03 19:08:50 +02:00
Frank Schroeder
ae711c3b04
agent: cleanup run method
2017-06-03 19:08:50 +02:00
Frank Schroeder
b203ffab29
agent: move registerWatches out of the run method
2017-06-03 19:08:50 +02:00
Frank Schroeder
11245e53a7
agent: move telemetry out of the run method
2017-06-03 19:08:50 +02:00
Frank Schroeder
84f5e8c3ab
agent: move update check out of the run method
2017-06-03 19:08:50 +02:00
Frank Schroeder
96d8035adc
agent: simplify signal handling
2017-06-03 19:08:50 +02:00
Frank Schroeder
34fd31b7b1
agent: move config reloading into the agent
2017-06-03 19:08:50 +02:00
Frank Schroeder
aa1519c9f7
agent: move parseMetaPair to config and export
2017-06-03 19:08:50 +02:00
Frank Schroeder
cb98754cd6
agent: remove agent from command
...
Decouple command and agent a bit more.
2017-06-03 19:08:50 +02:00
Frank Schroeder
d977aa1fe7
agent: move retry join into agent
2017-06-03 19:08:50 +02:00
Frank Schroeder
55a513da2e
agent: add GossipEncrypted function
...
Remove dead code and expose a GossipEncrypted() method
on the agent instead of accessing the internal delegate.
2017-06-03 19:08:50 +02:00
James Phillips
b0b5df579f
Cleans up an unrelated vet error.
2017-06-02 21:07:15 -07:00
James Phillips
b4b5036dfb
Adds back the port shuffle on agent start retries.
2017-06-02 20:53:20 -07:00
Frank Schroeder
375825f34c
Do not recurse when the service address is a local cname
...
Fixes #2795
2017-06-01 18:20:31 +02:00
Frank Schroeder
9956bc9b47
agent: LastContact cannot be negative ( #3067 )
...
The X-Consul-LastContact header cannot be negative.
Fixes #3067
2017-06-01 18:20:12 +02:00
Frank Schroeder
db15cd847a
test: replace one more BoolFalse with agent.Bool()
2017-05-31 11:41:17 +02:00
Frank Schroeder
dcc68f0f85
test: we will not use dev mode for testing for now
2017-05-31 11:34:00 +02:00
Frank Schroeder
f89ae9f7e7
test: stagger retry attempts of TestAgent.Start
2017-05-31 11:33:25 +02:00
Frank Schroeder
bdfed817ee
test: make TestAgent setup reusable
...
Pick the random ports only once and try starting with them
a number of times so that the configuration can be re-used.
This is because the ports are written into the data files
and a subsequent agent reading the files needs to have the
same ports.
For the same reason we do not remove the data directory on
every attempt since this makes it impossible to re-read the
data files.
2017-05-31 11:32:31 +02:00
Frank Schroeder
4034d0ac0b
agent: use agent logger for consul client and deps
2017-05-31 11:05:02 +02:00
Frank Schroeder
c1e6a77c75
test: start secondary agents also via TestAgent
2017-05-31 10:56:19 +02:00
Frank Schroeder
a9451d596f
agent: set tcpKeepAliveListener when there is no error
2017-05-31 10:24:32 +02:00
Frank Schroeder
345666bdb6
test: use test name as log prefix
2017-05-31 09:54:09 +02:00
Frank Schroeder
d6c7404b34
agent: simplify shutdown timeout logging
...
Note that we are currently timing out every time. This still
needs to be investigated.
2017-05-31 09:41:58 +02:00
Frank Schroeder
30ba712857
agent: set proto to http since we are logging it now
2017-05-31 09:41:16 +02:00
Frank Schroeder
ceda18366f
test: Use Bool() instead of &BoolTrue/False since
2017-05-31 09:21:01 +02:00
Frank Schroeder
ec729693d7
Address review comments
2017-05-31 01:05:21 +02:00
Frank Schroeder
26200929c1
agent: start HTTPS only if there is a cert and key
2017-05-31 00:29:29 +02:00
Frank Schroeder
b6c69ebf5d
agent: refactor DNS and HTTP server
...
* refactor DNS server to be ready for multiple bind addresses
* drop tcpKeepAliveListener since it is default for the HTTP servers
* add startup timeout watcher for HTTP servers identical to DNS server
2017-05-31 00:29:29 +02:00
Frank Schroeder
aa92adcdd5
test: increase sleep time for test
2017-05-31 00:29:28 +02:00
Frank Schroeder
f498f24032
test: allow tests to control anti-entropy syncs
2017-05-31 00:29:28 +02:00
Frank Schroeder
eea16e1640
test: run mock dns recursors on random ports
2017-05-31 00:29:28 +02:00
Frank Schroeder
6148910399
test: skip tests that use cmd.Run until signal handling is fixed
2017-05-31 00:29:28 +02:00
Frank Schroeder
56cf015117
test: add test for starting/stopping lots of agents
2017-05-31 00:29:28 +02:00
Frank Schroeder
7c5892a196
test: use UniqueID prefix for check tests to unify log output
2017-05-31 00:29:28 +02:00
Frank Schroeder
0a31094e06
test: improve TestAgent
...
* don't use retry to try restarting the agent
this caused some issues when the startup would fail in
a separate go routine
* clear out the data directory on every retry since the ports
are stored in the raft data files
* set a unique id for every agent to allow for tracking of
concurrent output
2017-05-31 00:29:28 +02:00
Frank Schroeder
10540f8d5f
agent: fix logging
...
* use agent logger for consul/serf/raft/dns/agent/...
* support optional id for concurrent tests
2017-05-31 00:29:27 +02:00
Frank Schroeder
fe777852cd
test: call t.Fatal() from main go routine
2017-05-31 00:29:27 +02:00
Frank Schroeder
3e39f04527
dns: do not log socket close during shutdown
2017-05-31 00:29:27 +02:00
Frank Schroeder
1df74e36bd
agent: print more useful shutdown message
2017-05-31 00:29:27 +02:00
Frank Schroeder
2e14c09447
test: start sync after agent start
2017-05-31 00:29:27 +02:00
Frank Schroeder
5b5566d916
test: add test name to output
2017-05-31 00:29:27 +02:00
Frank Schroeder
28ed8f1847
test: perform blocking query on agent
2017-05-31 00:29:27 +02:00
Frank Schroeder
ebc0c80f08
test: parallelize dns test
2017-05-31 00:29:26 +02:00
Frank Schroeder
72c214b908
test: fix failing test
2017-05-31 00:29:26 +02:00
Frank Schroeder
c5f565ee1a
test: remove output to stdout
2017-05-31 00:29:26 +02:00
Frank Schroeder
8f943542b0
test: use cli.NewMockUi instead of new(cli.MockUi)
...
Use the constructor function to prevent a nil panic
if there was no write to the output buffers.
2017-05-31 00:29:26 +02:00
Frank Schroeder
0325a42089
test: fix data race with endpoints
2017-05-31 00:29:26 +02:00
Frank Schroeder
e16589c079
agent: shutdown delegate if created
...
When the TestAgent shuts down a half-started agent
the delegate may not have been created at this point.
2017-05-31 00:29:26 +02:00
Frank Schroeder
632f837c98
agent: shutdown dns servers on error
2017-05-31 00:29:26 +02:00
Frank Schroeder
8c1a668481
test: Shutdown half-started agent before retrying
2017-05-31 00:29:25 +02:00
Frank Schroeder
584693482d
test: fix data race in MockNotify
...
42 -> 32 data races
2017-05-31 00:29:25 +02:00
Frank Schroeder
9509ab463c
test: run command tests in parallel
2017-05-31 00:29:25 +02:00