Skip to content

Commit ec7a38d

Browse files
authored
make network dns enabled by default (#1100)
https://libvirt.org/formatnetwork.html#addressing specifies dns is disabled only if enable="no", but if omitted, it is enabled by default. However, it claims if disabled, it would ignore the dns entries, but in reality it fails with "error: XML error: Extra data in disabled network". This change makes: - if enabled is omitted, we use the libvirt default - we only add dns information to the xml if enabled
1 parent bbf9056 commit ec7a38d

File tree

3 files changed

+26
-34
lines changed

3 files changed

+26
-34
lines changed

libvirt/network_dns.go

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -200,18 +200,6 @@ func getDNSForwardersFromResource(d *schema.ResourceData) ([]libvirtxml.NetworkD
200200
return dnsForwarders, nil
201201
}
202202

203-
// getDNSEnableFromResource returns string to enable ("yes") or disable ("no") dns
204-
// in the network definition.
205-
func getDNSEnableFromResource(d *schema.ResourceData) string {
206-
if dnsEnabled, ok := d.GetOk(dnsPrefix + ".enabled"); ok {
207-
if dnsEnabled.(bool) {
208-
return "yes" // this "boolean" must be "yes"|"no"
209-
}
210-
return "no"
211-
}
212-
return "no"
213-
}
214-
215203
// getDNSSRVFromResource returns a list of libvirt's DNS SRVs
216204
// in the network definition.
217205
func getDNSSRVFromResource(d *schema.ResourceData) ([]libvirtxml.NetworkDNSSRV, error) {

libvirt/resource_libvirt_network.go

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ import (
1212
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
1313
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
1414
"libvirt.org/go/libvirtxml"
15+
16+
"github.com/dmacvicar/terraform-provider-libvirt/libvirt/util"
1517
)
1618

1719
const (
@@ -102,6 +104,7 @@ func resourceLibvirtNetwork() *schema.Resource {
102104
Type: schema.TypeBool,
103105
Optional: true,
104106
Required: false,
107+
Default: true,
105108
},
106109
"local_only": {
107110
Type: schema.TypeBool,
@@ -378,30 +381,31 @@ func resourceLibvirtNetworkCreate(ctx context.Context, d *schema.ResourceData, m
378381
}
379382
networkDef.IPs = ips
380383

381-
dnsEnabled := getDNSEnableFromResource(d)
384+
if dnsEnabled, ok := d.GetOk(dnsPrefix + ".enabled"); ok && dnsEnabled.(bool) {
385+
dnsForwarders, err := getDNSForwardersFromResource(d)
386+
if err != nil {
387+
return diag.FromErr(err)
388+
}
382389

383-
dnsForwarders, err := getDNSForwardersFromResource(d)
384-
if err != nil {
385-
return diag.FromErr(err)
386-
}
390+
dnsSRVs, err := getDNSSRVFromResource(d)
391+
if err != nil {
392+
return diag.FromErr(err)
393+
}
387394

388-
dnsSRVs, err := getDNSSRVFromResource(d)
389-
if err != nil {
390-
return diag.FromErr(err)
391-
}
395+
dnsHosts, err := getDNSHostsFromResource(d)
396+
if err != nil {
397+
return diag.FromErr(err)
398+
}
392399

393-
dnsHosts, err := getDNSHostsFromResource(d)
394-
if err != nil {
395-
return diag.FromErr(err)
396-
}
400+
dns := libvirtxml.NetworkDNS{
401+
Enable: util.FormatBoolYesNo(dnsEnabled.(bool)),
402+
Forwarders: dnsForwarders,
403+
Host: dnsHosts,
404+
SRVs: dnsSRVs,
405+
}
397406

398-
dns := libvirtxml.NetworkDNS{
399-
Enable: dnsEnabled,
400-
Forwarders: dnsForwarders,
401-
Host: dnsHosts,
402-
SRVs: dnsSRVs,
407+
networkDef.DNS = &dns
403408
}
404-
networkDef.DNS = &dns
405409
} else if networkDef.Forward.Mode == netModeBridge {
406410
if networkDef.Bridge.Name == "" {
407411
return diag.Errorf("'bridge' must be provided when using the bridged network mode")

website/docs/r/network.markdown

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,9 @@ resource "libvirt_network" "kube_network" {
4040
4141
# (Optional) DNS configuration
4242
dns {
43-
# (Optional, default false)
44-
# Set to true, if no other option is specified and you still want to
45-
# enable dns.
43+
# (Optional, default true)
44+
# If disabled, no dns will be setup for this network and dns configuration
45+
# will be ignored.
4646
enabled = true
4747
# (Optional, default false)
4848
# true: DNS requests under this domain will only be resolved by the

0 commit comments

Comments
 (0)