diff options
author | Dean Smith <dean@zelotus.com> | 2017-02-17 20:59:06 +0000 |
---|---|---|
committer | Dean Smith <dean@zelotus.com> | 2017-02-17 20:59:06 +0000 |
commit | 1d2eda779cecd57960586b3fb630c767fabc1adf (patch) | |
tree | 60173460142e2db3a847b5a8b8074d05c8ce62f8 /libvirt/resource_libvirt_network.go | |
parent | e60609f3fe5766885a2edb36b2e52e1dd58ffa6d (diff) | |
parent | aeaee868666a6017b9bd0539c618711c4d15ea0d (diff) | |
download | terraform-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.go | 47 |
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") |