mirror of https://github.com/status-im/consul.git
agent: convert the proxy bind_port to int if it is a float
This commit is contained in:
parent
0a1adb8b75
commit
a76f652fd2
|
@ -2132,8 +2132,8 @@ func (a *Agent) AddProxy(proxy *structs.ConnectManagedProxy, persist bool,
|
|||
}
|
||||
chkTypes := []*structs.CheckType{
|
||||
&structs.CheckType{
|
||||
Name: "Connect Proxy Listening",
|
||||
TCP: fmt.Sprintf("%s:%d", proxyCfg["bind_address"],
|
||||
Name: "Connect Proxy Listening",
|
||||
TCP: fmt.Sprintf("%s:%d", proxyCfg["bind_address"],
|
||||
proxyCfg["bind_port"]),
|
||||
Interval: 10 * time.Second,
|
||||
},
|
||||
|
@ -2200,6 +2200,19 @@ func (a *Agent) applyProxyConfigDefaults(p *structs.ConnectManagedProxy) (map[st
|
|||
// Default to localhost and the port the service registered with
|
||||
config["local_service_address"] = fmt.Sprintf("127.0.0.1:%d", target.Port)
|
||||
}
|
||||
|
||||
// Basic type conversions for expected types.
|
||||
if raw, ok := config["bind_port"]; ok {
|
||||
switch v := raw.(type) {
|
||||
case float64:
|
||||
// Common since HCL/JSON parse as float64
|
||||
config["bind_port"] = int(v)
|
||||
|
||||
// NOTE(mitchellh): No default case since errors and validation
|
||||
// are handled by the ServiceDefinition.Validate function.
|
||||
}
|
||||
}
|
||||
|
||||
return config, nil
|
||||
}
|
||||
|
||||
|
|
|
@ -2677,6 +2677,24 @@ func TestAgent_AddProxy(t *testing.T) {
|
|||
wantTCPCheck: "127.10.10.10:1234",
|
||||
wantErr: false,
|
||||
},
|
||||
|
||||
{
|
||||
// This test is necessary since JSON and HCL both will parse
|
||||
// numbers as a float64.
|
||||
desc: "managed proxy with custom bind port (float64)",
|
||||
proxy: &structs.ConnectManagedProxy{
|
||||
ExecMode: structs.ProxyExecModeDaemon,
|
||||
Command: []string{"consul", "connect", "proxy"},
|
||||
Config: map[string]interface{}{
|
||||
"foo": "bar",
|
||||
"bind_address": "127.10.10.10",
|
||||
"bind_port": float64(1234),
|
||||
},
|
||||
TargetServiceID: "web",
|
||||
},
|
||||
wantTCPCheck: "127.10.10.10:1234",
|
||||
wantErr: false,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
|
|
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue