@@ -42,66 +42,69 @@ func Test_ToGateway(t *testing.T) {
42
42
43
43
testCases := []struct {
44
44
name string
45
- ingresses map [types. NamespacedName ] * networkingv1. Ingress
45
+ ingresses OrderedIngressMap
46
46
expectedGatewayResources i2gw.GatewayResources
47
47
expectedErrors field.ErrorList
48
48
}{
49
49
{
50
50
name : "canary deployment" ,
51
- ingresses : map [types.NamespacedName ]* networkingv1.Ingress {
52
- {Namespace : "default" , Name : "production" }: {
53
- ObjectMeta : metav1.ObjectMeta {Name : "production" , Namespace : "default" },
54
- Spec : networkingv1.IngressSpec {
55
- IngressClassName : ptrTo ("ingress-nginx" ),
56
- Rules : []networkingv1.IngressRule {{
57
- Host : "echo.prod.mydomain.com" ,
58
- IngressRuleValue : networkingv1.IngressRuleValue {
59
- HTTP : & networkingv1.HTTPIngressRuleValue {
60
- Paths : []networkingv1.HTTPIngressPath {{
61
- Path : "/" ,
62
- PathType : & iPrefix ,
63
- Backend : networkingv1.IngressBackend {
64
- Resource : & corev1.TypedLocalObjectReference {
65
- Name : "production" ,
66
- Kind : "StorageBucket" ,
67
- APIGroup : ptrTo ("vendor.example.com" ),
51
+ ingresses : OrderedIngressMap {
52
+ ingressNames : []types.NamespacedName {{Namespace : "default" , Name : "production" }, {Namespace : "default" , Name : "canary" }},
53
+ ingressObjects : map [types.NamespacedName ]* networkingv1.Ingress {
54
+ {Namespace : "default" , Name : "production" }: {
55
+ ObjectMeta : metav1.ObjectMeta {Name : "production" , Namespace : "default" },
56
+ Spec : networkingv1.IngressSpec {
57
+ IngressClassName : ptrTo ("ingress-nginx" ),
58
+ Rules : []networkingv1.IngressRule {{
59
+ Host : "echo.prod.mydomain.com" ,
60
+ IngressRuleValue : networkingv1.IngressRuleValue {
61
+ HTTP : & networkingv1.HTTPIngressRuleValue {
62
+ Paths : []networkingv1.HTTPIngressPath {{
63
+ Path : "/" ,
64
+ PathType : & iPrefix ,
65
+ Backend : networkingv1.IngressBackend {
66
+ Resource : & corev1.TypedLocalObjectReference {
67
+ Name : "production" ,
68
+ Kind : "StorageBucket" ,
69
+ APIGroup : ptrTo ("vendor.example.com" ),
70
+ },
68
71
},
69
- },
70
- }} ,
72
+ }} ,
73
+ },
71
74
},
72
- },
73
- }},
74
- },
75
- },
76
- {Namespace : "default" , Name : "canary" }: {
77
- ObjectMeta : metav1.ObjectMeta {
78
- Name : "canary" ,
79
- Namespace : "default" ,
80
- Annotations : map [string ]string {
81
- "nginx.ingress.kubernetes.io/canary" : "true" ,
82
- "nginx.ingress.kubernetes.io/canary-weight" : "20" ,
75
+ }},
83
76
},
84
77
},
85
- Spec : networkingv1.IngressSpec {
86
- IngressClassName : ptrTo ("ingress-nginx" ),
87
- Rules : []networkingv1.IngressRule {{
88
- Host : "echo.prod.mydomain.com" ,
89
- IngressRuleValue : networkingv1.IngressRuleValue {
90
- HTTP : & networkingv1.HTTPIngressRuleValue {
91
- Paths : []networkingv1.HTTPIngressPath {{
92
- Path : "/" ,
93
- PathType : & iPrefix ,
94
- Backend : networkingv1.IngressBackend {
95
- Resource : & corev1.TypedLocalObjectReference {
96
- Name : "canary" ,
97
- Kind : "StorageBucket" ,
98
- APIGroup : ptrTo ("vendor.example.com" ),
78
+ {Namespace : "default" , Name : "canary" }: {
79
+ ObjectMeta : metav1.ObjectMeta {
80
+ Name : "canary" ,
81
+ Namespace : "default" ,
82
+ Annotations : map [string ]string {
83
+ "nginx.ingress.kubernetes.io/canary" : "true" ,
84
+ "nginx.ingress.kubernetes.io/canary-weight" : "20" ,
85
+ },
86
+ },
87
+ Spec : networkingv1.IngressSpec {
88
+ IngressClassName : ptrTo ("ingress-nginx" ),
89
+ Rules : []networkingv1.IngressRule {{
90
+ Host : "echo.prod.mydomain.com" ,
91
+ IngressRuleValue : networkingv1.IngressRuleValue {
92
+ HTTP : & networkingv1.HTTPIngressRuleValue {
93
+ Paths : []networkingv1.HTTPIngressPath {{
94
+ Path : "/" ,
95
+ PathType : & iPrefix ,
96
+ Backend : networkingv1.IngressBackend {
97
+ Resource : & corev1.TypedLocalObjectReference {
98
+ Name : "canary" ,
99
+ Kind : "StorageBucket" ,
100
+ APIGroup : ptrTo ("vendor.example.com" ),
101
+ },
99
102
},
100
- },
101
- }} ,
103
+ }} ,
104
+ },
102
105
},
103
- },
104
- }} ,
106
+ }} ,
107
+ },
105
108
},
106
109
},
107
110
},
@@ -168,33 +171,36 @@ func Test_ToGateway(t *testing.T) {
168
171
},
169
172
{
170
173
name : "ImplementationSpecific HTTPRouteMatching" ,
171
- ingresses : map [types.NamespacedName ]* networkingv1.Ingress {
172
- {Namespace : "default" , Name : "implementation-specific-regex" }: {
173
- ObjectMeta : metav1.ObjectMeta {
174
- Name : "implementation-specific-regex" ,
175
- Namespace : "default" ,
176
- },
177
- Spec : networkingv1.IngressSpec {
178
- IngressClassName : ptrTo ("ingress-nginx" ),
179
- Rules : []networkingv1.IngressRule {{
180
- Host : "test.mydomain.com" ,
181
- IngressRuleValue : networkingv1.IngressRuleValue {
182
- HTTP : & networkingv1.HTTPIngressRuleValue {
183
- Paths : []networkingv1.HTTPIngressPath {{
184
- Path : "/~/echo/**/test" ,
185
- PathType : & isPathType ,
186
- Backend : networkingv1.IngressBackend {
187
- Service : & networkingv1.IngressServiceBackend {
188
- Name : "test" ,
189
- Port : networkingv1.ServiceBackendPort {
190
- Number : 80 ,
174
+ ingresses : OrderedIngressMap {
175
+ ingressNames : []types.NamespacedName {{Namespace : "default" , Name : "implementation-specific-regex" }},
176
+ ingressObjects : map [types.NamespacedName ]* networkingv1.Ingress {
177
+ {Namespace : "default" , Name : "implementation-specific-regex" }: {
178
+ ObjectMeta : metav1.ObjectMeta {
179
+ Name : "implementation-specific-regex" ,
180
+ Namespace : "default" ,
181
+ },
182
+ Spec : networkingv1.IngressSpec {
183
+ IngressClassName : ptrTo ("ingress-nginx" ),
184
+ Rules : []networkingv1.IngressRule {{
185
+ Host : "test.mydomain.com" ,
186
+ IngressRuleValue : networkingv1.IngressRuleValue {
187
+ HTTP : & networkingv1.HTTPIngressRuleValue {
188
+ Paths : []networkingv1.HTTPIngressPath {{
189
+ Path : "/~/echo/**/test" ,
190
+ PathType : & isPathType ,
191
+ Backend : networkingv1.IngressBackend {
192
+ Service : & networkingv1.IngressServiceBackend {
193
+ Name : "test" ,
194
+ Port : networkingv1.ServiceBackendPort {
195
+ Number : 80 ,
196
+ },
191
197
},
192
198
},
193
- },
194
- }} ,
199
+ }} ,
200
+ },
195
201
},
196
- },
197
- }} ,
202
+ }} ,
203
+ },
198
204
},
199
205
},
200
206
},
0 commit comments