Render empty forwarders for forward zones #27
@@ -103,7 +103,7 @@ type BindZoneSpec struct {
|
||||
// +optional
|
||||
DNSSECPolicyRef string `json:"dnssecPolicyRef,omitempty"`
|
||||
|
||||
// Forwarders lists upstreams for a forward-type zone.
|
||||
// Forwarders lists upstreams for a forward-type zone; an empty list disables forwarding for the zone.
|
||||
// +optional
|
||||
Forwarders []string `json:"forwarders,omitempty"`
|
||||
|
||||
|
||||
@@ -90,7 +90,8 @@ spec:
|
||||
When true, UpdateKeyRef must reference a BindTSIGKey.
|
||||
type: boolean
|
||||
forwarders:
|
||||
description: Forwarders lists upstreams for a forward-type zone.
|
||||
description: Forwarders lists upstreams for a forward-type zone; an
|
||||
empty list disables forwarding for the zone.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
|
||||
@@ -2756,7 +2756,8 @@ spec:
|
||||
When true, UpdateKeyRef must reference a BindTSIGKey.
|
||||
type: boolean
|
||||
forwarders:
|
||||
description: Forwarders lists upstreams for a forward-type zone.
|
||||
description: Forwarders lists upstreams for a forward-type zone; an
|
||||
empty list disables forwarding for the zone.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
|
||||
@@ -154,8 +154,10 @@ func renderForwardZone(z bindv1alpha1.BindZone, indent string) string {
|
||||
b.WriteString(fmt.Sprintf("%szone \"%s\" {\n", indent, z.Spec.ZoneName))
|
||||
b.WriteString(indent + " type forward;\n")
|
||||
b.WriteString(indent + " forward only;\n")
|
||||
if len(z.Spec.Forwarders) > 0 {
|
||||
b.WriteString(fmt.Sprintf("%s forwarders { %s };\n", indent, terminate(z.Spec.Forwarders)))
|
||||
if list := terminate(z.Spec.Forwarders); list != "" {
|
||||
b.WriteString(fmt.Sprintf("%s forwarders { %s };\n", indent, list))
|
||||
} else {
|
||||
b.WriteString(indent + " forwarders { };\n")
|
||||
}
|
||||
b.WriteString(indent + "};\n")
|
||||
return b.String()
|
||||
|
||||
@@ -261,3 +261,19 @@ func TestRenderDeterministicWithShuffledForwards(t *testing.T) {
|
||||
t.Fatalf("render must be independent of forward-zone input order:\n--- A ---\n%s\n--- B ---\n%s", pa, pb)
|
||||
}
|
||||
}
|
||||
|
||||
func TestRenderForwardZoneForwarders(t *testing.T) {
|
||||
for _, tc := range []struct {
|
||||
fwd []string
|
||||
want string
|
||||
}{
|
||||
{nil, " forwarders { };\n"},
|
||||
{[]string{"198.18.19.15", "198.18.19.16;"}, " forwarders { 198.18.19.15; 198.18.19.16; };\n"},
|
||||
} {
|
||||
z := bindv1alpha1.BindZone{Spec: bindv1alpha1.BindZoneSpec{ZoneName: "spamhaus.org", Type: bindv1alpha1.ZoneForward, Forwarders: tc.fwd}}
|
||||
want := "zone \"spamhaus.org\" {\n type forward;\n forward only;\n" + tc.want + "};\n"
|
||||
if got := renderForwardZone(z, ""); got != want {
|
||||
t.Errorf("forwarders %v:\ngot %q\nwant %q", tc.fwd, got, want)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user