On Fri, May 26, 2017 at 06:50:58PM +0800, zhenwei.pi wrote: > --- > domain.go | 13 +++++++++++-- > domain_test.go | 31 ++++++++++++++++++++++++++++--- > 2 files changed, 39 insertions(+), 5 deletions(-) > > diff --git a/domain.go b/domain.go > index 848835a..1382cd0 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 string `xml:"index,attr"` This should be a *uint rather than string > + 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"` These look fine and you've added test coverage > @@ -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"` > } These also look fine, but need test coverage added still > > type DomainChardev struct { > diff --git a/domain_test.go b/domain_test.go > index 265cf80..fd6914e 100644 > --- a/domain_test.go > +++ b/domain_test.go > @@ -130,10 +130,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 +176,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 +822,29 @@ var domainTestData = []struct { > `</domain>`, > }, > }, > + { > + Object: &Domain{ > + Type: "kvm", > + Name: "test", > + Devices: &DomainDeviceList{ > + Controllers: []DomainController{ > + DomainController{ > + Type: "usb", > + Index: "0", This shoudl be an integer not string. > + Model: "piix3-uhci", > + }, > + }, > + }, > + }, > + Expected: []string{ > + `<domain type="kvm">`, > + ` <name>test</name>`, > + ` <devices>`, > + ` <controller type="usb" index="0" model="piix3-uhci"></controller>`, > + ` </devices>`, > + `</domain>`, > + }, > + }, > } 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@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list