James Phillips
f081e45a89
Removes unneeded shutdown channel in config reading tests.
2017-06-25 10:39:51 -07:00
James Phillips
4b85d33ef1
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
2184136284
Changes host-based node IDs from opt-out to opt-in. ( #3187 )
2017-06-24 09:36:53 -07:00
Jared Wasinger
06c49f8345
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
f8e52c897e
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
c5f7144c62
Moves flag slice helper into configutil.
2017-06-20 12:52:35 -07:00
James Phillips
465f24298e
Moves config util helpers into their own package. ( #3165 )
2017-06-20 10:49:37 -07:00
Kyle Havlovitz
5e45aec642
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
cd837b0b18
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
c21d0f2284
test: move discover tests
2017-06-10 18:52:45 +02:00
Frank Schroeder
0d9471d659
use 'c' as command receiver for simple commands
2017-06-10 18:52:45 +02:00
Frank Schroeder
a56d0cc95f
agent: move watch plans into agent
2017-06-10 18:52:45 +02:00
preetapan
f34730e3ee
Fixed regression with dns server start condition ( #3137 )
2017-06-09 15:50:06 -07:00
Seth Vargo
f4b36e8d90
Simplify
2017-06-09 14:55:04 -04:00
Seth Vargo
55161869a7
Update comment
2017-06-09 14:51:34 -04:00
Seth Vargo
b20902b7e2
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
a5cc8434ce
Opens up timing bound on flaky test.
2017-06-08 21:37:52 -07:00
James Phillips
a7c910be7c
Fixes HTTP header compare by including standard headers.
2017-06-08 14:10:46 -07:00
Frank Schroeder
17051c6870
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
d284d061c9
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
d98f0f7bab
log: use prefix [ERR] instead of [ERROR]
2017-06-08 09:50:47 +02:00
James Phillips
e32b42a222
Updates static assets to latest.
2017-06-07 21:16:59 -07:00
James Phillips
fd7c3c5cfa
Merge pull request #3121 from hashicorp/increase-graceful-timeout
...
agent: increase graceful shutdown timeout
2017-06-07 10:42:19 -07:00
Frank Schroeder
247e44e787
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
fc2ed18423
agent: log differnt shutdown stages
...
Log the different code paths during shutdown.
2017-06-07 13:11:04 +02:00
Frank Schröder
e206ab5cb6
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
0133ab135a
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
35f2377702
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
037f72813b
Merge pull request #3105 from hashicorp/test-stability
...
Tweaks things for better test stability.
2017-06-03 10:09:12 -07:00
Frank Schroeder
92b2192b75
agent: fix graceful http server shutdown
2017-06-03 19:08:50 +02:00
Frank Schroeder
9779f7ef02
agent: cleanup run method
2017-06-03 19:08:50 +02:00
Frank Schroeder
b3e94082b0
agent: move registerWatches out of the run method
2017-06-03 19:08:50 +02:00
Frank Schroeder
5c08953449
agent: move telemetry out of the run method
2017-06-03 19:08:50 +02:00
Frank Schroeder
7c8b2be86d
agent: move update check out of the run method
2017-06-03 19:08:50 +02:00
Frank Schroeder
055347f7cd
agent: simplify signal handling
2017-06-03 19:08:50 +02:00
Frank Schroeder
6262d85dab
agent: move config reloading into the agent
2017-06-03 19:08:50 +02:00
Frank Schroeder
02ce45e5bb
agent: move parseMetaPair to config and export
2017-06-03 19:08:50 +02:00
Frank Schroeder
34c981ba55
agent: remove agent from command
...
Decouple command and agent a bit more.
2017-06-03 19:08:50 +02:00
Frank Schroeder
63d336e11c
agent: move retry join into agent
2017-06-03 19:08:50 +02:00
Frank Schroeder
488beeb208
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
26677b4117
Cleans up an unrelated vet error.
2017-06-02 21:07:15 -07:00
James Phillips
3795f17b3b
Adds back the port shuffle on agent start retries.
2017-06-02 20:53:20 -07:00
Frank Schroeder
d314a539da
Do not recurse when the service address is a local cname
...
Fixes #2795
2017-06-01 18:20:31 +02:00
Frank Schroeder
7f18fe1a5b
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
dbe8009968
test: replace one more BoolFalse with agent.Bool()
2017-05-31 11:41:17 +02:00
Frank Schroeder
00117ed09b
test: we will not use dev mode for testing for now
2017-05-31 11:34:00 +02:00
Frank Schroeder
d14182c2de
test: stagger retry attempts of TestAgent.Start
2017-05-31 11:33:25 +02:00
Frank Schroeder
5224699341
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
b06c969deb
agent: use agent logger for consul client and deps
2017-05-31 11:05:02 +02:00
Frank Schroeder
2588f22be7
test: start secondary agents also via TestAgent
2017-05-31 10:56:19 +02:00