[libvirt] [PATCH go-xml] Add support for DNS in network

Thomas Hipp posted 1 patch 6 years, 8 months ago
Failed in applying to current master (apply log)
network.go      | 39 ++++++++++++++++++++++++++++++++++
network_test.go | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++-----
2 files changed, 99 insertions(+), 5 deletions(-)
[libvirt] [PATCH go-xml] Add support for DNS in network
Posted by Thomas Hipp 6 years, 8 months ago
Add support for DNS in network, and add test code.

Signed-off-by: Thomas Hipp <thipp@suse.de>
---
 network.go      | 39 ++++++++++++++++++++++++++++++++++
 network_test.go | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++-----
 2 files changed, 99 insertions(+), 5 deletions(-)

diff --git a/network.go b/network.go
index cc850a1..e0baa96 100644
--- a/network.go
+++ b/network.go
@@ -84,6 +84,44 @@ type NetworkRoute struct {
 	Gateway string `xml:"gateway,attr,omitempty"`
 }
 
+type NetworkDNSForwarder struct {
+	Domain string `xml:"domain,attr,omitempty"`
+	Addr   string `xml:"addr,attr,omitempty"`
+}
+
+type NetworkDNSTXT struct {
+	Name  string `xml:"name,attr"`
+	Value string `xml:"value,attr"`
+}
+
+type NetworkDNSHostHostname struct {
+	Hostname string `xml:",chardata"`
+}
+
+type NetworkDNSHost struct {
+	IP        string                   `xml:"ip,attr"`
+	Hostnames []NetworkDNSHostHostname `xml:"hostname"`
+}
+
+type NetworkDNSSRV struct {
+	Service  string `xml:"service,attr"`
+	Protocol string `xml:"protocol,attr"`
+	Target   string `xml:"target,attr,omitempty"`
+	Port     uint   `xml:"port,attr,omitempty"`
+	Priority uint   `xml:"priority,attr,omitempty"`
+	Weight   uint   `xml:"weight,attr,omitempty"`
+	Domain   string `xml:"domain,attr,omitempty"`
+}
+
+type NetworkDNS struct {
+	Enable            string                `xml:"enable,attr,omitempty"`
+	ForwardPlainNames string                `xml:"forwardPlainNames,attr,omitempty"`
+	Forwarders        []NetworkDNSForwarder `xml:"forwarder"`
+	TXTs              []NetworkDNSTXT       `xml:"txt"`
+	Host              *NetworkDNSHost       `xml:"host"`
+	SRVs              []NetworkDNSSRV       `xml:"srv"`
+}
+
 type Network struct {
 	XMLName             xml.Name        `xml:"network"`
 	IPv6                string          `xml:"ipv6,attr,omitempty"`
@@ -96,6 +134,7 @@ type Network struct {
 	Domain              *NetworkDomain  `xml:"domain"`
 	IPs                 []NetworkIP     `xml:"ip"`
 	Routes              []NetworkRoute  `xml:"route"`
+	DNS                 *NetworkDNS     `xml:"dns"`
 }
 
 func (s *Network) Unmarshal(doc string) error {
diff --git a/network_test.go b/network_test.go
index 5269398..2eb81ab 100644
--- a/network_test.go
+++ b/network_test.go
@@ -89,9 +89,9 @@ var networkTestData = []struct {
 					},
 				},
 				NetworkIP{
-					Family: "ipv6",
-					Address:"2001:db8:ca2:2::1",
-					Prefix: "64",
+					Family:  "ipv6",
+					Address: "2001:db8:ca2:2::1",
+					Prefix:  "64",
 					DHCP: &NetworkDHCP{
 						Hosts: []NetworkDHCPHost{
 							NetworkDHCPHost{
@@ -99,13 +99,57 @@ var networkTestData = []struct {
 								Name: "paul",
 							},
 							NetworkDHCPHost{
-								ID:  "0:1:0:1:18:aa:62:fe:0:16:3e:44:55:66",
-								IP:  "2001:db8:ca2:2:3::2",
+								ID: "0:1:0:1:18:aa:62:fe:0:16:3e:44:55:66",
+								IP: "2001:db8:ca2:2:3::2",
 							},
 						},
 					},
 				},
 			},
+			DNS: &NetworkDNS{
+				Enable:            "yes",
+				ForwardPlainNames: "no",
+				Forwarders: []NetworkDNSForwarder{
+					NetworkDNSForwarder{
+						Addr: "8.8.8.8",
+					},
+					NetworkDNSForwarder{
+						Domain: "example.com",
+						Addr:   "8.8.4.4",
+					},
+					NetworkDNSForwarder{
+						Domain: "www.example.com",
+					},
+				},
+				TXTs: []NetworkDNSTXT{
+					NetworkDNSTXT{
+						Name:  "example",
+						Value: "example value",
+					},
+				},
+				Host: &NetworkDNSHost{
+					IP: "192.168.122.2",
+					Hostnames: []NetworkDNSHostHostname{
+						NetworkDNSHostHostname{
+							Hostname: "myhost",
+						},
+						NetworkDNSHostHostname{
+							Hostname: "myhostalias",
+						},
+					},
+				},
+				SRVs: []NetworkDNSSRV{
+					NetworkDNSSRV{
+						Service:  "name",
+						Protocol: "tcp",
+						Domain:   "test-domain-name",
+						Target:   ".",
+						Port:     1024,
+						Priority: 10,
+						Weight:   10,
+					},
+				},
+			},
 		},
 		Expected: []string{
 			`<network>`,
@@ -124,6 +168,17 @@ var networkTestData = []struct {
 			`      <host id="0:1:0:1:18:aa:62:fe:0:16:3e:44:55:66" ip="2001:db8:ca2:2:3::2"></host>`,
 			`    </dhcp>`,
 			`  </ip>`,
+			`  <dns enable="yes" forwardPlainNames="no">`,
+			`    <forwarder addr="8.8.8.8"></forwarder>`,
+			`    <forwarder domain="example.com" addr="8.8.4.4"></forwarder>`,
+			`    <forwarder domain="www.example.com"></forwarder>`,
+			`    <txt name="example" value="example value"></txt>`,
+			`    <host ip="192.168.122.2">`,
+			`      <hostname>myhost</hostname>`,
+			`      <hostname>myhostalias</hostname>`,
+			`    </host>`,
+			`    <srv service="name" protocol="tcp" target="." port="1024" priority="10" weight="10" domain="test-domain-name"></srv>`,
+			`  </dns>`,
 			`</network>`,
 		},
 	},
