connect: updating a service-defaults config entry should leave an unset protocol alone (#6342)
If the entry is updated for reasons other than protocol it is surprising that the value is explicitly persisted as 'tcp' rather than leaving it empty and letting it fall back dynamically on the proxy-defaults value.
This commit is contained in:
parent
1238b8593a
commit
f84f509ce4
|
@ -23,11 +23,13 @@ func TestConfigEntry_Apply(t *testing.T) {
|
|||
codec := rpcClient(t, s1)
|
||||
defer codec.Close()
|
||||
|
||||
updated := &structs.ServiceConfigEntry{
|
||||
Name: "foo",
|
||||
}
|
||||
|
||||
args := structs.ConfigEntryRequest{
|
||||
Datacenter: "dc1",
|
||||
Entry: &structs.ServiceConfigEntry{
|
||||
Name: "foo",
|
||||
},
|
||||
Entry: updated,
|
||||
}
|
||||
out := false
|
||||
require.NoError(msgpackrpc.CallWithCodec(codec, "ConfigEntry.Apply", &args, &out))
|
||||
|
@ -42,13 +44,17 @@ func TestConfigEntry_Apply(t *testing.T) {
|
|||
require.Equal("foo", serviceConf.Name)
|
||||
require.Equal(structs.ServiceDefaults, serviceConf.Kind)
|
||||
|
||||
updated = &structs.ServiceConfigEntry{
|
||||
Name: "foo",
|
||||
MeshGateway: structs.MeshGatewayConfig{
|
||||
Mode: structs.MeshGatewayModeLocal,
|
||||
},
|
||||
}
|
||||
|
||||
args = structs.ConfigEntryRequest{
|
||||
Datacenter: "dc1",
|
||||
Op: structs.ConfigEntryUpsertCAS,
|
||||
Entry: &structs.ServiceConfigEntry{
|
||||
Name: "foo",
|
||||
Protocol: "tcp",
|
||||
},
|
||||
Entry: updated,
|
||||
}
|
||||
|
||||
require.NoError(msgpackrpc.CallWithCodec(codec, "ConfigEntry.Apply", &args, &out))
|
||||
|
@ -64,9 +70,10 @@ func TestConfigEntry_Apply(t *testing.T) {
|
|||
|
||||
serviceConf, ok = entry.(*structs.ServiceConfigEntry)
|
||||
require.True(ok)
|
||||
require.Equal("foo", serviceConf.Name)
|
||||
require.Equal("tcp", serviceConf.Protocol)
|
||||
require.Equal(structs.ServiceDefaults, serviceConf.Kind)
|
||||
|
||||
updated.Kind = structs.ServiceDefaults // the server adds this
|
||||
updated.RaftIndex = serviceConf.RaftIndex // these will always be different
|
||||
require.Equal(updated, serviceConf)
|
||||
}
|
||||
|
||||
func TestConfigEntry_ProxyDefaultsMeshGateway(t *testing.T) {
|
||||
|
|
|
@ -79,11 +79,7 @@ func (e *ServiceConfigEntry) Normalize() error {
|
|||
}
|
||||
|
||||
e.Kind = ServiceDefaults
|
||||
if e.Protocol == "" {
|
||||
e.Protocol = DefaultServiceProtocol
|
||||
} else {
|
||||
e.Protocol = strings.ToLower(e.Protocol)
|
||||
}
|
||||
e.Protocol = strings.ToLower(e.Protocol)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue