summaryrefslogtreecommitdiff
path: root/libvirt/resource_libvirt_network.go
diff options
context:
space:
mode:
authorDean Smith <dean@zelotus.com>2017-02-17 20:59:06 +0000
committerDean Smith <dean@zelotus.com>2017-02-17 20:59:06 +0000
commit1d2eda779cecd57960586b3fb630c767fabc1adf (patch)
tree60173460142e2db3a847b5a8b8074d05c8ce62f8 /libvirt/resource_libvirt_network.go
parente60609f3fe5766885a2edb36b2e52e1dd58ffa6d (diff)
parentaeaee868666a6017b9bd0539c618711c4d15ea0d (diff)
downloadterraform-provider-libvirt-1d2eda779cecd57960586b3fb630c767fabc1adf.tar
terraform-provider-libvirt-1d2eda779cecd57960586b3fb630c767fabc1adf.tar.gz
Merge remote-tracking branch 'origin' into bridge_fix
Diffstat (limited to 'libvirt/resource_libvirt_network.go')
-rw-r--r--libvirt/resource_libvirt_network.go47
1 files changed, 47 insertions, 0 deletions
diff --git a/libvirt/resource_libvirt_network.go b/libvirt/resource_libvirt_network.go
index 6d4e54b8..8085673f 100644
--- a/libvirt/resource_libvirt_network.go
+++ b/libvirt/resource_libvirt_network.go
@@ -78,6 +78,32 @@ func resourceLibvirtNetwork() *schema.Resource {
Default: true,
ForceNew: false,
},
+ "dns_forwarder": &schema.Schema{
+ Type: schema.TypeList,
+ Optional: true,
+ Required: false,
+ ForceNew: true,
+ Elem: &schema.Resource{
+ Schema: dnsForwarderSchema(),
+ },
+ },
+ },
+ }
+}
+
+func dnsForwarderSchema() map[string]*schema.Schema {
+ return map[string]*schema.Schema{
+ "address": &schema.Schema{
+ Type: schema.TypeString,
+ Optional: true,
+ Required: false,
+ ForceNew: true,
+ },
+ "domain": &schema.Schema{
+ Type: schema.TypeString,
+ Optional: true,
+ Required: false,
+ ForceNew: true,
},
}
}
@@ -205,6 +231,27 @@ func resourceLibvirtNetworkCreate(d *schema.ResourceData, meta interface{}) erro
}
networkDef.Ips = ipsPtrsLst
}
+
+ if dns_forward_count, ok := d.GetOk("dns_forwarder.#"); ok {
+ var dns defNetworkDns
+ for i := 0; i < dns_forward_count.(int); i++ {
+ forward := defDnsForwarder{}
+ forwardPrefix := fmt.Sprintf("dns_forwarder.%d", i)
+ if address, ok := d.GetOk(forwardPrefix + ".address"); ok {
+ ip := net.ParseIP(address.(string))
+ if ip == nil {
+ return fmt.Errorf("Could not parse address '%s'", address)
+ }
+ forward.Address = ip.String()
+ }
+ if domain, ok := d.GetOk(forwardPrefix + ".domain"); ok {
+ forward.Domain = domain.(string)
+ }
+ dns.Forwarder = append(dns.Forwarder, &forward)
+ }
+ networkDef.Dns = &dns
+ }
+
} else if networkDef.Forward.Mode == netModeBridge {
if bridgeName == "" {
return fmt.Errorf("'bridge' must be provided when using the bridged network mode")