Skip to content

Commit 20cb68b

Browse files
authored
feat: add listener metadata (envoyproxy#6639)
* add listener metadata Signed-off-by: Huabing (Robin) Zhao <zhaohuabing@gmail.com> * remove sort Signed-off-by: Huabing (Robin) Zhao <zhaohuabing@gmail.com> --------- Signed-off-by: Huabing (Robin) Zhao <zhaohuabing@gmail.com>
1 parent ec3340c commit 20cb68b

32 files changed

+336
-1
lines changed

internal/cmd/egctl/testdata/translate/out/default-resources.all.yaml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1127,6 +1127,14 @@ xds:
11271127
useRemoteAddress: true
11281128
name: default/eg/http
11291129
maxConnectionsToAcceptPerSocketEvent: 1
1130+
metadata:
1131+
filterMetadata:
1132+
envoy-gateway:
1133+
resources:
1134+
- kind: Gateway
1135+
name: eg
1136+
namespace: default
1137+
sectionName: http
11301138
name: default/eg/http
11311139
perConnectionBufferLimitBytes: 32768
11321140
- activeState:
@@ -1239,6 +1247,14 @@ xds:
12391247
useRemoteAddress: true
12401248
name: default/eg/grpc
12411249
maxConnectionsToAcceptPerSocketEvent: 1
1250+
metadata:
1251+
filterMetadata:
1252+
envoy-gateway:
1253+
resources:
1254+
- kind: Gateway
1255+
name: eg
1256+
namespace: default
1257+
sectionName: grpc
12421258
name: default/eg/grpc
12431259
perConnectionBufferLimitBytes: 32768
12441260
- activeState:

internal/cmd/egctl/testdata/translate/out/from-gateway-api-to-xds.all.json

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -978,6 +978,20 @@
978978
"name": "default/eg/http"
979979
},
980980
"maxConnectionsToAcceptPerSocketEvent": 1,
981+
"metadata": {
982+
"filterMetadata": {
983+
"envoy-gateway": {
984+
"resources": [
985+
{
986+
"kind": "Gateway",
987+
"name": "eg",
988+
"namespace": "default",
989+
"sectionName": "http"
990+
}
991+
]
992+
}
993+
}
994+
},
981995
"name": "default/eg/http",
982996
"perConnectionBufferLimitBytes": 32768
983997
}
@@ -1130,6 +1144,20 @@
11301144
"name": "default/eg/grpc"
11311145
},
11321146
"maxConnectionsToAcceptPerSocketEvent": 1,
1147+
"metadata": {
1148+
"filterMetadata": {
1149+
"envoy-gateway": {
1150+
"resources": [
1151+
{
1152+
"kind": "Gateway",
1153+
"name": "eg",
1154+
"namespace": "default",
1155+
"sectionName": "grpc"
1156+
}
1157+
]
1158+
}
1159+
}
1160+
},
11331161
"name": "default/eg/grpc",
11341162
"perConnectionBufferLimitBytes": 32768
11351163
}

internal/cmd/egctl/testdata/translate/out/from-gateway-api-to-xds.all.yaml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -580,6 +580,14 @@ xds:
580580
useRemoteAddress: true
581581
name: default/eg/http
582582
maxConnectionsToAcceptPerSocketEvent: 1
583+
metadata:
584+
filterMetadata:
585+
envoy-gateway:
586+
resources:
587+
- kind: Gateway
588+
name: eg
589+
namespace: default
590+
sectionName: http
583591
name: default/eg/http
584592
perConnectionBufferLimitBytes: 32768
585593
- activeState:
@@ -692,6 +700,14 @@ xds:
692700
useRemoteAddress: true
693701
name: default/eg/grpc
694702
maxConnectionsToAcceptPerSocketEvent: 1
703+
metadata:
704+
filterMetadata:
705+
envoy-gateway:
706+
resources:
707+
- kind: Gateway
708+
name: eg
709+
namespace: default
710+
sectionName: grpc
695711
name: default/eg/grpc
696712
perConnectionBufferLimitBytes: 32768
697713
- activeState:

internal/cmd/egctl/testdata/translate/out/from-gateway-api-to-xds.listener.yaml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,14 @@ xds:
143143
useRemoteAddress: true
144144
name: default/eg/http
145145
maxConnectionsToAcceptPerSocketEvent: 1
146+
metadata:
147+
filterMetadata:
148+
envoy-gateway:
149+
resources:
150+
- kind: Gateway
151+
name: eg
152+
namespace: default
153+
sectionName: http
146154
name: default/eg/http
147155
perConnectionBufferLimitBytes: 32768
148156
- activeState:
@@ -255,6 +263,14 @@ xds:
255263
useRemoteAddress: true
256264
name: default/eg/grpc
257265
maxConnectionsToAcceptPerSocketEvent: 1
266+
metadata:
267+
filterMetadata:
268+
envoy-gateway:
269+
resources:
270+
- kind: Gateway
271+
name: eg
272+
namespace: default
273+
sectionName: grpc
258274
name: default/eg/grpc
259275
perConnectionBufferLimitBytes: 32768
260276
- activeState:

