Skip to content

Commit 18c4a3b

Browse files
authored
Merge pull request #79 from mlavacca/rename-httproutes
change httproute name
2 parents 38c60b4 + de893ab commit 18c4a3b

11 files changed

Lines changed: 42 additions & 34 deletions

File tree

pkg/i2gw/providers/common/converter.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ type pathMatchKey string
9191

9292
type ingressRuleGroup struct {
9393
namespace string
94+
name string
9495
ingressClass string
9596
host string
9697
tls []networkingv1.IngressTLS
@@ -125,7 +126,7 @@ func (a *ingressAggregator) addIngress(ingress networkingv1.Ingress) field.Error
125126
ingressClass = ingress.Name
126127
}
127128
for _, rule := range ingress.Spec.Rules {
128-
a.addIngressRule(ingress.Namespace, ingressClass, rule, ingress.Spec)
129+
a.addIngressRule(ingress.Namespace, ingress.Name, ingressClass, rule, ingress.Spec)
129130
}
130131
if ingress.Spec.DefaultBackend != nil {
131132
a.defaultBackends = append(a.defaultBackends, ingressDefaultBackend{
@@ -138,12 +139,13 @@ func (a *ingressAggregator) addIngress(ingress networkingv1.Ingress) field.Error
138139
return nil
139140
}
140141

141-
func (a *ingressAggregator) addIngressRule(namespace, ingressClass string, rule networkingv1.IngressRule, iSpec networkingv1.IngressSpec) {
142+
func (a *ingressAggregator) addIngressRule(namespace, name, ingressClass string, rule networkingv1.IngressRule, iSpec networkingv1.IngressSpec) {
142143
rgKey := ruleGroupKey(fmt.Sprintf("%s/%s/%s", namespace, ingressClass, rule.Host))
143144
rg, ok := a.ruleGroups[rgKey]
144145
if !ok {
145146
rg = &ingressRuleGroup{
146147
namespace: namespace,
148+
name: name,
147149
ingressClass: ingressClass,
148150
host: rule.Host,
149151
}
@@ -281,7 +283,7 @@ func (rg *ingressRuleGroup) toHTTPRoute() (gatewayv1beta1.HTTPRoute, field.Error
281283

282284
httpRoute := gatewayv1beta1.HTTPRoute{
283285
ObjectMeta: metav1.ObjectMeta{
284-
Name: NameFromHost(rg.host),
286+
Name: RouteName(rg.name, rg.host),
285287
Namespace: rg.namespace,
286288
},
287289
Spec: gatewayv1beta1.HTTPRouteSpec{},

pkg/i2gw/providers/common/converter_test.go

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ func Test_ingresses2GatewaysAndHttpRoutes(t *testing.T) {
5252
{
5353
name: "simple ingress",
5454
ingresses: []networkingv1.Ingress{{
55-
ObjectMeta: metav1.ObjectMeta{Name: "example", Namespace: "test"},
55+
ObjectMeta: metav1.ObjectMeta{Name: "simple", Namespace: "test"},
5656
Spec: networkingv1.IngressSpec{
5757
Rules: []networkingv1.IngressRule{{
5858
Host: "example.com",
@@ -77,10 +77,10 @@ func Test_ingresses2GatewaysAndHttpRoutes(t *testing.T) {
7777
}},
7878
expectedGatewayResources: i2gw.GatewayResources{
7979
Gateways: map[types.NamespacedName]gatewayv1beta1.Gateway{
80-
{Namespace: "test", Name: "example"}: {
81-
ObjectMeta: metav1.ObjectMeta{Name: "example", Namespace: "test"},
80+
{Namespace: "test", Name: "simple"}: {
81+
ObjectMeta: metav1.ObjectMeta{Name: "simple", Namespace: "test"},
8282
Spec: gatewayv1beta1.GatewaySpec{
83-
GatewayClassName: "example",
83+
GatewayClassName: "simple",
8484
Listeners: []gatewayv1beta1.Listener{{
8585
Name: "example-com-http",
8686
Port: 80,
@@ -91,12 +91,12 @@ func Test_ingresses2GatewaysAndHttpRoutes(t *testing.T) {
9191
},
9292
},
9393
HTTPRoutes: map[types.NamespacedName]gatewayv1beta1.HTTPRoute{
94-
{Namespace: "test", Name: "example-com"}: {
95-
ObjectMeta: metav1.ObjectMeta{Name: "example-com", Namespace: "test"},
94+
{Namespace: "test", Name: "simple-example-com"}: {
95+
ObjectMeta: metav1.ObjectMeta{Name: "simple-example-com", Namespace: "test"},
9696
Spec: gatewayv1beta1.HTTPRouteSpec{
9797
CommonRouteSpec: gatewayv1beta1.CommonRouteSpec{
9898
ParentRefs: []gatewayv1beta1.ParentReference{{
99-
Name: "example",
99+
Name: "simple",
100100
}},
101101
},
102102
Hostnames: []gatewayv1beta1.Hostname{"example.com"},
@@ -125,7 +125,7 @@ func Test_ingresses2GatewaysAndHttpRoutes(t *testing.T) {
125125
{
126126
name: "ingress with TLS",
127127
ingresses: []networkingv1.Ingress{{
128-
ObjectMeta: metav1.ObjectMeta{Name: "example", Namespace: "test"},
128+
ObjectMeta: metav1.ObjectMeta{Name: "with-tls", Namespace: "test"},
129129
Spec: networkingv1.IngressSpec{
130130
TLS: []networkingv1.IngressTLS{{
131131
Hosts: []string{"example.com"},
@@ -154,10 +154,10 @@ func Test_ingresses2GatewaysAndHttpRoutes(t *testing.T) {
154154
}},
155155
expectedGatewayResources: i2gw.GatewayResources{
156156
Gateways: map[types.NamespacedName]gatewayv1beta1.Gateway{
157-
{Namespace: "test", Name: "example"}: {
158-
ObjectMeta: metav1.ObjectMeta{Name: "example", Namespace: "test"},
157+
{Namespace: "test", Name: "with-tls"}: {
158+
ObjectMeta: metav1.ObjectMeta{Name: "with-tls", Namespace: "test"},
159159
Spec: gatewayv1beta1.GatewaySpec{
160-
GatewayClassName: "example",
160+
GatewayClassName: "with-tls",
161161
Listeners: []gatewayv1beta1.Listener{{
162162
Name: "example-com-http",
163163
Port: 80,
@@ -178,12 +178,12 @@ func Test_ingresses2GatewaysAndHttpRoutes(t *testing.T) {
178178
},
179179
},
180180
HTTPRoutes: map[types.NamespacedName]gatewayv1beta1.HTTPRoute{
181-
{Namespace: "test", Name: "example-com"}: {
182-
ObjectMeta: metav1.ObjectMeta{Name: "example-com", Namespace: "test"},
181+
{Namespace: "test", Name: "with-tls-example-com"}: {
182+
ObjectMeta: metav1.ObjectMeta{Name: "with-tls-example-com", Namespace: "test"},
183183
Spec: gatewayv1beta1.HTTPRouteSpec{
184184
CommonRouteSpec: gatewayv1beta1.CommonRouteSpec{
185185
ParentRefs: []gatewayv1beta1.ParentReference{{
186-
Name: "example",
186+
Name: "with-tls",
187187
}},
188188
},
189189
Hostnames: []gatewayv1beta1.Hostname{"example.com"},
@@ -259,8 +259,8 @@ func Test_ingresses2GatewaysAndHttpRoutes(t *testing.T) {
259259
},
260260
},
261261
HTTPRoutes: map[types.NamespacedName]gatewayv1beta1.HTTPRoute{
262-
{Namespace: "different", Name: "example-net"}: {
263-
ObjectMeta: metav1.ObjectMeta{Name: "example-net", Namespace: "different"},
262+
{Namespace: "different", Name: "net-example-net"}: {
263+
ObjectMeta: metav1.ObjectMeta{Name: "net-example-net", Namespace: "different"},
264264
Spec: gatewayv1beta1.HTTPRouteSpec{
265265
CommonRouteSpec: gatewayv1beta1.CommonRouteSpec{
266266
ParentRefs: []gatewayv1beta1.ParentReference{{

pkg/i2gw/providers/common/utils.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ func GetIngressClass(ingress networkingv1.Ingress) string {
4242

4343
type IngressRuleGroup struct {
4444
Namespace string
45+
Name string
4546
IngressClass string
4647
Host string
4748
TLS []networkingv1.IngressTLS
@@ -66,6 +67,7 @@ func GetRuleGroups(ingresses []networkingv1.Ingress) map[string]IngressRuleGroup
6667
if !ok {
6768
rg = IngressRuleGroup{
6869
Namespace: ingress.Namespace,
70+
Name: ingress.Name,
6971
IngressClass: ingressClass,
7072
Host: rule.Host,
7173
}
@@ -99,6 +101,10 @@ func NameFromHost(host string) string {
99101
return step2
100102
}
101103

104+
func RouteName(ingressName, host string) string {
105+
return fmt.Sprintf("%s-%s", ingressName, NameFromHost(host))
106+
}
107+
102108
func ToBackendRef(ib networkingv1.IngressBackend, path *field.Path) (*gatewayv1beta1.BackendRef, *field.Error) {
103109
if ib.Service != nil {
104110
if ib.Service.Port.Name != "" {

pkg/i2gw/providers/ingressnginx/canary.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ func canaryFeature(ingressResources i2gw.InputResources, gatewayResources *i2gw.
4444
backendRefs, calculationErrs := calculateBackendRefWeight(paths)
4545
errs = append(errs, calculationErrs...)
4646

47-
key := types.NamespacedName{Namespace: path.ingress.Namespace, Name: common.NameFromHost(rg.Host)}
47+
key := types.NamespacedName{Namespace: path.ingress.Namespace, Name: common.RouteName(rg.Name, rg.Host)}
4848
httpRoute, ok := gatewayResources.HTTPRoutes[key]
4949
if !ok {
5050
panic("HTTPRoute not exists - this should never happen")

pkg/i2gw/providers/ingressnginx/converter_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,8 +119,8 @@ func Test_ToGateway(t *testing.T) {
119119
},
120120
},
121121
HTTPRoutes: map[types.NamespacedName]gatewayv1beta1.HTTPRoute{
122-
{Namespace: "default", Name: "echo-prod-mydomain-com"}: {
123-
ObjectMeta: metav1.ObjectMeta{Name: "echo-prod-mydomain-com", Namespace: "default"},
122+
{Namespace: "default", Name: "production-echo-prod-mydomain-com"}: {
123+
ObjectMeta: metav1.ObjectMeta{Name: "production-echo-prod-mydomain-com", Namespace: "default"},
124124
Spec: gatewayv1beta1.HTTPRouteSpec{
125125
CommonRouteSpec: gatewayv1beta1.CommonRouteSpec{
126126
ParentRefs: []gatewayv1beta1.ParentReference{{

pkg/i2gw/providers/kong/converter_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -94,8 +94,8 @@ func Test_ToGateway(t *testing.T) {
9494
},
9595
},
9696
HTTPRoutes: map[types.NamespacedName]gatewayv1beta1.HTTPRoute{
97-
{Namespace: "default", Name: "test-mydomain-com"}: {
98-
ObjectMeta: metav1.ObjectMeta{Name: "test-mydomain-com", Namespace: "default"},
97+
{Namespace: "default", Name: "multiple-matching-single-rule-test-mydomain-com"}: {
98+
ObjectMeta: metav1.ObjectMeta{Name: "multiple-matching-single-rule-test-mydomain-com", Namespace: "default"},
9999
Spec: gatewayv1beta1.HTTPRouteSpec{
100100
CommonRouteSpec: gatewayv1beta1.CommonRouteSpec{
101101
ParentRefs: []gatewayv1beta1.ParentReference{{
@@ -225,8 +225,8 @@ func Test_ToGateway(t *testing.T) {
225225
},
226226
},
227227
HTTPRoutes: map[types.NamespacedName]gatewayv1beta1.HTTPRoute{
228-
{Namespace: "default", Name: "test-mydomain-com"}: {
229-
ObjectMeta: metav1.ObjectMeta{Name: "test-mydomain-com", Namespace: "default"},
228+
{Namespace: "default", Name: "multiple-matching-multiple-rules-test-mydomain-com"}: {
229+
ObjectMeta: metav1.ObjectMeta{Name: "multiple-matching-multiple-rules-test-mydomain-com", Namespace: "default"},
230230
Spec: gatewayv1beta1.HTTPRouteSpec{
231231
CommonRouteSpec: gatewayv1beta1.CommonRouteSpec{
232232
ParentRefs: []gatewayv1beta1.ParentReference{{

pkg/i2gw/providers/kong/header_matching.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ func headerMatchingFeature(ingressResources i2gw.InputResources, gatewayResource
4141
for _, rg := range ruleGroups {
4242
for _, rule := range rg.Rules {
4343
headerskeys, headersValues := parseHeadersAnnotations(rule.Ingress.Annotations)
44-
key := types.NamespacedName{Namespace: rule.Ingress.Namespace, Name: common.NameFromHost(rg.Host)}
44+
key := types.NamespacedName{Namespace: rule.Ingress.Namespace, Name: common.RouteName(rg.Name, rg.Host)}
4545
httpRoute, ok := gatewayResources.HTTPRoutes[key]
4646
if !ok {
4747
panic("HTTPRoute does not exist - this should never happen")

pkg/i2gw/providers/kong/header_matching_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ func TestHeaderMatchingFeature(t *testing.T) {
7676
},
7777
},
7878
expectedHTTPRouteMatches: map[string][][]gatewayv1beta1.HTTPRouteMatch{
79-
"default/test-mydomain-com": {
79+
"default/ored-headers-test-mydomain-com": {
8080
{
8181
gatewayv1beta1.HTTPRouteMatch{
8282
Headers: []gatewayv1beta1.HTTPHeaderMatch{
@@ -139,7 +139,7 @@ func TestHeaderMatchingFeature(t *testing.T) {
139139
},
140140
},
141141
expectedHTTPRouteMatches: map[string][][]gatewayv1beta1.HTTPRouteMatch{
142-
"default/test-mydomain-com": {
142+
"default/anded-ored-headers-test-mydomain-com": {
143143
{
144144
gatewayv1beta1.HTTPRouteMatch{
145145
Headers: []gatewayv1beta1.HTTPHeaderMatch{

pkg/i2gw/providers/kong/method_matching.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ func methodMatchingFeature(ingressResources i2gw.InputResources, gatewayResource
3939
ruleGroups := common.GetRuleGroups(ingressResources.Ingresses)
4040
for _, rg := range ruleGroups {
4141
for _, rule := range rg.Rules {
42-
key := types.NamespacedName{Namespace: rule.Ingress.Namespace, Name: common.NameFromHost(rg.Host)}
42+
key := types.NamespacedName{Namespace: rule.Ingress.Namespace, Name: common.RouteName(rg.Name, rg.Host)}
4343
httpRoute, ok := gatewayResources.HTTPRoutes[key]
4444
if !ok {
4545
panic("HTTPRoute does not exist - this should never happen")

pkg/i2gw/providers/kong/method_matching_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ func TestMethodMatchingFeature(t *testing.T) {
7676
},
7777
},
7878
expectedHTTPRouteMatches: map[string][][]gatewayv1beta1.HTTPRouteMatch{
79-
"default/test-mydomain-com": {
79+
"default/one-method-test-mydomain-com": {
8080
{
8181
gatewayv1beta1.HTTPRouteMatch{
8282
Method: ptrTo(gatewayv1beta1.HTTPMethodGet),
@@ -124,7 +124,7 @@ func TestMethodMatchingFeature(t *testing.T) {
124124
},
125125
},
126126
expectedHTTPRouteMatches: map[string][][]gatewayv1beta1.HTTPRouteMatch{
127-
"default/test-mydomain-com": {
127+
"default/many-methods-test-mydomain-com": {
128128
{
129129
gatewayv1beta1.HTTPRouteMatch{
130130
Method: ptrTo(gatewayv1beta1.HTTPMethodGet),
@@ -179,7 +179,7 @@ func TestMethodMatchingFeature(t *testing.T) {
179179
},
180180
expectedErrors: field.ErrorList{
181181
field.Invalid(
182-
field.NewPath("default/wrong-method").Child("metadata").Child("annotations"),
182+
field.NewPath("default/wrong-method-wrong-method").Child("metadata").Child("annotations"),
183183
"WRONG",
184184
"method not supported",
185185
),

0 commit comments

Comments
 (0)