-- 
2.13.2

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH go-xml] Add support for DNS in network
Posted by Thomas Hipp 6 years, 8 months ago
Could someone please review this?

Cheers,
Thomas

On 07/12/2017 03:28 PM, Thomas Hipp wrote:
> Add support for DNS in network, and add test code.
> 
> Signed-off-by: Thomas Hipp <thipp@suse.de>
> ---
>  network.go      | 39 ++++++++++++++++++++++++++++++++++
>  network_test.go | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++-----
>  2 files changed, 99 insertions(+), 5 deletions(-)
> 
> diff --git a/network.go b/network.go
> index cc850a1..e0baa96 100644
> --- a/network.go
> +++ b/network.go
> @@ -84,6 +84,44 @@ type NetworkRoute struct {
>  	Gateway string `xml:"gateway,attr,omitempty"`
>  }
>  
> +type NetworkDNSForwarder struct {
> +	Domain string `xml:"domain,attr,omitempty"`
> +	Addr   string `xml:"addr,attr,omitempty"`
> +}
> +
> +type NetworkDNSTXT struct {
> +	Name  string `xml:"name,attr"`
> +	Value string `xml:"value,attr"`
> +}
> +
> +type NetworkDNSHostHostname struct {
> +	Hostname string `xml:",chardata"`
> +}
> +
> +type NetworkDNSHost struct {
> +	IP        string                   `xml:"ip,attr"`
> +	Hostnames []NetworkDNSHostHostname `xml:"hostname"`
> +}
> +
> +type NetworkDNSSRV struct {
> +	Service  string `xml:"service,attr"`
> +	Protocol string `xml:"protocol,attr"`
> +	Target   string `xml:"target,attr,omitempty"`
> +	Port     uint   `xml:"port,attr,omitempty"`
> +	Priority uint   `xml:"priority,attr,omitempty"`
> +	Weight   uint   `xml:"weight,attr,omitempty"`
> +	Domain   string `xml:"domain,attr,omitempty"`
> +}
> +
> +type NetworkDNS struct {
> +	Enable            string                `xml:"enable,attr,omitempty"`
> +	ForwardPlainNames string                `xml:"forwardPlainNames,attr,omitempty"`
> +	Forwarders        []NetworkDNSForwarder `xml:"forwarder"`
> +	TXTs              []NetworkDNSTXT       `xml:"txt"`
> +	Host              *NetworkDNSHost       `xml:"host"`
> +	SRVs              []NetworkDNSSRV       `xml:"srv"`
> +}
> +
>  type Network struct {
>  	XMLName             xml.Name        `xml:"network"`
>  	IPv6                string          `xml:"ipv6,attr,omitempty"`
> @@ -96,6 +134,7 @@ type Network struct {
>  	Domain              *NetworkDomain  `xml:"domain"`
>  	IPs                 []NetworkIP     `xml:"ip"`
>  	Routes              []NetworkRoute  `xml:"route"`
> +	DNS                 *NetworkDNS     `xml:"dns"`
>  }
>  
>  func (s *Network) Unmarshal(doc string) error {
> diff --git a/network_test.go b/network_test.go
> index 5269398..2eb81ab 100644
> --- a/network_test.go
> +++ b/network_test.go
> @@ -89,9 +89,9 @@ var networkTestData = []struct {
>  					},
>  				},
>  				NetworkIP{
> -					Family: "ipv6",
> -					Address:"2001:db8:ca2:2::1",
> -					Prefix: "64",
> +					Family:  "ipv6",
> +					Address: "2001:db8:ca2:2::1",
> +					Prefix:  "64",
>  					DHCP: &NetworkDHCP{
>  						Hosts: []NetworkDHCPHost{
>  							NetworkDHCPHost{
> @@ -99,13 +99,57 @@ var networkTestData = []struct {
>  								Name: "paul",
>  							},
>  							NetworkDHCPHost{
> -								ID:  "0:1:0:1:18:aa:62:fe:0:16:3e:44:55:66",
> -								IP:  "2001:db8:ca2:2:3::2",
> +								ID: "0:1:0:1:18:aa:62:fe:0:16:3e:44:55:66",
> +								IP: "2001:db8:ca2:2:3::2",
>  							},
>  						},
>  					},
>  				},
>  			},
> +			DNS: &NetworkDNS{
> +				Enable:            "yes",
> +				ForwardPlainNames: "no",
> +				Forwarders: []NetworkDNSForwarder{
> +					NetworkDNSForwarder{
> +						Addr: "8.8.8.8",
> +					},
> +					NetworkDNSForwarder{
> +						Domain: "example.com",
> +						Addr:   "8.8.4.4",
> +					},
> +					NetworkDNSForwarder{
> +						Domain: "www.example.com",
> +					},
> +				},
> +				TXTs: []NetworkDNSTXT{
> +					NetworkDNSTXT{
> +						Name:  "example",
> +						Value: "example value",
> +					},
> +				},
> +				Host: &NetworkDNSHost{
> +					IP: "192.168.122.2",
> +					Hostnames: []NetworkDNSHostHostname{
> +						NetworkDNSHostHostname{
> +							Hostname: "myhost",
> +						},
> +						NetworkDNSHostHostname{
> +							Hostname: "myhostalias",
> +						},
> +					},
> +				},
> +				SRVs: []NetworkDNSSRV{
> +					NetworkDNSSRV{
> +						Service:  "name",
> +						Protocol: "tcp",
> +						Domain:   "test-domain-name",
> +						Target:   ".",
> +						Port:     1024,
> +						Priority: 10,
> +						Weight:   10,
> +					},
> +				},
> +			},
>  		},
>  		Expected: []string{
>  			`<network>`,
> @@ -124,6 +168,17 @@ var networkTestData = []struct {
>  			`      <host id="0:1:0:1:18:aa:62:fe:0:16:3e:44:55:66" ip="2001:db8:ca2:2:3::2"></host>`,
>  			`    </dhcp>`,
>  			`  </ip>`,
> +			`  <dns enable="yes" forwardPlainNames="no">`,
> +			`    <forwarder addr="8.8.8.8"></forwarder>`,
> +			`    <forwarder domain="example.com" addr="8.8.4.4"></forwarder>`,
> +			`    <forwarder domain="www.example.com"></forwarder>`,
> +			`    <txt name="example" value="example value"></txt>`,
> +			`    <host ip="192.168.122.2">`,
> +			`      <hostname>myhost</hostname>`,
> +			`      <hostname>myhostalias</hostname>`,
> +			`    </host>`,
> +			`    <srv service="name" protocol="tcp" target="." port="1024" priority="10" weight="10" domain="test-domain-name"></srv>`,
> +			`  </dns>`,
>  			`</network>`,
>  		},
>  	},
> 

-- 
Thomas Hipp
Software Developer — k8s core

SUSE Linux GmbH, Maxfeldstr. 5, D-90409 Nürnberg
Tel: +49 (0) 911 74053 0 — Fax: +49 (0) 911 7417755

SUSE Linux GmbH, GF: Felix Imendörffer, Jane Smithard,
  Graham Norton, HRB 21284 (AG Nürnberg)

PGP fingerprint: 48D6 A5F4 2D60 57BF 9A37  8004 5DE8 949A 899C 8D99

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH go-xml] Add support for DNS in network
Posted by Daniel P. Berrange 6 years, 8 months ago
On Wed, Jul 12, 2017 at 03:28:13PM +0200, Thomas Hipp wrote:
> Add support for DNS in network, and add test code.
> 
> Signed-off-by: Thomas Hipp <thipp@suse.de>
> ---
>  network.go      | 39 ++++++++++++++++++++++++++++++++++
>  network_test.go | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++-----
>  2 files changed, 99 insertions(+), 5 deletions(-)

ACK & pushed


Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list