Skip to content

Commit 67af19e

Browse files
author
Jim Ryan
authored
chore: refactor resolver in template (#6832)
refactor resolver
1 parent ccada9d commit 67af19e

File tree

4 files changed

+144
-31
lines changed

4 files changed

+144
-31
lines changed

internal/configs/version1/__snapshots__/template_test.snap

Lines changed: 33 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,8 @@ http {
200200
default upgrade;
201201
'' $default_connection_header;
202202
}
203-
resolver example.com127.0.0.1 valid=10s ipv6=off;resolver_timeout 15s;
203+
resolver example.com 127.0.0.1 valid=10s ipv6=off;
204+
resolver_timeout 15s;
204205
205206
server {
206207
# required to support the Websocket protocol in VirtualServer/VirtualServerRoutes
@@ -259,7 +260,7 @@ stream {
259260
260261
access_log /dev/stdout stream-main;
261262
# comment
262-
resolver example.com127.0.0.1 valid=10s ipv6=off;
263+
resolver example.com 127.0.0.1 valid=10s ipv6=off;
263264
resolver_timeout 15s;
264265
265266
map_hash_max_size ;
@@ -336,7 +337,8 @@ http {
336337
default upgrade;
337338
'' $default_connection_header;
338339
}
339-
resolver example.com127.0.0.1 valid=10s ipv6=off;resolver_timeout 15s;
340+
resolver example.com 127.0.0.1 valid=10s ipv6=off;
341+
resolver_timeout 15s;
340342
341343
server {
342344
# required to support the Websocket protocol in VirtualServer/VirtualServerRoutes
@@ -395,7 +397,7 @@ stream {
395397
396398
access_log /dev/stdout stream-main;
397399
# comment
398-
resolver example.com127.0.0.1 valid=10s ipv6=off;
400+
resolver example.com 127.0.0.1 valid=10s ipv6=off;
399401
resolver_timeout 15s;
400402
401403
map_hash_max_size ;
@@ -1742,7 +1744,8 @@ http {
17421744
default upgrade;
17431745
'' $default_connection_header;
17441746
}
1745-
resolver example.com127.0.0.1 valid=10s ipv6=off;resolver_timeout 15s;
1747+
resolver example.com 127.0.0.1 valid=10s ipv6=off;
1748+
resolver_timeout 15s;
17461749
17471750
server {
17481751
# required to support the Websocket protocol in VirtualServer/VirtualServerRoutes
@@ -1801,7 +1804,7 @@ stream {
18011804
18021805
access_log /dev/stdout stream-main;
18031806
# comment
1804-
resolver example.com127.0.0.1 valid=10s ipv6=off;
1807+
resolver example.com 127.0.0.1 valid=10s ipv6=off;
18051808
resolver_timeout 15s;
18061809
18071810
map_hash_max_size ;
@@ -1880,7 +1883,8 @@ http {
18801883
default upgrade;
18811884
'' $default_connection_header;
18821885
}
1883-
resolver example.com127.0.0.1 valid=10s ipv6=off;resolver_timeout 15s;
1886+
resolver example.com 127.0.0.1 valid=10s ipv6=off;
1887+
resolver_timeout 15s;
18841888
18851889
server {
18861890
# required to support the Websocket protocol in VirtualServer/VirtualServerRoutes
@@ -1939,7 +1943,7 @@ stream {
19391943
19401944
access_log /dev/stdout stream-main;
19411945
# comment
1942-
resolver example.com127.0.0.1 valid=10s ipv6=off;
1946+
resolver example.com 127.0.0.1 valid=10s ipv6=off;
19431947
resolver_timeout 15s;
19441948
19451949
map_hash_max_size ;
@@ -2018,7 +2022,8 @@ http {
20182022
default upgrade;
20192023
'' $default_connection_header;
20202024
}
2021-
resolver example.com127.0.0.1 valid=10s ipv6=off;resolver_timeout 15s;
2025+
resolver example.com 127.0.0.1 valid=10s ipv6=off;
2026+
resolver_timeout 15s;
20222027
20232028
server {
20242029
# required to support the Websocket protocol in VirtualServer/VirtualServerRoutes
@@ -2077,7 +2082,7 @@ stream {
20772082
20782083
access_log /dev/stdout stream-main;
20792084
# comment
2080-
resolver example.com127.0.0.1 valid=10s ipv6=off;
2085+
resolver example.com 127.0.0.1 valid=10s ipv6=off;
20812086
resolver_timeout 15s;
20822087
20832088
map_hash_max_size ;
@@ -2156,7 +2161,8 @@ http {
21562161
default upgrade;
21572162
'' $default_connection_header;
21582163
}
2159-
resolver example.com127.0.0.1 valid=10s ipv6=off;resolver_timeout 15s;
2164+
resolver example.com 127.0.0.1 valid=10s ipv6=off;
2165+
resolver_timeout 15s;
21602166
21612167
server {
21622168
# required to support the Websocket protocol in VirtualServer/VirtualServerRoutes
@@ -2215,7 +2221,7 @@ stream {
22152221
22162222
access_log /dev/stdout stream-main;
22172223
# comment
2218-
resolver example.com127.0.0.1 valid=10s ipv6=off;
2224+
resolver example.com 127.0.0.1 valid=10s ipv6=off;
22192225
resolver_timeout 15s;
22202226
22212227
map_hash_max_size ;
@@ -2294,7 +2300,8 @@ http {
22942300
default upgrade;
22952301
'' $default_connection_header;
22962302
}
2297-
resolver example.com127.0.0.1 valid=10s ipv6=off;resolver_timeout 15s;
2303+
resolver example.com 127.0.0.1 valid=10s ipv6=off;
2304+
resolver_timeout 15s;
22982305
22992306
server {
23002307
# required to support the Websocket protocol in VirtualServer/VirtualServerRoutes
@@ -2354,7 +2361,7 @@ stream {
23542361
23552362
access_log /dev/stdout stream-main;
23562363
# comment
2357-
resolver example.com127.0.0.1 valid=10s ipv6=off;
2364+
resolver example.com 127.0.0.1 valid=10s ipv6=off;
23582365
resolver_timeout 15s;
23592366
23602367
map_hash_max_size ;
@@ -2465,7 +2472,8 @@ http {
24652472
default upgrade;
24662473
'' $default_connection_header;
24672474
}
2468-
resolver example.com127.0.0.1 valid=10s ipv6=off;resolver_timeout 15s;
2475+
resolver example.com 127.0.0.1 valid=10s ipv6=off;
2476+
resolver_timeout 15s;
24692477
24702478
server {
24712479
# required to support the Websocket protocol in VirtualServer/VirtualServerRoutes
@@ -2524,7 +2532,7 @@ stream {
25242532
25252533
access_log /dev/stdout stream-main;
25262534
# comment
2527-
resolver example.com127.0.0.1 valid=10s ipv6=off;
2535+
resolver example.com 127.0.0.1 valid=10s ipv6=off;
25282536
resolver_timeout 15s;
25292537
25302538
map_hash_max_size ;
@@ -2613,7 +2621,8 @@ http {
26132621
default upgrade;
26142622
'' $default_connection_header;
26152623
}
2616-
resolver example.com127.0.0.1 valid=10s ipv6=off;resolver_timeout 15s;
2624+
resolver example.com 127.0.0.1 valid=10s ipv6=off;
2625+
resolver_timeout 15s;
26172626
26182627
server {
26192628
# required to support the Websocket protocol in VirtualServer/VirtualServerRoutes
@@ -2673,7 +2682,7 @@ stream {
26732682
26742683
access_log /dev/stdout stream-main;
26752684
# comment
2676-
resolver example.com127.0.0.1 valid=10s ipv6=off;
2685+
resolver example.com 127.0.0.1 valid=10s ipv6=off;
26772686
resolver_timeout 15s;
26782687
26792688
map_hash_max_size ;
@@ -2767,7 +2776,8 @@ http {
27672776
default upgrade;
27682777
'' $default_connection_header;
27692778
}
2770-
resolver example.com127.0.0.1 valid=10s ipv6=off;resolver_timeout 15s;
2779+
resolver example.com 127.0.0.1 valid=10s ipv6=off;
2780+
resolver_timeout 15s;
27712781
27722782
server {
27732783
# required to support the Websocket protocol in VirtualServer/VirtualServerRoutes
@@ -2826,7 +2836,7 @@ stream {
28262836
28272837
access_log /dev/stdout stream-main;
28282838
# comment
2829-
resolver example.com127.0.0.1 valid=10s ipv6=off;
2839+
resolver example.com 127.0.0.1 valid=10s ipv6=off;
28302840
resolver_timeout 15s;
28312841
28322842
map_hash_max_size ;
@@ -2902,7 +2912,8 @@ http {
29022912
default upgrade;
29032913
'' $default_connection_header;
29042914
}
2905-
resolver example.com127.0.0.1 valid=10s ipv6=off;resolver_timeout 15s;
2915+
resolver example.com 127.0.0.1 valid=10s ipv6=off;
2916+
resolver_timeout 15s;
29062917
29072918
server {
29082919
# required to support the Websocket protocol in VirtualServer/VirtualServerRoutes
@@ -2962,7 +2973,7 @@ stream {
29622973
29632974
access_log /dev/stdout stream-main;
29642975
# comment
2965-
resolver example.com127.0.0.1 valid=10s ipv6=off;
2976+
resolver example.com 127.0.0.1 valid=10s ipv6=off;
29662977
resolver_timeout 15s;
29672978
29682979
map_hash_max_size ;

internal/configs/version1/nginx-plus.tmpl

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -152,11 +152,8 @@ http {
152152
{{- if .OpenTracingLoadModule}}
153153
opentracing_load_tracer {{ .OpenTracingTracer }} /var/lib/nginx/tracer-config.json;
154154
{{- end}}
155-
156-
{{- if .ResolverAddresses}}
157-
resolver {{range $resolver := .ResolverAddresses}}{{$resolver}}{{end}}{{if .ResolverValid}} valid={{.ResolverValid}}{{end}}{{if not .ResolverIPV6}} ipv6=off{{end}};
158-
{{- if .ResolverTimeout}}resolver_timeout {{.ResolverTimeout}};{{end}}
159-
{{- end}}
155+
{{ makeResolver .ResolverAddresses .ResolverValid .ResolverIPV6 }}
156+
{{if .ResolverTimeout}}resolver_timeout {{.ResolverTimeout}};{{end}}
160157

161158
{{- if .OIDC}}
162159
include oidc/oidc_common.conf;
@@ -318,11 +315,8 @@ stream {
318315

319316
{{- range $value := .StreamSnippets}}
320317
{{$value}}{{end}}
321-
322-
{{- if .ResolverAddresses}}
323-
resolver {{range $resolver := .ResolverAddresses}}{{$resolver}}{{end}}{{if .ResolverValid}} valid={{.ResolverValid}}{{end}}{{if not .ResolverIPV6}} ipv6=off{{end}};
318+
{{ makeResolver .ResolverAddresses .ResolverValid .ResolverIPV6 }}
324319
{{if .ResolverTimeout}}resolver_timeout {{.ResolverTimeout}};{{end}}
325-
{{- end}}
326320

327321
map_hash_max_size {{.MapHashMaxSize}};
328322
{{if .MapHashBucketSize}}map_hash_bucket_size {{.MapHashBucketSize}};{{end}}

internal/configs/version1/template_helper.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,26 @@ func generateProxySetHeaders(loc *Location, ingressAnnotations map[string]string
182182
return combinedHeaders, nil
183183
}
184184

185+
func makeResolver(resolverAddresses []string, resolverValid string, resolverIPV6 bool) string {
186+
var builder strings.Builder
187+
if len(resolverAddresses) > 0 {
188+
builder.WriteString("resolver")
189+
for _, address := range resolverAddresses {
190+
builder.WriteString(" ")
191+
builder.WriteString(address)
192+
}
193+
if resolverValid != "" {
194+
builder.WriteString(" valid=")
195+
builder.WriteString(resolverValid)
196+
}
197+
if !resolverIPV6 {
198+
builder.WriteString(" ipv6=off")
199+
}
200+
builder.WriteString(";")
201+
}
202+
return builder.String()
203+
}
204+
185205
var helperFunctions = template.FuncMap{
186206
"split": split,
187207
"trim": trim,
@@ -194,4 +214,5 @@ var helperFunctions = template.FuncMap{
194214
"makeLocationPath": makeLocationPath,
195215
"makeSecretPath": commonhelpers.MakeSecretPath,
196216
"generateProxySetHeaders": generateProxySetHeaders,
217+
"makeResolver": makeResolver,
197218
}

internal/configs/version1/template_helper_test.go

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -830,3 +830,90 @@ func TestGenerateProxySetHeadersForValidHeadersInOnlyOneMinion(t *testing.T) {
830830
})
831831
}
832832
}
833+
834+
func TestMakeResolver(t *testing.T) {
835+
t.Parallel()
836+
837+
testCases := []struct {
838+
name string
839+
resolverAddresses []string
840+
resolverValid string
841+
resolverIPV6 bool
842+
expected string
843+
}{
844+
{
845+
name: "No addresses",
846+
resolverAddresses: []string{},
847+
resolverValid: "",
848+
resolverIPV6: true,
849+
expected: "",
850+
},
851+
{
852+
name: "Single address, default options",
853+
resolverAddresses: []string{"8.8.8.8"},
854+
resolverValid: "",
855+
resolverIPV6: true,
856+
expected: "resolver 8.8.8.8;",
857+
},
858+
{
859+
name: "Multiple addresses, valid time, ipv6 on",
860+
resolverAddresses: []string{"8.8.8.8", "8.8.4.4"},
861+
resolverValid: "30s",
862+
resolverIPV6: true,
863+
expected: "resolver 8.8.8.8 8.8.4.4 valid=30s;",
864+
},
865+
{
866+
name: "Single address, ipv6 off",
867+
resolverAddresses: []string{"8.8.8.8"},
868+
resolverValid: "",
869+
resolverIPV6: false,
870+
expected: "resolver 8.8.8.8 ipv6=off;",
871+
},
872+
{
873+
name: "Multiple addresses, valid time, ipv6 off",
874+
resolverAddresses: []string{"8.8.8.8", "8.8.4.4"},
875+
resolverValid: "30s",
876+
resolverIPV6: false,
877+
expected: "resolver 8.8.8.8 8.8.4.4 valid=30s ipv6=off;",
878+
},
879+
{
880+
name: "No valid time, ipv6 off",
881+
resolverAddresses: []string{"8.8.8.8"},
882+
resolverValid: "",
883+
resolverIPV6: false,
884+
expected: "resolver 8.8.8.8 ipv6=off;",
885+
},
886+
{
887+
name: "Valid time only",
888+
resolverAddresses: []string{"8.8.8.8"},
889+
resolverValid: "10s",
890+
resolverIPV6: true,
891+
expected: "resolver 8.8.8.8 valid=10s;",
892+
},
893+
{
894+
name: "IPv6 only",
895+
resolverAddresses: []string{"8.8.8.8"},
896+
resolverValid: "",
897+
resolverIPV6: false,
898+
expected: "resolver 8.8.8.8 ipv6=off;",
899+
},
900+
{
901+
name: "All options",
902+
resolverAddresses: []string{"8.8.8.8", "8.8.4.4", "1.1.1.1"},
903+
resolverValid: "60s",
904+
resolverIPV6: false,
905+
expected: "resolver 8.8.8.8 8.8.4.4 1.1.1.1 valid=60s ipv6=off;",
906+
},
907+
}
908+
909+
for _, tc := range testCases {
910+
tc := tc
911+
t.Run(tc.name, func(t *testing.T) {
912+
t.Parallel()
913+
got := makeResolver(tc.resolverAddresses, tc.resolverValid, tc.resolverIPV6)
914+
if got != tc.expected {
915+
t.Errorf("makeResolver(%v, %q, %v) = %q; want %q", tc.resolverAddresses, tc.resolverValid, tc.resolverIPV6, got, tc.expected)
916+
}
917+
})
918+
}
919+
}

0 commit comments

Comments
 (0)