consul/agent
Paul Banks 74f2a80a42
Fix CA pruning when CA config uses string durations. (#4669)
* Fix CA pruning when CA config uses string durations.

The tl;dr here is:

 - Configuring LeafCertTTL with a string like "72h" is how we do it by default and should be supported
 - Most of our tests managed to escape this by defining them as time.Duration directly
 - Out actual default value is a string
 - Since this is stored in a map[string]interface{} config, when it is written to Raft it goes through a msgpack encode/decode cycle (even though it's written from server not over RPC).
 - msgpack decode leaves the string as a `[]uint8`
 - Some of our parsers required string and failed
 - So after 1 hour, a default configured server would throw an error about pruning old CAs
 - If a new CA was configured that set LeafCertTTL as a time.Duration, things might be OK after that, but if a new CA was just configured from config file, intialization would cause same issue but always fail still so would never prune the old CA.
 - Mostly this is just a janky error that got passed tests due to many levels of complicated encoding/decoding.

tl;dr of the tl;dr: Yay for type safety. Map[string]interface{} combined with msgpack always goes wrong but we somehow get bitten every time in a new way :D

We already fixed this once! The main CA config had the same problem so @kyhavlov already wrote the mapstructure DecodeHook that fixes it. It wasn't used in several places it needed to be and one of those is notw in `structs` which caused a dependency cycle so I've moved them.

This adds a whole new test thta explicitly tests the case that broke here. It also adds tests that would have failed in other places before (Consul and Vaul provider parsing functions). I'm not sure if they would ever be affected as it is now as we've not seen things broken with them but it seems better to explicitly test that and support it to not be bitten a third time!

* Typo fix

* Fix bad Uint8 usage
2018-09-13 15:43:00 +01:00
..
ae Spelling (#3958) 2018-03-19 16:56:00 +00:00
cache Fixes #4421: General solution to stop blocking queries with index 0 (#4437) 2018-07-25 20:26:27 +01:00
cache-types Fixes #4421: General solution to stop blocking queries with index 0 (#4437) 2018-07-25 20:26:27 +01:00
checks agent/checks: prevent overflow of backoff 2018-07-12 10:21:49 -07:00
config Implementation of Weights Data structures (#4468) 2018-09-07 15:30:47 +01:00
connect Fix CA pruning when CA config uses string durations. (#4669) 2018-09-13 15:43:00 +01:00
consul Fix CA pruning when CA config uses string durations. (#4669) 2018-09-13 15:43:00 +01:00
exec fix go vet issue 2017-10-25 19:30:35 +02:00
local Implementation of Weights Data structures (#4468) 2018-09-07 15:30:47 +01:00
metadata fix refactoring 2018-01-28 22:48:21 +04:00
mock
pool Makes RPC handling more robust when rolling servers. (#3561) 2017-10-10 15:19:50 -07:00
proxy Fix unit test TestOperatorAutopilotGetConfigCommand (#4594) 2018-08-27 13:29:25 -04:00
router Remove unnecessary nil checks 2018-03-27 10:59:42 -05:00
structs Fix CA pruning when CA config uses string durations. (#4669) 2018-09-13 15:43:00 +01:00
systemd
token Adds secure introduction for the ACL replication token. (#3357) 2017-08-03 15:39:31 -07:00
acl.go Updated swith case to use same branch for async-cache and extend-cache 2018-07-02 17:39:34 +02:00
acl_endpoint.go Support OPTIONS requests 2018-02-12 10:15:31 -08:00
acl_endpoint_test.go BUGFIX: Unit test relying on WaitForLeader() did not work due to wrong test (#4472) 2018-08-06 19:46:09 -04:00
acl_test.go BUGFIX: Unit test relying on WaitForLeader() did not work due to wrong test (#4472) 2018-08-06 19:46:09 -04:00
agent.go Allow disabling the HTTP API again. (#4655) 2018-09-13 16:06:04 +02:00
agent_endpoint.go Ensure that Proxies ARE always cleaned up, event with DeregisterCriticalServiceAfter (#4649) 2018-09-11 17:34:09 +01:00
agent_endpoint_test.go Fix more unstable tests in agent and command 2018-09-12 14:49:27 +01:00
agent_test.go Allow disabling the HTTP API again. (#4655) 2018-09-13 16:06:04 +02:00
bindata_assetfs.go Release v1.2.2 2018-07-30 16:01:13 +00:00
blacklist.go
blacklist_test.go
catalog_endpoint.go agent: clean up connect/non-connect duplication by using shared methods 2018-06-14 09:41:48 -07:00
catalog_endpoint_test.go Fix unstable tests in agent, api, and command/watch 2018-09-10 16:58:53 +01:00
check.go Decouple the code that executes checks from the agent 2017-10-25 11:18:07 +02:00
config.go Fixes API client for ScriptArgs and updates documentation. (#3589) 2017-10-18 11:28:39 -07:00
connect_ca_endpoint.go Fix CA pruning when CA config uses string durations. (#4669) 2018-09-13 15:43:00 +01:00
connect_ca_endpoint_test.go Fix more unstable tests in agent and command 2018-09-12 14:49:27 +01:00
coordinate_endpoint.go Merge pull request #3885 from eddsteel/support-options-requests 2018-03-16 09:20:16 -05:00
coordinate_endpoint_test.go Fix more unstable tests in agent and command 2018-09-12 14:49:27 +01:00
dns.go Add ECS option to EDNS responses where appropriate (#4647) 2018-09-11 09:37:46 -04:00
dns_test.go Add ECS option to EDNS responses where appropriate (#4647) 2018-09-11 09:37:46 -04:00
enterprise_delegate_oss.go Allow for easy enterprise/oss coexistence 2018-05-24 10:36:42 -04:00
event_endpoint.go Fixes memory leak when blocking on /event/list (#4482) 2018-08-02 14:54:48 +01:00
event_endpoint_test.go Fix more unstable tests in agent and command 2018-09-12 14:49:27 +01:00
health_endpoint.go agent: get rid of method checks since they're done in the http layer 2018-06-14 09:41:54 -07:00
health_endpoint_test.go Fix more unstable tests in agent and command 2018-09-12 14:49:27 +01:00
http.go Fixes #4483: Add support for Authorization: Bearer token Header (#4502) 2018-08-17 16:18:42 -04:00
http_oss.go agent: rename test to check 2018-06-14 09:42:18 -07:00
http_oss_test.go Close HTTP response in Agent test (HTTPAPI_MethodNotAllowed_OSS) 2018-04-10 13:18:46 -04:00
http_test.go Fixes #4483: Add support for Authorization: Bearer token Header (#4502) 2018-08-17 16:18:42 -04:00
intentions_endpoint.go agent: 400 error on invalid UUID format, api handles errors properly 2018-06-27 07:40:06 +02:00
intentions_endpoint_test.go agent: 400 error on invalid UUID format, api handles errors properly 2018-06-27 07:40:06 +02:00
keyring.go agent: move agent/consul/structs to agent/structs 2017-08-09 14:32:12 +02:00
keyring_test.go New config parser, HCL support, multiple bind addrs (#3480) 2017-09-25 11:40:42 -07:00
kvs_endpoint.go Support OPTIONS requests 2018-02-12 10:15:31 -08:00
kvs_endpoint_test.go Improve reliability of tests with TestAgent (#4525) 2018-08-14 12:08:33 -04:00
notify.go Fixes memory leak when blocking on /event/list (#4482) 2018-08-02 14:54:48 +01:00
notify_test.go Fixes memory leak when blocking on /event/list (#4482) 2018-08-02 14:54:48 +01:00
operator_endpoint.go Support OPTIONS requests 2018-02-12 10:15:31 -08:00
operator_endpoint_test.go Fix unstable tests in agent, api, and command/watch 2018-09-10 16:58:53 +01:00
prepared_query_endpoint.go agent: accept connect param for execute 2018-06-25 12:24:12 -07:00
prepared_query_endpoint_test.go Fix unstable tests in agent, api, and command/watch 2018-09-10 16:58:53 +01:00
remote_exec.go Decouple the code that executes checks from the agent 2017-10-25 11:18:07 +02:00
remote_exec_test.go Fix unstable tests in agent, api, and command/watch 2018-09-10 16:58:53 +01:00
retry_join.go agent: configure k8s go-discover 2018-09-05 13:38:13 -07:00
retry_join_test.go Vendoring update for go-discover. (#4412) 2018-07-25 16:21:04 -07:00
session_endpoint.go Support OPTIONS requests 2018-02-12 10:15:31 -08:00
session_endpoint_test.go Implementation of Weights Data structures (#4468) 2018-09-07 15:30:47 +01:00
snapshot_endpoint.go agent: consolidate handling of 405 Method Not Allowed (#3405) 2017-09-25 23:11:19 -07:00
snapshot_endpoint_test.go agent: consolidate handling of 405 Method Not Allowed (#3405) 2017-09-25 23:11:19 -07:00
status_endpoint.go Support OPTIONS requests 2018-02-12 10:15:31 -08:00
status_endpoint_test.go agent: consolidate handling of 405 Method Not Allowed (#3405) 2017-09-25 23:11:19 -07:00
testagent.go Fix #4515: Segfault when serf_wan port was -1 but reconnect_time_wan was set (#4531) 2018-08-17 14:44:25 -04:00
testagent_test.go New config parser, HCL support, multiple bind addrs (#3480) 2017-09-25 11:40:42 -07:00
translate_addr.go New config parser, HCL support, multiple bind addrs (#3480) 2017-09-25 11:40:42 -07:00
txn_endpoint.go Support OPTIONS requests 2018-02-12 10:15:31 -08:00
txn_endpoint_test.go Improve reliability of tests with TestAgent (#4525) 2018-08-14 12:08:33 -04:00
ui_endpoint.go agent: ExternalSources instead of Meta 2018-09-07 10:06:55 -07:00
ui_endpoint_test.go agent: ExternalSources instead of Meta 2018-09-07 10:06:55 -07:00
user_event.go Spelling (#3958) 2018-03-19 16:56:00 +00:00
user_event_test.go local state: tests compile 2017-10-23 10:56:03 +02:00
util.go Improves user lookup error message. 2018-01-26 07:56:44 -08:00
util_test.go Move check definition to a sub-struct 2017-11-01 14:54:46 -07:00
watch_handler.go Support legacy watch.HandlerFunc type for backward compat reduces impact of change 2018-06-14 09:42:05 -07:00
watch_handler_test.go Support legacy watch.HandlerFunc type for backward compat reduces impact of change 2018-06-14 09:42:05 -07:00