Add decode rules for Expose cfg in service-defaults (#7611)

This commit is contained in:
Freddy 2020-04-07 19:37:47 -06:00 committed by GitHub
parent 74bd138bae
commit aae14b3951
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 149 additions and 4 deletions

View File

@ -340,10 +340,15 @@ func ConfigEntryDecodeRulesForKind(kind string) (skipWhenPatching []string, tran
"config": "", "config": "",
}, nil }, nil
case ServiceDefaults: case ServiceDefaults:
return nil, map[string]string{ return []string{
"mesh_gateway": "meshgateway", "expose.paths",
"external_sni": "externalsni", "Expose.Paths",
}, nil }, map[string]string{
"local_path_port": "localpathport",
"listener_port": "listenerport",
"mesh_gateway": "meshgateway",
"external_sni": "externalsni",
}, nil
case ServiceRouter: case ServiceRouter:
return []string{ return []string{
"routes", "routes",

View File

@ -1170,6 +1170,12 @@ func TestParseConfigEntry(t *testing.T) {
listener_port = 21500 listener_port = 21500
path = "/healthz" path = "/healthz"
protocol = "http2" protocol = "http2"
},
{
local_path_port = 8000
listener_port = 21501
path = "/metrics"
protocol = "http"
} }
] ]
}`, }`,
@ -1184,6 +1190,12 @@ func TestParseConfigEntry(t *testing.T) {
ListenerPort = 21500 ListenerPort = 21500
Path = "/healthz" Path = "/healthz"
Protocol = "http2" Protocol = "http2"
},
{
LocalPathPort = 8000
ListenerPort = 21501
Path = "/metrics"
Protocol = "http"
} }
] ]
}`, }`,
@ -1199,6 +1211,12 @@ func TestParseConfigEntry(t *testing.T) {
"listener_port": 21500, "listener_port": 21500,
"path": "/healthz", "path": "/healthz",
"protocol": "http2" "protocol": "http2"
},
{
"local_path_port": 8000,
"listener_port": 21501,
"path": "/metrics",
"protocol": "http"
} }
] ]
} }
@ -1216,6 +1234,12 @@ func TestParseConfigEntry(t *testing.T) {
"ListenerPort": 21500, "ListenerPort": 21500,
"Path": "/healthz", "Path": "/healthz",
"Protocol": "http2" "Protocol": "http2"
},
{
"LocalPathPort": 8000,
"ListenerPort": 21501,
"Path": "/metrics",
"Protocol": "http"
} }
] ]
} }
@ -1233,6 +1257,122 @@ func TestParseConfigEntry(t *testing.T) {
LocalPathPort: 8080, LocalPathPort: 8080,
Protocol: "http2", Protocol: "http2",
}, },
{
ListenerPort: 21501,
Path: "/metrics",
LocalPathPort: 8000,
Protocol: "http",
},
},
},
},
},
{
name: "expose paths: kitchen sink service defaults",
snake: `
kind = "service-defaults"
name = "web"
expose = {
checks = true
paths = [
{
local_path_port = 8080
listener_port = 21500
path = "/healthz"
protocol = "http2"
},
{
local_path_port = 8000
listener_port = 21501
path = "/metrics"
protocol = "http"
}
]
}`,
camel: `
Kind = "service-defaults"
Name = "web"
Expose = {
Checks = true
Paths = [
{
LocalPathPort = 8080
ListenerPort = 21500
Path = "/healthz"
Protocol = "http2"
},
{
LocalPathPort = 8000
ListenerPort = 21501
Path = "/metrics"
Protocol = "http"
}
]
}`,
snakeJSON: `
{
"kind": "service-defaults",
"name": "web",
"expose": {
"checks": true,
"paths": [
{
"local_path_port": 8080,
"listener_port": 21500,
"path": "/healthz",
"protocol": "http2"
},
{
"local_path_port": 8000,
"listener_port": 21501,
"path": "/metrics",
"protocol": "http"
}
]
}
}
`,
camelJSON: `
{
"Kind": "service-defaults",
"Name": "web",
"Expose": {
"Checks": true,
"Paths": [
{
"LocalPathPort": 8080,
"ListenerPort": 21500,
"Path": "/healthz",
"Protocol": "http2"
},
{
"LocalPathPort": 8000,
"ListenerPort": 21501,
"Path": "/metrics",
"Protocol": "http"
}
]
}
}
`,
expect: &api.ServiceConfigEntry{
Kind: "service-defaults",
Name: "web",
Expose: api.ExposeConfig{
Checks: true,
Paths: []api.ExposePath{
{
ListenerPort: 21500,
Path: "/healthz",
LocalPathPort: 8080,
Protocol: "http2",
},
{
ListenerPort: 21501,
Path: "/metrics",
LocalPathPort: 8000,
Protocol: "http",
},
}, },
}, },
}, },