Merge pull request #266 from crawford/config
config: update configs to match etcd, fleet, and flannel
This commit is contained in:
commit
19522bcb82
@ -17,32 +17,37 @@
|
|||||||
package config
|
package config
|
||||||
|
|
||||||
type Etcd struct {
|
type Etcd struct {
|
||||||
Addr string `yaml:"addr" env:"ETCD_ADDR"`
|
Addr string `yaml:"addr" env:"ETCD_ADDR"`
|
||||||
BindAddr string `yaml:"bind_addr" env:"ETCD_BIND_ADDR"`
|
BindAddr string `yaml:"bind_addr" env:"ETCD_BIND_ADDR"`
|
||||||
CAFile string `yaml:"ca_file" env:"ETCD_CA_FILE"`
|
CAFile string `yaml:"ca_file" env:"ETCD_CA_FILE"`
|
||||||
CertFile string `yaml:"cert_file" env:"ETCD_CERT_FILE"`
|
CertFile string `yaml:"cert_file" env:"ETCD_CERT_FILE"`
|
||||||
ClusterActiveSize string `yaml:"cluster_active_size" env:"ETCD_CLUSTER_ACTIVE_SIZE"`
|
ClusterActiveSize int `yaml:"cluster_active_size" env:"ETCD_CLUSTER_ACTIVE_SIZE"`
|
||||||
ClusterRemoveDelay string `yaml:"cluster_remove_delay" env:"ETCD_CLUSTER_REMOVE_DELAY"`
|
ClusterRemoveDelay float64 `yaml:"cluster_remove_delay" env:"ETCD_CLUSTER_REMOVE_DELAY"`
|
||||||
ClusterSyncInterval string `yaml:"cluster_sync_interval" env:"ETCD_CLUSTER_SYNC_INTERVAL"`
|
ClusterSyncInterval float64 `yaml:"cluster_sync_interval" env:"ETCD_CLUSTER_SYNC_INTERVAL"`
|
||||||
Cors string `yaml:"cors" env:"ETCD_CORS"`
|
CorsOrigins string `yaml:"cors" env:"ETCD_CORS"`
|
||||||
CPUProfileFile string `yaml:"cpu_profile_file" env:"ETCD_CPU_PROFILE_FILE"`
|
DataDir string `yaml:"data_dir" env:"ETCD_DATA_DIR"`
|
||||||
DataDir string `yaml:"data_dir" env:"ETCD_DATA_DIR"`
|
Discovery string `yaml:"discovery" env:"ETCD_DISCOVERY"`
|
||||||
Discovery string `yaml:"discovery" env:"ETCD_DISCOVERY"`
|
GraphiteHost string `yaml:"graphite_host" env:"ETCD_GRAPHITE_HOST"`
|
||||||
HTTPReadTimeout string `yaml:"http_read_timeout" env:"ETCD_HTTP_READ_TIMEOUT"`
|
HTTPReadTimeout float64 `yaml:"http_read_timeout" env:"ETCD_HTTP_READ_TIMEOUT"`
|
||||||
HTTPWriteTimeout string `yaml:"http_write_timeout" env:"ETCD_HTTP_WRITE_TIMEOUT"`
|
HTTPWriteTimeout float64 `yaml:"http_write_timeout" env:"ETCD_HTTP_WRITE_TIMEOUT"`
|
||||||
KeyFile string `yaml:"key_file" env:"ETCD_KEY_FILE"`
|
KeyFile string `yaml:"key_file" env:"ETCD_KEY_FILE"`
|
||||||
MaxClusterSize string `yaml:"max_cluster_size" env:"ETCD_MAX_CLUSTER_SIZE"`
|
MaxResultBuffer int `yaml:"max_result_buffer" env:"ETCD_MAX_RESULT_BUFFER"`
|
||||||
MaxResultBuffer string `yaml:"max_result_buffer" env:"ETCD_MAX_RESULT_BUFFER"`
|
MaxRetryAttempts int `yaml:"max_retry_attempts" env:"ETCD_MAX_RETRY_ATTEMPTS"`
|
||||||
MaxRetryAttempts string `yaml:"max_retry_attempts" env:"ETCD_MAX_RETRY_ATTEMPTS"`
|
Name string `yaml:"name" env:"ETCD_NAME"`
|
||||||
Name string `yaml:"name" env:"ETCD_NAME"`
|
PeerAddr string `yaml:"peer_addr" env:"ETCD_PEER_ADDR"`
|
||||||
PeerAddr string `yaml:"peer_addr" env:"ETCD_PEER_ADDR"`
|
PeerBindAddr string `yaml:"peer_bind_addr" env:"ETCD_PEER_BIND_ADDR"`
|
||||||
PeerBindAddr string `yaml:"peer_bind_addr" env:"ETCD_PEER_BIND_ADDR"`
|
PeerCAFile string `yaml:"peer_ca_file" env:"ETCD_PEER_CA_FILE"`
|
||||||
PeerCAFile string `yaml:"peer_ca_file" env:"ETCD_PEER_CA_FILE"`
|
PeerCertFile string `yaml:"peer_cert_file" env:"ETCD_PEER_CERT_FILE"`
|
||||||
PeerCertFile string `yaml:"peer_cert_file" env:"ETCD_PEER_CERT_FILE"`
|
PeerElectionTimeout int `yaml:"peer_election_timeout" env:"ETCD_PEER_ELECTION_TIMEOUT"`
|
||||||
PeerKeyFile string `yaml:"peer_key_file" env:"ETCD_PEER_KEY_FILE"`
|
PeerHeartbeatInterval int `yaml:"peer_heartbeat_interval" env:"ETCD_PEER_HEARTBEAT_INTERVAL"`
|
||||||
Peers string `yaml:"peers" env:"ETCD_PEERS"`
|
PeerKeyFile string `yaml:"peer_key_file" env:"ETCD_PEER_KEY_FILE"`
|
||||||
PeersFile string `yaml:"peers_file" env:"ETCD_PEERS_FILE"`
|
Peers string `yaml:"peers" env:"ETCD_PEERS"`
|
||||||
Snapshot string `yaml:"snapshot" env:"ETCD_SNAPSHOT"`
|
PeersFile string `yaml:"peers_file" env:"ETCD_PEERS_FILE"`
|
||||||
Verbose string `yaml:"verbose" env:"ETCD_VERBOSE"`
|
RetryInterval float64 `yaml:"retry_interval" env:"ETCD_RETRY_INTERVAL"`
|
||||||
VeryVerbose string `yaml:"very_verbose" env:"ETCD_VERY_VERBOSE"`
|
Snapshot bool `yaml:"snapshot" env:"ETCD_SNAPSHOT"`
|
||||||
|
SnapshotCount int `yaml:"snapshot_count" env:"ETCD_SNAPSHOTCOUNT"`
|
||||||
|
StrTrace string `yaml:"trace" env:"ETCD_TRACE"`
|
||||||
|
Verbose bool `yaml:"verbose" env:"ETCD_VERBOSE"`
|
||||||
|
VeryVerbose bool `yaml:"very_verbose" env:"ETCD_VERY_VERBOSE"`
|
||||||
|
VeryVeryVerbose bool `yaml:"very_very_verbose" env:"ETCD_VERY_VERY_VERBOSE"`
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
package config
|
package config
|
||||||
|
|
||||||
type Flannel struct {
|
type Flannel struct {
|
||||||
EtcdEndpoint string `yaml:"etcd-endpoint" env:"FLANNELD_ETCD_ENDPOINT"`
|
EtcdEndpoint string `yaml:"etcd_endpoint" env:"FLANNELD_ETCD_ENDPOINT"`
|
||||||
EtcdPrefix string `yaml:"etcd-prefix" env:"FLANNELD_ETCD_PREFIX"`
|
EtcdPrefix string `yaml:"etcd_prefix" env:"FLANNELD_ETCD_PREFIX"`
|
||||||
IPMasq string `yaml:"ip-masq" env:"FLANNELD_IP_MASQ"`
|
IPMasq string `yaml:"ip_masq" env:"FLANNELD_IP_MASQ"`
|
||||||
SubnetFile string `yaml:"subnet-file" env:"FLANNELD_SUBNET_FILE"`
|
SubnetFile string `yaml:"subnet_file" env:"FLANNELD_SUBNET_FILE"`
|
||||||
Iface string `yaml:"interface" env:"FLANNELD_IFACE"`
|
Iface string `yaml:"interface" env:"FLANNELD_IFACE"`
|
||||||
}
|
}
|
||||||
|
@ -17,14 +17,15 @@
|
|||||||
package config
|
package config
|
||||||
|
|
||||||
type Fleet struct {
|
type Fleet struct {
|
||||||
AgentTTL string `yaml:"agent_ttl" env:"FLEET_AGENT_TTL"`
|
AgentTTL string `yaml:"agent_ttl" env:"FLEET_AGENT_TTL"`
|
||||||
EngineReconcileInterval string `yaml:"engine_reconcile_interval" env:"FLEET_ENGINE_RECONCILE_INTERVAL"`
|
EngineReconcileInterval float64 `yaml:"engine_reconcile_interval" env:"FLEET_ENGINE_RECONCILE_INTERVAL"`
|
||||||
EtcdCAFile string `yaml:"etcd_cafile" env:"FLEET_ETCD_CAFILE"`
|
EtcdCAFile string `yaml:"etcd_cafile" env:"FLEET_ETCD_CAFILE"`
|
||||||
EtcdCertFile string `yaml:"etcd_certfile" env:"FLEET_ETCD_CERTFILE"`
|
EtcdCertFile string `yaml:"etcd_certfile" env:"FLEET_ETCD_CERTFILE"`
|
||||||
EtcdKeyFile string `yaml:"etcd_keyfile" env:"FLEET_ETCD_KEYFILE"`
|
EtcdKeyFile string `yaml:"etcd_keyfile" env:"FLEET_ETCD_KEYFILE"`
|
||||||
EtcdRequestTimeout string `yaml:"etcd_request_timeout" env:"FLEET_ETCD_REQUEST_TIMEOUT"`
|
EtcdKeyPrefix string `yaml:"etcd_key_prefix" env:"FLEET_ETCD_KEY_PREFIX"`
|
||||||
EtcdServers string `yaml:"etcd_servers" env:"FLEET_ETCD_SERVERS"`
|
EtcdRequestTimeout float64 `yaml:"etcd_request_timeout" env:"FLEET_ETCD_REQUEST_TIMEOUT"`
|
||||||
Metadata string `yaml:"metadata" env:"FLEET_METADATA"`
|
EtcdServers string `yaml:"etcd_servers" env:"FLEET_ETCD_SERVERS"`
|
||||||
PublicIP string `yaml:"public_ip" env:"FLEET_PUBLIC_IP"`
|
Metadata string `yaml:"metadata" env:"FLEET_METADATA"`
|
||||||
Verbosity string `yaml:"verbosity" env:"FLEET_VERBOSITY"`
|
PublicIP string `yaml:"public_ip" env:"FLEET_PUBLIC_IP"`
|
||||||
|
Verbosity int `yaml:"verbosity" env:"FLEET_VERBOSITY"`
|
||||||
}
|
}
|
||||||
|
@ -125,7 +125,7 @@ func toNode(v interface{}, c context, n *node) {
|
|||||||
n.children = append(n.children, cn)
|
n.children = append(n.children, cn)
|
||||||
c.Increment()
|
c.Increment()
|
||||||
}
|
}
|
||||||
case reflect.String, reflect.Int, reflect.Bool:
|
case reflect.String, reflect.Int, reflect.Bool, reflect.Float64:
|
||||||
default:
|
default:
|
||||||
panic(fmt.Sprintf("toNode(): unhandled kind %s", vv.Kind()))
|
panic(fmt.Sprintf("toNode(): unhandled kind %s", vv.Kind()))
|
||||||
}
|
}
|
||||||
|
@ -61,7 +61,7 @@ func checkNodeStructure(n, g node, r *Report) {
|
|||||||
toNode(reflect.New(c).Elem().Interface(), context{}, &cg)
|
toNode(reflect.New(c).Elem().Interface(), context{}, &cg)
|
||||||
checkNodeStructure(cn, cg, r)
|
checkNodeStructure(cn, cg, r)
|
||||||
}
|
}
|
||||||
case reflect.String, reflect.Int, reflect.Bool:
|
case reflect.String, reflect.Int, reflect.Float64, reflect.Bool:
|
||||||
default:
|
default:
|
||||||
panic(fmt.Sprintf("checkNodeStructure(): unhandled kind %s", g.Kind()))
|
panic(fmt.Sprintf("checkNodeStructure(): unhandled kind %s", g.Kind()))
|
||||||
}
|
}
|
||||||
@ -92,7 +92,7 @@ func checkNodeValidity(n, g node, r *Report) {
|
|||||||
toNode(reflect.New(c).Elem().Interface(), context{}, &cg)
|
toNode(reflect.New(c).Elem().Interface(), context{}, &cg)
|
||||||
checkNodeValidity(cn, cg, r)
|
checkNodeValidity(cn, cg, r)
|
||||||
}
|
}
|
||||||
case reflect.String, reflect.Int, reflect.Bool:
|
case reflect.String, reflect.Int, reflect.Float64, reflect.Bool:
|
||||||
default:
|
default:
|
||||||
panic(fmt.Sprintf("checkNodeValidity(): unhandled kind %s", g.Kind()))
|
panic(fmt.Sprintf("checkNodeValidity(): unhandled kind %s", g.Kind()))
|
||||||
}
|
}
|
||||||
@ -104,10 +104,10 @@ func checkNodeValidity(n, g node, r *Report) {
|
|||||||
func isCompatible(n, g reflect.Kind) bool {
|
func isCompatible(n, g reflect.Kind) bool {
|
||||||
switch g {
|
switch g {
|
||||||
case reflect.String:
|
case reflect.String:
|
||||||
return n == reflect.String || n == reflect.Int || n == reflect.Bool
|
return n == reflect.String || n == reflect.Int || n == reflect.Float64 || n == reflect.Bool
|
||||||
case reflect.Struct:
|
case reflect.Struct:
|
||||||
return n == reflect.Struct || n == reflect.Map
|
return n == reflect.Struct || n == reflect.Map
|
||||||
case reflect.Bool, reflect.Slice:
|
case reflect.Bool, reflect.Slice, reflect.Int, reflect.Float64:
|
||||||
return n == g
|
return n == g
|
||||||
default:
|
default:
|
||||||
panic(fmt.Sprintf("isCompatible(): unhandled kind %s", g))
|
panic(fmt.Sprintf("isCompatible(): unhandled kind %s", g))
|
||||||
|
@ -31,9 +31,9 @@ func dropinContents(e interface{}) string {
|
|||||||
|
|
||||||
var out string
|
var out string
|
||||||
for i := 0; i < et.NumField(); i++ {
|
for i := 0; i < et.NumField(); i++ {
|
||||||
if val := ev.Field(i).String(); val != "" {
|
if val := ev.Field(i).Interface(); !config.IsZero(val) {
|
||||||
key := et.Field(i).Tag.Get("env")
|
key := et.Field(i).Tag.Get("env")
|
||||||
out += fmt.Sprintf("Environment=\"%s=%s\"\n", key, val)
|
out += fmt.Sprintf("Environment=\"%s=%v\"\n", key, val)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
55
system/env_test.go
Normal file
55
system/env_test.go
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
package system
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestDropinContents(t *testing.T) {
|
||||||
|
tests := []struct {
|
||||||
|
Config interface{}
|
||||||
|
Contents string
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
struct{}{},
|
||||||
|
"",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
struct {
|
||||||
|
A string `env:"A"`
|
||||||
|
B int `env:"B"`
|
||||||
|
C bool `env:"C"`
|
||||||
|
D float64 `env:"D"`
|
||||||
|
}{
|
||||||
|
"hi", 1, true, 0.12345,
|
||||||
|
},
|
||||||
|
`[Service]
|
||||||
|
Environment="A=hi"
|
||||||
|
Environment="B=1"
|
||||||
|
Environment="C=true"
|
||||||
|
Environment="D=0.12345"
|
||||||
|
`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
struct {
|
||||||
|
A float64 `env:"A"`
|
||||||
|
B float64 `env:"B"`
|
||||||
|
C float64 `env:"C"`
|
||||||
|
D float64 `env:"D"`
|
||||||
|
}{
|
||||||
|
0.000001, 1, 0.9999999, 0.1,
|
||||||
|
},
|
||||||
|
`[Service]
|
||||||
|
Environment="A=1e-06"
|
||||||
|
Environment="B=1"
|
||||||
|
Environment="C=0.9999999"
|
||||||
|
Environment="D=0.1"
|
||||||
|
`,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, tt := range tests {
|
||||||
|
if c := dropinContents(tt.Config); c != tt.Contents {
|
||||||
|
t.Errorf("bad contents (%+v): want %q, got %q", tt, tt.Contents, c)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -67,7 +67,7 @@ Environment="ETCD_PEER_BIND_ADDR=127.0.0.1:7002"
|
|||||||
} {
|
} {
|
||||||
units := Etcd{tt.config}.Units()
|
units := Etcd{tt.config}.Units()
|
||||||
if !reflect.DeepEqual(tt.units, units) {
|
if !reflect.DeepEqual(tt.units, units) {
|
||||||
t.Errorf("bad units (%q): want %#v, got %#v", tt.config, tt.units, units)
|
t.Errorf("bad units (%+v): want %#v, got %#v", tt.config, tt.units, units)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -48,7 +48,7 @@ Environment="FLEET_PUBLIC_IP=12.34.56.78"
|
|||||||
} {
|
} {
|
||||||
units := Fleet{tt.config}.Units()
|
units := Fleet{tt.config}.Units()
|
||||||
if !reflect.DeepEqual(units, tt.units) {
|
if !reflect.DeepEqual(units, tt.units) {
|
||||||
t.Errorf("bad units (%q): want %#v, got %#v", tt.config, tt.units, units)
|
t.Errorf("bad units (%+v): want %#v, got %#v", tt.config, tt.units, units)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user