From f213c55723b929bf393117d39029f2b71918501f Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Thu, 28 Jun 2018 15:13:33 -0500 Subject: [PATCH] agent/config: parse upstreams with multiple service definitions --- agent/config/config.go | 1 + agent/config/runtime_test.go | 59 ++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+) diff --git a/agent/config/config.go b/agent/config/config.go index 642b0f3a1..ab81c2f71 100644 --- a/agent/config/config.go +++ b/agent/config/config.go @@ -85,6 +85,7 @@ func Parse(data string, format string) (c Config, err error) { "services.checks", "watches", "service.connect.proxy.config.upstreams", + "services.connect.proxy.config.upstreams", }) // There is a difference of representation of some fields depending on diff --git a/agent/config/runtime_test.go b/agent/config/runtime_test.go index f2c5a07a7..9592b4967 100644 --- a/agent/config/runtime_test.go +++ b/agent/config/runtime_test.go @@ -2159,6 +2159,65 @@ func TestConfigFlagsAndEdgecases(t *testing.T) { }, }, + { + desc: "JSON multiple services managed proxy 'upstreams'", + args: []string{ + `-data-dir=` + dataDir, + }, + json: []string{ + `{ + "services": [{ + "name": "web", + "port": 8080, + "connect": { + "proxy": { + "config": { + "upstreams": [{ + "local_bind_port": 1234 + }, { + "local_bind_port": 2345 + }] + } + } + } + },{ + "name": "service-A2", + "port": 81, + "tags": [], + "checks": [] + }] + }`, + }, + skipformat: true, // skipping HCL cause we get slightly diff types (okay) + patch: func(rt *RuntimeConfig) { + rt.DataDir = dataDir + rt.Services = []*structs.ServiceDefinition{ + &structs.ServiceDefinition{ + Name: "web", + Port: 8080, + Connect: &structs.ServiceConnect{ + Proxy: &structs.ServiceDefinitionConnectProxy{ + Config: map[string]interface{}{ + "upstreams": []interface{}{ + map[string]interface{}{ + "local_bind_port": float64(1234), + }, + map[string]interface{}{ + "local_bind_port": float64(2345), + }, + }, + }, + }, + }, + }, + &structs.ServiceDefinition{ + Name: "service-A2", + Port: 81, + }, + } + }, + }, + { desc: "enabling Connect allow_managed_root", args: []string{