mirror of https://github.com/hashicorp/consul
Default `ProxyType` for builtin extensions (#17657)
parent
862e78f063
commit
c04c122ef3
|
@ -60,6 +60,9 @@ func (r *ratelimit) fromArguments(args map[string]interface{}) error {
|
|||
if err := mapstructure.Decode(args, r); err != nil {
|
||||
return fmt.Errorf("error decoding extension arguments: %v", err)
|
||||
}
|
||||
if r.ProxyType == "" {
|
||||
r.ProxyType = string(api.ServiceKindConnectProxy)
|
||||
}
|
||||
return r.validate()
|
||||
}
|
||||
|
||||
|
@ -188,7 +191,7 @@ func (r ratelimit) PatchFilter(p extensioncommon.FilterPayload) (*envoy_listener
|
|||
}
|
||||
|
||||
func validateProxyType(t string) error {
|
||||
if t != "connect-proxy" {
|
||||
if t != string(api.ServiceKindConnectProxy) {
|
||||
return fmt.Errorf("unexpected ProxyType %q", t)
|
||||
}
|
||||
|
||||
|
|
|
@ -111,6 +111,30 @@ func TestConstructor(t *testing.T) {
|
|||
expectedErrMsg: "cannot parse 'FilterEnforced', -1 overflows uint",
|
||||
ok: false,
|
||||
},
|
||||
"invalid proxy type": {
|
||||
arguments: makeArguments(map[string]interface{}{
|
||||
"ProxyType": "invalid",
|
||||
"FillInterval": 30,
|
||||
"MaxTokens": 20,
|
||||
"TokensPerFill": 5,
|
||||
}),
|
||||
expectedErrMsg: `unexpected ProxyType "invalid"`,
|
||||
ok: false,
|
||||
},
|
||||
"default proxy type": {
|
||||
arguments: makeArguments(map[string]interface{}{
|
||||
"FillInterval": 30,
|
||||
"MaxTokens": 20,
|
||||
"TokensPerFill": 5,
|
||||
}),
|
||||
expected: ratelimit{
|
||||
ProxyType: "connect-proxy",
|
||||
MaxTokens: intPointer(20),
|
||||
FillInterval: intPointer(30),
|
||||
TokensPerFill: intPointer(5),
|
||||
},
|
||||
ok: true,
|
||||
},
|
||||
"valid everything": {
|
||||
arguments: makeArguments(map[string]interface{}{
|
||||
"ProxyType": "connect-proxy",
|
||||
|
|
|
@ -45,6 +45,9 @@ func (l *lua) fromArguments(args map[string]interface{}) error {
|
|||
if err := mapstructure.Decode(args, l); err != nil {
|
||||
return fmt.Errorf("error decoding extension arguments: %v", err)
|
||||
}
|
||||
if l.ProxyType == "" {
|
||||
l.ProxyType = string(api.ServiceKindConnectProxy)
|
||||
}
|
||||
return l.validate()
|
||||
}
|
||||
|
||||
|
@ -53,7 +56,7 @@ func (l *lua) validate() error {
|
|||
if l.Script == "" {
|
||||
resultErr = multierror.Append(resultErr, fmt.Errorf("missing Script value"))
|
||||
}
|
||||
if l.ProxyType != "connect-proxy" {
|
||||
if l.ProxyType != string(api.ServiceKindConnectProxy) {
|
||||
resultErr = multierror.Append(resultErr, fmt.Errorf("unexpected ProxyType %q", l.ProxyType))
|
||||
}
|
||||
if l.Listener != "inbound" && l.Listener != "outbound" {
|
||||
|
|
|
@ -54,6 +54,15 @@ func TestConstructor(t *testing.T) {
|
|||
arguments: makeArguments(map[string]interface{}{"Listener": "invalid"}),
|
||||
ok: false,
|
||||
},
|
||||
"default proxy type": {
|
||||
arguments: makeArguments(map[string]interface{}{"ProxyType": ""}),
|
||||
expected: lua{
|
||||
ProxyType: "connect-proxy",
|
||||
Listener: "inbound",
|
||||
Script: "lua-script",
|
||||
},
|
||||
ok: true,
|
||||
},
|
||||
"valid everything": {
|
||||
arguments: makeArguments(map[string]interface{}{}),
|
||||
expected: lua{
|
||||
|
|
|
@ -261,6 +261,9 @@ func (p *propertyOverride) validate() error {
|
|||
}
|
||||
}
|
||||
|
||||
if p.ProxyType == "" {
|
||||
p.ProxyType = api.ServiceKindConnectProxy
|
||||
}
|
||||
if err := validProxyTypes.CheckRequired(string(p.ProxyType), "ProxyType"); err != nil {
|
||||
resultErr = multierror.Append(resultErr, err)
|
||||
}
|
||||
|
|
|
@ -236,7 +236,7 @@ func TestConstructor(t *testing.T) {
|
|||
// enforces expected behavior until we do. Multi-member slices should be unaffected
|
||||
// by WeakDecode as it is a more-permissive version of the default behavior.
|
||||
"single value Patches decoded as map construction succeeds": {
|
||||
arguments: makeArguments(map[string]any{"Patches": makePatch(map[string]any{})}),
|
||||
arguments: makeArguments(map[string]any{"Patches": makePatch(map[string]any{}), "ProxyType": nil}),
|
||||
expected: validTestCase(OpAdd, extensioncommon.TrafficDirectionOutbound, ResourceTypeRoute).expected,
|
||||
ok: true,
|
||||
},
|
||||
|
|
Loading…
Reference in New Issue