internal/cmd/egctl/testdata/translate/out/jwt-single-route-single-match-to-xds.all.json

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -689,6 +689,20 @@
689689
"name": "envoy-gateway-system/eg/http"
690690
},
691691
"maxConnectionsToAcceptPerSocketEvent": 1,
692+
"metadata": {
693+
"filterMetadata": {
694+
"envoy-gateway": {
695+
"resources": [
696+
{
697+
"kind": "Gateway",
698+
"name": "eg",
699+
"namespace": "envoy-gateway-system",
700+
"sectionName": "http"
701+
}
702+
]
703+
}
704+
}
705+
},
692706
"name": "envoy-gateway-system/eg/http",
693707
"perConnectionBufferLimitBytes": 32768
694708
}

internal/cmd/egctl/testdata/translate/out/jwt-single-route-single-match-to-xds.all.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -418,6 +418,14 @@ xds:
418418
useRemoteAddress: true
419419
name: envoy-gateway-system/eg/http
420420
maxConnectionsToAcceptPerSocketEvent: 1
421+
metadata:
422+
filterMetadata:
423+
envoy-gateway:
424+
resources:
425+
- kind: Gateway
426+
name: eg
427+
namespace: envoy-gateway-system
428+
sectionName: http
421429
name: envoy-gateway-system/eg/http
422430
perConnectionBufferLimitBytes: 32768
423431
- '@type': type.googleapis.com/envoy.admin.v3.RoutesConfigDump

internal/cmd/egctl/testdata/translate/out/jwt-single-route-single-match-to-xds.listener.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,5 +163,13 @@ xds:
163163
useRemoteAddress: true
164164
name: envoy-gateway-system/eg/http
165165
maxConnectionsToAcceptPerSocketEvent: 1
166+
metadata:
167+
filterMetadata:
168+
envoy-gateway:
169+
resources:
170+
- kind: Gateway
171+
name: eg
172+
namespace: envoy-gateway-system
173+
sectionName: http
166174
name: envoy-gateway-system/eg/http
167175
perConnectionBufferLimitBytes: 32768

internal/cmd/egctl/testdata/translate/out/no-service-cluster-ip.all.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -353,6 +353,14 @@ xds:
353353
useRemoteAddress: true
354354
name: envoy-gateway-system/eg/http
355355
maxConnectionsToAcceptPerSocketEvent: 1
356+
metadata:
357+
filterMetadata:
358+
envoy-gateway:
359+
resources:
360+
- kind: Gateway
361+
name: eg
362+
namespace: envoy-gateway-system
363+
sectionName: http
356364
name: envoy-gateway-system/eg/http
357365
perConnectionBufferLimitBytes: 32768
358366
- '@type': type.googleapis.com/envoy.admin.v3.RoutesConfigDump

internal/xds/translator/metadata.go

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,23 @@ func buildXdsMetadata(metadata *ir.ResourceMetadata) *corev3.Metadata {
2727
return nil
2828
}
2929

30+
return buildXdsMetadataFromMultiple([]*ir.ResourceMetadata{metadata})
31+
}
32+
33+
func buildXdsMetadataFromMultiple(metadata []*ir.ResourceMetadata) *corev3.Metadata {
34+
if metadata == nil {
35+
return nil
36+
}
37+
3038
resourcesList := &structpb.ListValue{}
31-
resourcesList.Values = append(resourcesList.Values, buildResourceMetadata(metadata))
39+
for _, md := range metadata {
40+
if md != nil {
41+
resourcesList.Values = append(resourcesList.Values, buildResourceMetadata(md))
42+
}
43+
}
44+
if len(resourcesList.Values) == 0 {
45+
return nil
46+
}
3247

3348
return &corev3.Metadata{
3449
FilterMetadata: map[string]*structpb.Struct{

internal/xds/translator/testdata/out/xds-ir/accesslog-types.listeners.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -345,5 +345,13 @@
345345
useRemoteAddress: true
346346
name: envoy-gateway/gateway-1/http
347347
maxConnectionsToAcceptPerSocketEvent: 1
348+
metadata:
349+
filterMetadata:
350+
envoy-gateway:
351+
resources:
352+
- kind: Gateway
353+
name: gateway-1
354+
namespace: envoy-gateway
355+
sectionName: http
348356
name: envoy-gateway/gateway-1/http
349357
perConnectionBufferLimitBytes: 32768

0 commit comments

Comments
 (0)