Skip to content

Commit 9b71570

Browse files
authored
fix: ingress for airbyte 1.8+ must target server instead of webapp (#188)
1 parent d666d83 commit 9b71570

File tree

4 files changed

+92
-6
lines changed

4 files changed

+92
-6
lines changed

internal/helm/chart.go

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,23 @@ func NewChartResolverWithURLs(client goHelm.Client, v1URL, v2URL string) *ChartR
4040

4141
// ChartIsV2Plus returns true if the chart version is v2.0.0 or higher
4242
func ChartIsV2Plus(v string) bool {
43+
return ChartEqualsOrHigherVersion(v, "v2.0.0")
44+
}
45+
46+
// ChartIsV1Dot8Plus returns true if the chart version is v1.8.0 or higher
47+
func ChartIsV1Dot8Plus(v string) bool {
48+
return ChartEqualsOrHigherVersion(v, "v1.8.0")
49+
}
50+
51+
// ChartEqualsOrHigherVersion returns true if the chart version is equals or higher than threshold
52+
func ChartEqualsOrHigherVersion(v string, threshold string) bool {
4353
if v == "" {
4454
return false
4555
}
4656
if v[0] != 'v' {
4757
v = "v" + v
4858
}
49-
return semver.Compare(v, "v2.0.0") >= 0
59+
return semver.Compare(v, threshold) >= 0
5060
}
5161

5262
// ResolveChartReference resolves an Airbyte chart reference to its full URL/path and version.

internal/helm/chart_test.go

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,77 @@ func TestChartIsV2Plus(t *testing.T) {
6565
}
6666
}
6767

68+
func TestChartIsV1Dot8Plus(t *testing.T) {
69+
tests := []struct {
70+
name string
71+
ver string
72+
want bool
73+
}{
74+
{
75+
name: "empty version",
76+
ver: "",
77+
want: false,
78+
},
79+
{
80+
name: "v1 version",
81+
ver: "1.0.0",
82+
want: false,
83+
},
84+
{
85+
name: "v1 with v prefix",
86+
ver: "v1.0.0",
87+
want: false,
88+
},
89+
{
90+
name: "v1.8 version",
91+
ver: "1.8.0",
92+
want: true,
93+
},
94+
{
95+
name: "v1.8 with v prefix",
96+
ver: "v1.8.0",
97+
want: true,
98+
},
99+
{
100+
name: "v1.8.5 version",
101+
ver: "1.8.5",
102+
want: true,
103+
},
104+
{
105+
name: "v1.8.5 with v prefix",
106+
ver: "v1.8.5",
107+
want: true,
108+
},
109+
{
110+
name: "v2 version",
111+
ver: "2.0.0",
112+
want: true,
113+
},
114+
{
115+
name: "v2 with v prefix",
116+
ver: "v2.0.0",
117+
want: true,
118+
},
119+
{
120+
name: "v2 pre-release",
121+
ver: "v2.0.0-alpha.1",
122+
want: true,
123+
},
124+
{
125+
name: "v3 version",
126+
ver: "3.0.0",
127+
want: true,
128+
},
129+
}
130+
131+
for _, tt := range tests {
132+
t.Run(tt.name, func(t *testing.T) {
133+
got := ChartIsV1Dot8Plus(tt.ver)
134+
assert.Equal(t, tt.want, got)
135+
})
136+
}
137+
}
138+
68139
func TestResolveChartReference(t *testing.T) {
69140
t.Parallel()
70141
ctrl := gomock.NewController(t)

internal/k8s/ingress.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@ func Ingress(chartVersion string, hosts []string) *networkingv1.Ingress {
5151
// ingressRule creates a rule for the host with proper API routing.
5252
func ingressRules(chartVersion string, host string) networkingv1.IngressRule {
5353
rules := ingressRulesForV1()
54-
if helm.ChartIsV2Plus(chartVersion) {
55-
rules = ingressRulesForV2()
54+
if helm.ChartIsV1Dot8Plus(chartVersion) {
55+
rules = ingressRulesForV1Dot8Plus()
5656
}
5757

5858
return networkingv1.IngressRule{
@@ -98,7 +98,7 @@ func ingressRulesForV1() networkingv1.IngressRuleValue {
9898
}
9999
}
100100

101-
func ingressRulesForV2() networkingv1.IngressRuleValue {
101+
func ingressRulesForV1Dot8Plus() networkingv1.IngressRuleValue {
102102
var pathType = networkingv1.PathType("Prefix")
103103

104104
return networkingv1.IngressRuleValue{

internal/k8s/ingress_test.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,10 +117,15 @@ func TestIngressRouting(t *testing.T) {
117117
wantService string
118118
}{
119119
{
120-
name: "v1 routes to webapp",
121-
chartVersion: "1.9.9",
120+
name: "v1.7 routes to webapp",
121+
chartVersion: "1.7.1",
122122
wantService: "airbyte-abctl-airbyte-webapp-svc",
123123
},
124+
{
125+
name: "v1.9 routes to server",
126+
chartVersion: "1.9.9",
127+
wantService: "airbyte-abctl-airbyte-server-svc",
128+
},
124129
{
125130
name: "v2 routes to server",
126131
chartVersion: "2.0.0",

0 commit comments

Comments
 (0)