[libvirt] [PATCH go-xml] Support for filesystem devices

Daniel P. Berrange berrange at redhat.com
Fri Apr 21 08:18:51 UTC 2017


On Thu, Apr 20, 2017 at 09:56:59PM -0700, Ryan Goodfellow wrote:
> Hi Folks,
> 
> Any thoughts on this? This is my first time posting to this list, not sure
> if I should direct the patch at someone in particular.

Sorry for the delay, this is on my todo list to review...

> 
> On Tue, Apr 18, 2017 at 3:01 PM, Ryan Goodfellow <rgoodfel at isi.edu> wrote:
> 
> > This commit adds filesystem device support. A new family of types
> > DomainFilesystem* are introduced and plumbed into the DomainDeviceList
> > struct.
> >
> > Testing has also been included.
> > ---
> >  domain.go      | 40 ++++++++++++++++++++++++++++++++++++++++
> >  domain_test.go | 55 ++++++++++++++++++++++++++++++
> > +++++++++++++++++++++++++
> >  2 files changed, 95 insertions(+)
> >
> > diff --git a/domain.go b/domain.go
> > index 307c71c..cccd9a6 100644
> > --- a/domain.go
> > +++ b/domain.go
> > @@ -81,6 +81,45 @@ type DomainDisk struct {
> >         Target   *DomainDiskTarget `xml:"target"`
> >  }
> >
> > +type DomainFilesystemDriver struct {
> > +       Type     string `xml:"type,attr"`
> > +       Name     string `xml:"name,attr,omitempty"`
> > +       WRPolicy string `xml:"wrpolicy,attr,omitempty"`
> > +}
> > +
> > +type DomainFilesystemSource struct {
> > +       Dir  string `xml:"dir,attr,omitempty"`
> > +       File string `xml:"file,attr,omitempty"`
> > +}
> > +
> > +type DomainFilesystemTarget struct {
> > +       Dir string `xml:"dir,attr"`
> > +}
> > +
> > +type DomainFilesystemReadOnly struct {
> > +}
> > +
> > +type DomainFilesystemSpaceHardLimit struct {
> > +       Value int    `xml:",chardata"`
> > +       Unit  string `xml:"unit,attr,omitempty"`
> > +}
> > +
> > +type DomainFilesystemSpaceSoftLimit struct {
> > +       Value int    `xml:",chardata"`
> > +       Unit  string `xml:"unit,attr,omitempty"`
> > +}
> > +
> > +type DomainFilesystem struct {
> > +       Type           string                          `xml:"type,attr"`
> > +       AccessMode     string
> > `xml:"accessmode,attr"`
> > +       Driver         *DomainFilesystemDriver         `xml:"driver"`
> > +       Source         *DomainFilesystemSource         `xml:"source"`
> > +       Target         *DomainFilesystemTarget         `xml:"target"`
> > +       ReadOnly       *DomainFilesystemReadOnly       `xml:"readonly"`
> > +       SpaceHardLimit *DomainFilesystemSpaceHardLimit
> > `xml:"space_hard_limit"`
> > +       SpaceSoftLimit *DomainFilesystemSpaceSoftLimit
> > `xml:"space_soft_limit"`
> > +}
> > +
> >  type DomainInterfaceMAC struct {
> >         Address string `xml:"address,attr"`
> >  }
> > @@ -212,6 +251,7 @@ type DomainVideo struct {
> >  type DomainDeviceList struct {
> >         Controllers []DomainController `xml:"controller"`
> >         Disks       []DomainDisk       `xml:"disk"`
> > +       Filesystems []DomainFilesystem `xml:"filesystem"`
> >         Interfaces  []DomainInterface  `xml:"interface"`
> >         Serials     []DomainChardev    `xml:"serial"`
> >         Consoles    []DomainChardev    `xml:"console"`
> > diff --git a/domain_test.go b/domain_test.go
> > index e5347ea..06d585c 100644
> > --- a/domain_test.go
> > +++ b/domain_test.go
> > @@ -690,6 +690,61 @@ var domainTestData = []struct {
> >                         `</domain>`,
> >                 },
> >         },
> > +       {
> > +               Object: &Domain{
> > +                       Type: "kvm",
> > +                       Name: "test",
> > +                       Devices: &DomainDeviceList{
> > +                               Filesystems: []DomainFilesystem{
> > +                                       DomainFilesystem{
> > +                                               Type:       "mount",
> > +                                               AccessMode: "mapped",
> > +                                               Driver:
> > &DomainFilesystemDriver{
> > +                                                       Type:     "path",
> > +                                                       WRPolicy:
> > "immediate",
> > +                                               },
> > +                                               Source:
> > &DomainFilesystemSource{
> > +                                                       Dir:
> > "/home/user/test",
> > +                                               },
> > +                                               Target:
> > &DomainFilesystemTarget{
> > +                                                       Dir:
> > "user-test-mount",
> > +                                               },
> > +                                       },
> > +                                       DomainFilesystem{
> > +                                               Type:       "file",
> > +                                               AccessMode: "passthrough",
> > +                                               Driver:
> > &DomainFilesystemDriver{
> > +                                                       Name: "loop",
> > +                                                       Type: "raw",
> > +                                               },
> > +                                               Source:
> > &DomainFilesystemSource{
> > +                                                       File:
> > "/home/user/test.img",
> > +                                               },
> > +                                               Target:
> > &DomainFilesystemTarget{
> > +                                                       Dir:
> > "user-file-test-mount",
> > +                                               },
> > +                                       },
> > +                               },
> > +                       },
> > +               },
> > +               Expected: []string{
> > +                       `<domain type="kvm">`,
> > +                       `  <name>test</name>`,
> > +                       `  <devices>`,
> > +                       `    <filesystem type="mount"
> > accessmode="mapped">`,
> > +                       `      <driver type="path"
> > wrpolicy="immediate"></driver>`,
> > +                       `      <source dir="/home/user/test"></source>`,
> > +                       `      <target dir="user-test-mount"></target>`,
> > +                       `    </filesystem>`,
> > +                       `    <filesystem type="file"
> > accessmode="passthrough">`,
> > +                       `      <driver type="raw" name="loop"></driver>`,
> > +                       `      <source file="/home/user/test.img"></
> > source>`,
> > +                       `      <target dir="user-file-test-mount"></
> > target>`,
> > +                       `    </filesystem>`,
> > +                       `  </devices>`,
> > +                       `</domain>`,
> > +               },
> > +       },
> >  }
> >
> >  func TestDomain(t *testing.T) {
> > --
> > 2.11.0
> >
> >
> 
> 
> -- 
> *ry**@isi*

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 :|




More information about the libvir-list mailing list