domain.go | 40 ++++++++++++++++++++++++++++++++++++++++ domain_test.go | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 95 insertions(+)
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
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
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.
On Tue, Apr 18, 2017 at 3:01 PM, Ryan Goodfellow <rgoodfel@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*
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
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@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 :|
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
On Tue, Apr 18, 2017 at 03:01:18PM -0700, Ryan Goodfellow 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(+) Thanks, I've pushed this to master now. 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 - 2026 Red Hat, Inc.