1// Package config contains the command line and config file code for the
2// consul agent.
3//
4// The consul agent configuration is generated from multiple sources:
5//
6//  * config files
7//  * environment variables (which?)
8//  * cmd line args
9//
10// Each of these argument sets needs to be parsed, validated and then
11// merged with the other sources to build the final configuration.
12//
13// This patch introduces a distinction between the user and the runtime
14// configuration. The user configuration defines the external interface for
15// the user, i.e. the command line flags, the environment variables and the
16// config file format which cannot be changed without breaking the users'
17// setup.
18//
19// The runtime configuration is the merged, validated and mangled
20// configuration structure suitable for the consul agent. Both structures
21// are similar but different and the runtime configuration can be
22// refactored at will without affecting the user configuration format.
23//
24// For this, the user configuration consists of several structures for
25// config files and command line arguments. Again, the config file and
26// command line structs are similar but not identical for historical
27// reasons and to allow evolving them differently.
28//
29// All of the user configuration structs have pointer values to
30// unambiguously merge values from several sources into the final value.
31//
32// The runtime configuration has no pointer values and should be passed by
33// value to avoid accidental or malicious runtime configuration changes.
34// Runtime updates need to be handled through a new configuration
35// instances.
36
37// # Removed command line flags
38//
39//  * "-atlas" is deprecated and is no longer used. Please remove it from your configuration.
40//  * "-atlas-token" is deprecated and is no longer used. Please remove it from your configuration.
41//  * "-atlas-join" is deprecated and is no longer used. Please remove it from your configuration.
42//  * "-atlas-endpoint" is deprecated and is no longer used. Please remove it from your configuration.
43//  * "-dc" is deprecated. Please use "-datacenter" instead
44//  * "-retry-join-azure-tag-name" is deprecated. Please use "-retry-join" instead.
45//  * "-retry-join-azure-tag-value" is deprecated. Please use "-retry-join" instead.
46//  * "-retry-join-ec2-region" is deprecated. Please use "-retry-join" instead.
47//  * "-retry-join-ec2-tag-key" is deprecated. Please use "-retry-join" instead.
48//  * "-retry-join-ec2-tag-value" is deprecated. Please use "-retry-join" instead.
49//  * "-retry-join-gce-credentials-file" is deprecated. Please use "-retry-join" instead.
50//  * "-retry-join-gce-project-name" is deprecated. Please use "-retry-join" instead.
51//  * "-retry-join-gce-tag-name" is deprecated. Please use "-retry-join" instead.
52//  * "-retry-join-gce-zone-pattern" is deprecated. Please use "-retry-join" instead.
53//
54// # Removed configuration fields
55//
56// 	* "addresses.rpc" is deprecated and is no longer used. Please remove it from your configuration.
57// 	* "ports.rpc" is deprecated and is no longer used. Please remove it from your configuration.
58// 	* "atlas_infrastructure" is deprecated and is no longer used. Please remove it from your configuration.
59// 	* "atlas_token" is deprecated and is no longer used. Please remove it from your configuration.
60// 	* "atlas_acl_token" is deprecated and is no longer used. Please remove it from your configuration.
61// 	* "atlas_join" is deprecated and is no longer used. Please remove it from your configuration.
62// 	* "atlas_endpoint" is deprecated and is no longer used. Please remove it from your configuration.
63// 	* "http_api_response_headers" is deprecated. Please use "http_config.response_headers" instead.
64// 	* "dogstatsd_addr" is deprecated. Please use "telemetry.dogstatsd_addr" instead.
65// 	* "dogstatsd_tags" is deprecated. Please use "telemetry.dogstatsd_tags" instead.
66// 	* "recursor" is deprecated. Please use "recursors" instead.
67// 	* "statsd_addr" is deprecated. Please use "telemetry.statsd_addr" instead.
68// 	* "statsite_addr" is deprecated. Please use "telemetry.statsite_addr" instead.
69// 	* "statsite_prefix" is deprecated. Please use "telemetry.metrics_prefix" instead.
70// 	* "telemetry.statsite_prefix" is deprecated. Please use "telemetry.metrics_prefix" instead.
71//  * "retry_join_azure" is deprecated. Please use "retry_join" instead.
72//  * "retry_join_ec2" is deprecated. Please use "retry_join" instead.
73//  * "retry_join_gce" is deprecated. Please use "retry_join" instead.
74//
75// # Removed service config alias fields
76//
77//  * "serviceid" is deprecated in service definitions. Please use "service_id" instead.
78//  * "dockercontainerid" is deprecated in service definitions. Please use "docker_container_id" instead.
79//  * "tlsskipverify" is deprecated in service definitions. Please use "tls_skip_verify" instead.
80//  * "deregistercriticalserviceafter" is deprecated in service definitions. Please use "deregister_critical_service_after" instead.
81
82package config
83