domain.go | 13 +++++++++++-- domain_test.go | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 64 insertions(+), 5 deletions(-)
---
domain.go | 13 +++++++++++--
domain_test.go | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++++---
2 files changed, 64 insertions(+), 5 deletions(-)
diff --git a/domain.go b/domain.go
index 848835a..cbb22e5 100644
--- a/domain.go
+++ b/domain.go
@@ -30,8 +30,10 @@ import (
)
type DomainController struct {
- Type string `xml:"type,attr"`
- Index string `xml:"index,attr"`
+ Type string `xml:"type,attr"`
+ Index *uint `xml:"index,attr"`
+ Model string `xml:"model,attr,omitempty"`
+ Address *DomainAddress `xml:"address"`
}
type DomainDiskSecret struct {
@@ -77,6 +79,8 @@ type DomainDisk struct {
Type string `xml:"type,attr"`
Device string `xml:"device,attr"`
Snapshot string `xml:"snapshot,attr,omitempty"`
+ Cache string `xml:"cache,attr,omitempty"`
+ Io string `xml:"io,attr,omitempty"`
Driver *DomainDiskDriver `xml:"driver"`
Auth *DomainDiskAuth `xml:"auth"`
Source *DomainDiskSource `xml:"source"`
@@ -196,8 +200,13 @@ type DomainAlias struct {
type DomainAddress struct {
Type string `xml:"type,attr"`
Controller *uint `xml:"controller,attr"`
+ Domain *uint `xml:"domain,attr"`
Bus *uint `xml:"bus,attr"`
Port *uint `xml:"port,attr"`
+ Slot *uint `xml:"slot,attr"`
+ Function *uint `xml:"function,attr"`
+ Target *uint `xml:"target,attr"`
+ Unit *uint `xml:"unit,attr"`
}
type DomainChardev struct {
diff --git a/domain_test.go b/domain_test.go
index 265cf80..22da947 100644
--- a/domain_test.go
+++ b/domain_test.go
@@ -30,6 +30,16 @@ import (
"testing"
)
+type PciAddress struct {
+ Domain uint
+ Bus uint
+ Slot uint
+ Function uint
+}
+
+var uhciIndex uint = 0
+var uhciAddr = PciAddress{0, 0, 1, 2}
+
var domainTestData = []struct {
Object *Domain
Expected []string
@@ -130,10 +140,12 @@ var domainTestData = []struct {
},
},
DomainDisk{
- Type: "volume",
+ Type: "volume",
Device: "cdrom",
+ Cache: "none",
+ Io: "native",
Source: &DomainDiskSource{
- Pool: "default",
+ Pool: "default",
Volume: "myvolume",
},
Target: &DomainDiskTarget{
@@ -174,7 +186,7 @@ var domainTestData = []struct {
` </source>`,
` <target dev="vdd" bus="virtio"></target>`,
` </disk>`,
- ` <disk type="volume" device="cdrom">`,
+ ` <disk type="volume" device="cdrom" cache="none" io="native">`,
` <source pool="default" volume="myvolume"></source>`,
` <target dev="vde" bus="virtio"></target>`,
` </disk>`,
@@ -820,6 +832,44 @@ var domainTestData = []struct {
`</domain>`,
},
},
+ {
+ Object: &Domain{
+ Type: "kvm",
+ Name: "test",
+ Devices: &DomainDeviceList{
+ Controllers: []DomainController{
+ DomainController{
+ Type: "usb",
+ Index: &uhciIndex,
+ Model: "piix3-uhci",
+ Address: &DomainAddress{
+ Type: "pci",
+ Domain: &uhciAddr.Domain,
+ Bus: &uhciAddr.Bus,
+ Slot: &uhciAddr.Slot,
+ Function: &uhciAddr.Function,
+ },
+ },
+ DomainController{
+ Type: "usb",
+ Index: nil,
+ Model: "ehci",
+ },
+ },
+ },
+ },
+ Expected: []string{
+ `<domain type="kvm">`,
+ ` <name>test</name>`,
+ ` <devices>`,
+ ` <controller type="usb" index="0" model="piix3-uhci">`,
+ ` <address type="pci" domain="0" bus="0" slot="1" function="2"></address>`,
+ ` </controller>`,
+ ` <controller type="usb" model="ehci"></controller>`,
+ ` </devices>`,
+ `</domain>`,
+ },
+ },
}
func TestDomain(t *testing.T) {
--
2.7.4
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
On Wed, May 31, 2017 at 01:32:47PM +0800, ZhenweiPi wrote: > --- > > domain.go | 13 +++++++++++-- > domain_test.go | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++++--- > 2 files changed, 64 insertions(+), 5 deletions(-) > > diff --git a/domain.go b/domain.go > index 848835a..cbb22e5 100644 > --- a/domain.go > +++ b/domain.go > @@ -30,8 +30,10 @@ import ( > ) > type DomainController struct { > - Type string `xml:"type,attr"` > - Index string `xml:"index,attr"` > + Type string `xml:"type,attr"` > + Index *uint `xml:"index,attr"` > + Model string `xml:"model,attr,omitempty"` > + Address *DomainAddress `xml:"address"` > } > type DomainDiskSecret struct { > @@ -77,6 +79,8 @@ type DomainDisk struct { > Type string `xml:"type,attr"` > Device string `xml:"device,attr"` > Snapshot string `xml:"snapshot,attr,omitempty"` > + Cache string `xml:"cache,attr,omitempty"` > + Io string `xml:"io,attr,omitempty"` > Driver *DomainDiskDriver `xml:"driver"` > Auth *DomainDiskAuth `xml:"auth"` > Source *DomainDiskSource `xml:"source"` > @@ -196,8 +200,13 @@ type DomainAlias struct { > type DomainAddress struct { > Type string `xml:"type,attr"` > Controller *uint `xml:"controller,attr"` > + Domain *uint `xml:"domain,attr"` > Bus *uint `xml:"bus,attr"` > Port *uint `xml:"port,attr"` > + Slot *uint `xml:"slot,attr"` > + Function *uint `xml:"function,attr"` > + Target *uint `xml:"target,attr"` > + Unit *uint `xml:"unit,attr"` > } > type DomainChardev struct { > diff --git a/domain_test.go b/domain_test.go > index 265cf80..22da947 100644 > --- a/domain_test.go > +++ b/domain_test.go > @@ -30,6 +30,16 @@ import ( > "testing" > ) > +type PciAddress struct { > + Domain uint > + Bus uint > + Slot uint > + Function uint > +} > + > +var uhciIndex uint = 0 > +var uhciAddr = PciAddress{0, 0, 1, 2} This struct and variables are rather pointless - just put the values inline in the one place where they are needed > + > var domainTestData = []struct { > Object *Domain > Expected []string > @@ -130,10 +140,12 @@ var domainTestData = []struct { > }, > }, > DomainDisk{ > - Type: "volume", > + Type: "volume", > Device: "cdrom", > + Cache: "none", > + Io: "native", > Source: &DomainDiskSource{ > - Pool: "default", > + Pool: "default", > Volume: "myvolume", > }, > Target: &DomainDiskTarget{ > @@ -174,7 +186,7 @@ var domainTestData = []struct { > ` </source>`, > ` <target dev="vdd" bus="virtio"></target>`, > ` </disk>`, > - ` <disk type="volume" device="cdrom">`, > + ` <disk type="volume" device="cdrom" cache="none" io="native">`, > ` <source pool="default" volume="myvolume"></source>`, > ` <target dev="vde" bus="virtio"></target>`, > ` </disk>`, > @@ -820,6 +832,44 @@ var domainTestData = []struct { > `</domain>`, > }, > }, > + { > + Object: &Domain{ > + Type: "kvm", > + Name: "test", > + Devices: &DomainDeviceList{ > + Controllers: []DomainController{ > + DomainController{ > + Type: "usb", > + Index: &uhciIndex, > + Model: "piix3-uhci", > + Address: &DomainAddress{ > + Type: "pci", > + Domain: &uhciAddr.Domain, > + Bus: &uhciAddr.Bus, > + Slot: &uhciAddr.Slot, > + Function: &uhciAddr.Function, > + }, > + }, > + DomainController{ > + Type: "usb", > + Index: nil, > + Model: "ehci", > + }, > + }, > + }, > + }, > + Expected: []string{ > + `<domain type="kvm">`, > + ` <name>test</name>`, > + ` <devices>`, > + ` <controller type="usb" index="0" model="piix3-uhci">`, > + ` <address type="pci" domain="0" bus="0" slot="1" function="2"></address>`, > + ` </controller>`, > + ` <controller type="usb" model="ehci"></controller>`, > + ` </devices>`, > + `</domain>`, > + }, > + }, > } > func TestDomain(t *testing.T) { > -- > 2.7.4 > > 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
On Wed, May 31, 2017 at 09:26:01AM +0100, Daniel P. Berrange wrote: > On Wed, May 31, 2017 at 01:32:47PM +0800, ZhenweiPi wrote: > > --- > > > > domain.go | 13 +++++++++++-- > > domain_test.go | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++++--- > > 2 files changed, 64 insertions(+), 5 deletions(-) > > > > diff --git a/domain.go b/domain.go > > index 848835a..cbb22e5 100644 > > --- a/domain.go > > +++ b/domain.go > > @@ -30,8 +30,10 @@ import ( > > ) > > type DomainController struct { > > - Type string `xml:"type,attr"` > > - Index string `xml:"index,attr"` > > + Type string `xml:"type,attr"` > > + Index *uint `xml:"index,attr"` > > + Model string `xml:"model,attr,omitempty"` > > + Address *DomainAddress `xml:"address"` > > } > > type DomainDiskSecret struct { > > @@ -77,6 +79,8 @@ type DomainDisk struct { > > Type string `xml:"type,attr"` > > Device string `xml:"device,attr"` > > Snapshot string `xml:"snapshot,attr,omitempty"` > > + Cache string `xml:"cache,attr,omitempty"` > > + Io string `xml:"io,attr,omitempty"` > > Driver *DomainDiskDriver `xml:"driver"` > > Auth *DomainDiskAuth `xml:"auth"` > > Source *DomainDiskSource `xml:"source"` > > @@ -196,8 +200,13 @@ type DomainAlias struct { > > type DomainAddress struct { > > Type string `xml:"type,attr"` > > Controller *uint `xml:"controller,attr"` > > + Domain *uint `xml:"domain,attr"` > > Bus *uint `xml:"bus,attr"` > > Port *uint `xml:"port,attr"` > > + Slot *uint `xml:"slot,attr"` > > + Function *uint `xml:"function,attr"` > > + Target *uint `xml:"target,attr"` > > + Unit *uint `xml:"unit,attr"` > > } > > type DomainChardev struct { > > diff --git a/domain_test.go b/domain_test.go > > index 265cf80..22da947 100644 > > --- a/domain_test.go > > +++ b/domain_test.go > > @@ -30,6 +30,16 @@ import ( > > "testing" > > ) > > +type PciAddress struct { > > + Domain uint > > + Bus uint > > + Slot uint > > + Function uint > > +} > > + > > +var uhciIndex uint = 0 > > +var uhciAddr = PciAddress{0, 0, 1, 2} > > This struct and variables are rather pointless - just put the values > inline in the one place where they are needed Oh actually I see they are needed - you can't take the address of a scalar in go. I'll apply this patch to git. 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
© 2016 - 2025 Red Hat, Inc.