Tomáš Golembiovský
2018-Apr-05 11:45 UTC
Re: [Libguestfs] [PATCH v2 1/2] v2v: OVF: write ovirt:id attribute for the OS in OVirt flavour
On Thu, 5 Apr 2018 10:34:33 +0200 Pino Toscano <ptoscano@redhat.com> wrote:> When writing the OVF in OVirt flavour, add a ovirt:id attribute to the > OperatingSystemSection tag: this attribute represents the numeric value > of the ostype ID, which is ignored by oVirt when parsing OVFs in API > mode. > --- > v2v/create_ovf.ml | 202 +++++++++++++++++++++++++++++++++++++++++++++++++++++- > 1 file changed, 201 insertions(+), 1 deletion(-) > > diff --git a/v2v/create_ovf.ml b/v2v/create_ovf.ml > index 64edd2b86..f56c4cb64 100644 > --- a/v2v/create_ovf.ml > +++ b/v2v/create_ovf.ml > @@ -216,6 +216,203 @@ and get_ostype = function > typ distro major minor arch product; > "Unassigned" > > +(* Determine the ovirt:id attribute from libguestfs inspection. > + * See ovirt-engine sources, file: > + * packaging/conf/osinfo-defaults.properties > + * and also: > + * https://bugzilla.redhat.com/show_bug.cgi?id=1219857#c9 > + *) > +and get_ovirt_osid = function > + | { i_type = "linux"; i_distro = ("rhel"|"centos"); i_major_version = 3; > + i_arch = "i386" } -> > + 9 > + > + | { i_type = "linux"; i_distro = ("rhel"|"centos"); i_major_version = 3; > + i_arch = "x86_64" } -> > + 15 > + > + | { i_type = "linux"; i_distro = ("rhel"|"centos"); i_major_version = 4; > + i_arch = "i386" } -> > + 8 > + > + | { i_type = "linux"; i_distro = ("rhel"|"centos"); i_major_version = 4; > + i_arch = "x86_64" } -> > + 14 > + > + | { i_type = "linux"; i_distro = ("rhel"|"centos"); i_major_version = 5; > + i_arch = "i386" } -> > + 7 > + > + | { i_type = "linux"; i_distro = ("rhel"|"centos"); i_major_version = 5; > + i_arch = "x86_64" } -> > + 13 > + > + | { i_type = "linux"; i_distro = ("rhel"|"centos"); i_major_version = 6; > + i_arch = "i386" } -> > + 18 > + > + | { i_type = "linux"; i_distro = ("rhel"|"centos"); i_major_version = 6; > + i_arch = "x86_64" } -> > + 19 > + > + | { i_type = "linux"; i_distro = ("rhel"|"centos"); i_major_version = 6; > + i_minor_version = min; i_arch = ("ppc64"|"ppc64le") } when min >= 9 -> > + 1007 > + > + | { i_type = "linux"; i_distro = ("rhel"|"centos"); i_major_version = 6; > + i_arch = ("ppc64"|"ppc64le") } -> > + 1003 > + > + | { i_type = "linux"; i_distro = ("rhel"|"centos"); i_major_version = 7; > + i_arch = "x86_64" } -> > + 24 > + > + | { i_type = "linux"; i_distro = ("rhel"|"centos"); i_major_version = 7; > + i_arch = ("ppc64"|"ppc64le") } -> > + 1006 > + > + | { i_type = "linux"; i_distro = ("rhel"|"centos"); i_major_version = 7; > + i_arch = "s390x" } -> > + 2003 > + > + | { i_type = "linux"; i_distro = "sles"; i_major_version = 11; > + i_arch = "x86_64" } -> > + 1193Shouldn't we here and for the one below use: i_major_version >= 11? There's also SLES 12.> + > + | { i_type = "linux"; i_distro = "sles"; i_major_version = 11; > + i_arch = "ppc64" | "ppc64le" } -> > + 1004 > + > + | { i_type = "linux"; i_distro = "sles"; i_major_version = 12; > + i_arch = "s390x" } -> > + 2004 > + > + (* Only Debian 7 is available, so use it for any 7+ version. *) > + | { i_type = "linux"; i_distro = "debian"; i_major_version = v } > + when v >= 7 -> > + 1300 > + > + (* Only Ubuntu 12.04 to 14.04 are available, so use them starting > + * from 12.04, and 14.04 for anything after it. > + *) > + | { i_type = "linux"; i_distro = "ubuntu"; i_major_version = v; > + i_arch = ("ppc64"|"ppc64le") } when v >= 14 -> > + 1005 > + > + | { i_type = "linux"; i_distro = "ubuntu"; i_major_version = v; > + i_arch = "s390x" } when v >= 16 -> > + 2005 > + > + | { i_type = "linux"; i_distro = "ubuntu"; i_major_version = v } > + when v >= 14 -> > + 1256 > + > + | { i_type = "linux"; i_distro = "ubuntu"; i_major_version = 12; > + i_minor_version = 4 } -> > + 1252 > + > + | { i_type = "linux"; i_distro = "ubuntu"; i_major_version = 12; > + i_minor_version = 10 } -> > + 1253 > + > + | { i_type = "linux"; i_distro = "ubuntu"; i_major_version = 13; > + i_minor_version = 4 } -> > + 1254 > + > + | { i_type = "linux"; i_distro = "ubuntu"; i_major_version = 13; > + i_minor_version = 10 } -> > + 1255 > + > + | { i_type = "linux"; i_arch = ("ppc64"|"ppc64le") } -> > + 1002 > + > + | { i_type = "linux"; i_arch = "s390x" } -> > + 2002 > + > + | { i_type = "linux" } -> > + 5 > + > + | { i_type = "windows"; i_major_version = 5; i_minor_version = 1 } -> > + 1 (* no architecture differentiation of XP on RHV *) > + > + | { i_type = "windows"; i_major_version = 5; i_minor_version = 2; > + i_product_name = product } when String.find product "XP" >= 0 -> > + 1 (* no architecture differentiation of XP on RHV *) > + > + | { i_type = "windows"; i_major_version = 5; i_minor_version = 2; > + i_arch = "i386" } -> > + 3 > + > + | { i_type = "windows"; i_major_version = 5; i_minor_version = 2; > + i_arch = "x86_64" } -> > + 10 > + > + | { i_type = "windows"; i_major_version = 6; i_minor_version = 0; > + i_arch = "i386" } -> > + 4 > + > + | { i_type = "windows"; i_major_version = 6; i_minor_version = 0; > + i_arch = "x86_64" } -> > + 16 > + > + | { i_type = "windows"; i_major_version = 6; i_minor_version = 1; > + i_arch = "i386" } -> > + 11 > + > + | { i_type = "windows"; i_major_version = 6; i_minor_version = 1; > + i_arch = "x86_64"; i_product_variant = "Client" } -> > + 12 > + > + | { i_type = "windows"; i_major_version = 6; i_minor_version = 1; > + i_arch = "x86_64" } -> > + 17 > + > + | { i_type = "windows"; i_major_version = 6; i_minor_version = 2; > + i_arch = "i386" } -> > + 20 > + > + | { i_type = "windows"; i_major_version = 6; i_minor_version = 2; > + i_arch = "x86_64"; i_product_variant = "Client" } -> > + 21 > + > + | { i_type = "windows"; i_major_version = 6; i_minor_version = 2; > + i_arch = "x86_64" } -> > + 23 > + > + (* Treat Windows 8.1 client like Windows 8. See: > + * https://bugzilla.redhat.com/show_bug.cgi?id=1309580#c4 > + *) > + | { i_type = "windows"; i_major_version = 6; i_minor_version = 3; > + i_arch = "i386"; i_product_variant = "Client" } -> > + 20 > + > + | { i_type = "windows"; i_major_version = 6; i_minor_version = 3; > + i_arch = "x86_64"; i_product_variant = "Client" } -> > + 21 > + > + | { i_type = "windows"; i_major_version = 6; i_minor_version = 3; > + i_arch = "x86_64" } -> > + 23This one is Windows Server 2012R2 and should map to 25.> + > + | { i_type = "windows"; i_major_version = 10; i_minor_version = 0; > + i_arch = "i386" } -> > + 26 > + > + | { i_type = "windows"; i_major_version = 10; i_minor_version = 0; > + i_arch = "x86_64"; i_product_variant = "Client" } -> > + 27 > + > + | { i_type = "windows"; i_major_version = 10; i_minor_version = 0; > + i_arch = "x86_64" } -> > + 29 > + > + | { i_type = typ; i_distro = distro; > + i_major_version = major; i_minor_version = minor; i_arch = arch; > + i_product_name = product } -> > + warning (f_"unknown guest operating system: %s %s %d.%d %s (%s)") > + typ distro major minor arch product; > + 0 > +There are also 1001 which is unspecified PPC and 2001 which is unspecified s390x. Maybe we want to use those too?> (* Set the <Origin/> element based on the source hypervisor. > * https://bugzilla.redhat.com/show_bug.cgi?id=1342398#c6 > * https://gerrit.ovirt.org/#/c/59147/ > @@ -295,6 +492,7 @@ let rec create_ovf source targets guestcaps inspect > "xmlns:vssd", "http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_VirtualSystemSettingData"; > "xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance"; > "xmlns:ovf", "http://schemas.dmtf.org/ovf/envelope/1/"; > + "xmlns:ovirt", "http://www.ovirt.org/ovf"; > "ovf:version", "0.9" > ] [ > Comment generated_by; > @@ -357,8 +555,10 @@ let rec create_ovf source targets guestcaps inspect > ] in > (match ovf_flavour with > | OVirt -> > + let ovirt_osid = get_ovirt_osid inspect in > e "OperatingSystemSection" ["ovf:id", vm_uuid;Having UUID here does not make sense. We can use 0 which is "Unknown" or 1 wich is "Other". Tomas> - "ovf:required", "false"] > + "ovf:required", "false"; > + "ovirt:id", string_of_int ovirt_osid] > osinfo_subnodes > | RHVExportStorageDomain -> > e "Section" ["ovf:id", vm_uuid; "ovf:required", "false"; > -- > 2.14.3 >-- Tomáš Golembiovský <tgolembi@redhat.com>
Pino Toscano
2018-Apr-05 11:56 UTC
Re: [Libguestfs] [PATCH v2 1/2] v2v: OVF: write ovirt:id attribute for the OS in OVirt flavour
On Thursday, 5 April 2018 13:45:53 CEST Tomáš Golembiovský wrote:> On Thu, 5 Apr 2018 10:34:33 +0200 > Pino Toscano <ptoscano@redhat.com> wrote: > > > When writing the OVF in OVirt flavour, add a ovirt:id attribute to the > > OperatingSystemSection tag: this attribute represents the numeric value > > of the ostype ID, which is ignored by oVirt when parsing OVFs in API > > mode. > > --- > > v2v/create_ovf.ml | 202 +++++++++++++++++++++++++++++++++++++++++++++++++++++- > > 1 file changed, 201 insertions(+), 1 deletion(-) > > > > diff --git a/v2v/create_ovf.ml b/v2v/create_ovf.ml > > index 64edd2b86..f56c4cb64 100644 > > --- a/v2v/create_ovf.ml > > +++ b/v2v/create_ovf.ml > > @@ -216,6 +216,203 @@ and get_ostype = function > > typ distro major minor arch product; > > "Unassigned" > > > > +(* Determine the ovirt:id attribute from libguestfs inspection. > > + * See ovirt-engine sources, file: > > + * packaging/conf/osinfo-defaults.properties > > + * and also: > > + * https://bugzilla.redhat.com/show_bug.cgi?id=1219857#c9 > > + *) > > +and get_ovirt_osid = function > > + | { i_type = "linux"; i_distro = ("rhel"|"centos"); i_major_version = 3; > > + i_arch = "i386" } -> > > + 9 > > + > > + | { i_type = "linux"; i_distro = ("rhel"|"centos"); i_major_version = 3; > > + i_arch = "x86_64" } -> > > + 15 > > + > > + | { i_type = "linux"; i_distro = ("rhel"|"centos"); i_major_version = 4; > > + i_arch = "i386" } -> > > + 8 > > + > > + | { i_type = "linux"; i_distro = ("rhel"|"centos"); i_major_version = 4; > > + i_arch = "x86_64" } -> > > + 14 > > + > > + | { i_type = "linux"; i_distro = ("rhel"|"centos"); i_major_version = 5; > > + i_arch = "i386" } -> > > + 7 > > + > > + | { i_type = "linux"; i_distro = ("rhel"|"centos"); i_major_version = 5; > > + i_arch = "x86_64" } -> > > + 13 > > + > > + | { i_type = "linux"; i_distro = ("rhel"|"centos"); i_major_version = 6; > > + i_arch = "i386" } -> > > + 18 > > + > > + | { i_type = "linux"; i_distro = ("rhel"|"centos"); i_major_version = 6; > > + i_arch = "x86_64" } -> > > + 19 > > + > > + | { i_type = "linux"; i_distro = ("rhel"|"centos"); i_major_version = 6; > > + i_minor_version = min; i_arch = ("ppc64"|"ppc64le") } when min >= 9 -> > > + 1007 > > + > > + | { i_type = "linux"; i_distro = ("rhel"|"centos"); i_major_version = 6; > > + i_arch = ("ppc64"|"ppc64le") } -> > > + 1003 > > + > > + | { i_type = "linux"; i_distro = ("rhel"|"centos"); i_major_version = 7; > > + i_arch = "x86_64" } -> > > + 24 > > + > > + | { i_type = "linux"; i_distro = ("rhel"|"centos"); i_major_version = 7; > > + i_arch = ("ppc64"|"ppc64le") } -> > > + 1006 > > + > > + | { i_type = "linux"; i_distro = ("rhel"|"centos"); i_major_version = 7; > > + i_arch = "s390x" } -> > > + 2003 > > + > > + | { i_type = "linux"; i_distro = "sles"; i_major_version = 11; > > + i_arch = "x86_64" } -> > > + 1193 > > Shouldn't we here and for the one below use: i_major_version >= 11? > There's also SLES 12.Please note that this function is modelled after the get_ostype function in the same file, so it inherits basically all its results (at most adding a couple more). In this case, get_ostype returns sles_11/sles_11_ppc64 only for that version, so in case I need to adapt get_ostype first.> > + > > + | { i_type = "linux"; i_distro = "sles"; i_major_version = 11; > > + i_arch = "ppc64" | "ppc64le" } -> > > + 1004 > > + > > + | { i_type = "linux"; i_distro = "sles"; i_major_version = 12; > > + i_arch = "s390x" } -> > > + 2004 > > + > > + (* Only Debian 7 is available, so use it for any 7+ version. *) > > + | { i_type = "linux"; i_distro = "debian"; i_major_version = v } > > + when v >= 7 -> > > + 1300 > > + > > + (* Only Ubuntu 12.04 to 14.04 are available, so use them starting > > + * from 12.04, and 14.04 for anything after it. > > + *) > > + | { i_type = "linux"; i_distro = "ubuntu"; i_major_version = v; > > + i_arch = ("ppc64"|"ppc64le") } when v >= 14 -> > > + 1005 > > + > > + | { i_type = "linux"; i_distro = "ubuntu"; i_major_version = v; > > + i_arch = "s390x" } when v >= 16 -> > > + 2005 > > + > > + | { i_type = "linux"; i_distro = "ubuntu"; i_major_version = v } > > + when v >= 14 -> > > + 1256 > > + > > + | { i_type = "linux"; i_distro = "ubuntu"; i_major_version = 12; > > + i_minor_version = 4 } -> > > + 1252 > > + > > + | { i_type = "linux"; i_distro = "ubuntu"; i_major_version = 12; > > + i_minor_version = 10 } -> > > + 1253 > > + > > + | { i_type = "linux"; i_distro = "ubuntu"; i_major_version = 13; > > + i_minor_version = 4 } -> > > + 1254 > > + > > + | { i_type = "linux"; i_distro = "ubuntu"; i_major_version = 13; > > + i_minor_version = 10 } -> > > + 1255 > > + > > + | { i_type = "linux"; i_arch = ("ppc64"|"ppc64le") } -> > > + 1002 > > + > > + | { i_type = "linux"; i_arch = "s390x" } -> > > + 2002 > > + > > + | { i_type = "linux" } -> > > + 5 > > + > > + | { i_type = "windows"; i_major_version = 5; i_minor_version = 1 } -> > > + 1 (* no architecture differentiation of XP on RHV *) > > + > > + | { i_type = "windows"; i_major_version = 5; i_minor_version = 2; > > + i_product_name = product } when String.find product "XP" >= 0 -> > > + 1 (* no architecture differentiation of XP on RHV *) > > + > > + | { i_type = "windows"; i_major_version = 5; i_minor_version = 2; > > + i_arch = "i386" } -> > > + 3 > > + > > + | { i_type = "windows"; i_major_version = 5; i_minor_version = 2; > > + i_arch = "x86_64" } -> > > + 10 > > + > > + | { i_type = "windows"; i_major_version = 6; i_minor_version = 0; > > + i_arch = "i386" } -> > > + 4 > > + > > + | { i_type = "windows"; i_major_version = 6; i_minor_version = 0; > > + i_arch = "x86_64" } -> > > + 16 > > + > > + | { i_type = "windows"; i_major_version = 6; i_minor_version = 1; > > + i_arch = "i386" } -> > > + 11 > > + > > + | { i_type = "windows"; i_major_version = 6; i_minor_version = 1; > > + i_arch = "x86_64"; i_product_variant = "Client" } -> > > + 12 > > + > > + | { i_type = "windows"; i_major_version = 6; i_minor_version = 1; > > + i_arch = "x86_64" } -> > > + 17 > > + > > + | { i_type = "windows"; i_major_version = 6; i_minor_version = 2; > > + i_arch = "i386" } -> > > + 20 > > + > > + | { i_type = "windows"; i_major_version = 6; i_minor_version = 2; > > + i_arch = "x86_64"; i_product_variant = "Client" } -> > > + 21 > > + > > + | { i_type = "windows"; i_major_version = 6; i_minor_version = 2; > > + i_arch = "x86_64" } -> > > + 23 > > + > > + (* Treat Windows 8.1 client like Windows 8. See: > > + * https://bugzilla.redhat.com/show_bug.cgi?id=1309580#c4 > > + *) > > + | { i_type = "windows"; i_major_version = 6; i_minor_version = 3; > > + i_arch = "i386"; i_product_variant = "Client" } -> > > + 20 > > + > > + | { i_type = "windows"; i_major_version = 6; i_minor_version = 3; > > + i_arch = "x86_64"; i_product_variant = "Client" } -> > > + 21 > > + > > + | { i_type = "windows"; i_major_version = 6; i_minor_version = 3; > > + i_arch = "x86_64" } -> > > + 23 > > This one is Windows Server 2012R2 and should map to 25.There's a comment few lines above about treating win 8.1 as win 8.> > + > > + | { i_type = "windows"; i_major_version = 10; i_minor_version = 0; > > + i_arch = "i386" } -> > > + 26 > > + > > + | { i_type = "windows"; i_major_version = 10; i_minor_version = 0; > > + i_arch = "x86_64"; i_product_variant = "Client" } -> > > + 27 > > + > > + | { i_type = "windows"; i_major_version = 10; i_minor_version = 0; > > + i_arch = "x86_64" } -> > > + 29 > > + > > + | { i_type = typ; i_distro = distro; > > + i_major_version = major; i_minor_version = minor; i_arch = arch; > > + i_product_name = product } -> > > + warning (f_"unknown guest operating system: %s %s %d.%d %s (%s)") > > + typ distro major minor arch product; > > + 0 > > + > > There are also 1001 which is unspecified PPC and 2001 which is unspecified > s390x. Maybe we want to use those too?They need to be added to get_ostype too, then; OTOH, they are for OSes different than Linux, Windows, and FreeBSD, which are not supported by v2v (only Linux, and Windows are). Hence, adding them is a bit pointless at the moment.> > (* Set the <Origin/> element based on the source hypervisor. > > * https://bugzilla.redhat.com/show_bug.cgi?id=1342398#c6 > > * https://gerrit.ovirt.org/#/c/59147/ > > @@ -295,6 +492,7 @@ let rec create_ovf source targets guestcaps inspect > > "xmlns:vssd", "http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_VirtualSystemSettingData"; > > "xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance"; > > "xmlns:ovf", "http://schemas.dmtf.org/ovf/envelope/1/"; > > + "xmlns:ovirt", "http://www.ovirt.org/ovf"; > > "ovf:version", "0.9" > > ] [ > > Comment generated_by; > > @@ -357,8 +555,10 @@ let rec create_ovf source targets guestcaps inspect > > ] in > > (match ovf_flavour with > > | OVirt -> > > + let ovirt_osid = get_ovirt_osid inspect in > > e "OperatingSystemSection" ["ovf:id", vm_uuid; > > Having UUID here does not make sense. We can use 0 which is "Unknown" or > 1 wich is "Other".Note I did not add this ovf:id here :) ovirt-engine will ignore it anyway, at least according to my reading of its OVF parser, as long as ovirt:id is there. -- Pino Toscano
Tomáš Golembiovský
2018-Apr-05 12:16 UTC
Re: [Libguestfs] [PATCH v2 1/2] v2v: OVF: write ovirt:id attribute for the OS in OVirt flavour
On Thu, 05 Apr 2018 13:56:11 +0200 Pino Toscano <ptoscano@redhat.com> wrote:> On Thursday, 5 April 2018 13:45:53 CEST Tomáš Golembiovský wrote: > > On Thu, 5 Apr 2018 10:34:33 +0200 > > Pino Toscano <ptoscano@redhat.com> wrote: > > > > > When writing the OVF in OVirt flavour, add a ovirt:id attribute to the > > > OperatingSystemSection tag: this attribute represents the numeric value > > > of the ostype ID, which is ignored by oVirt when parsing OVFs in API > > > mode. > > > --- > > > v2v/create_ovf.ml | 202 +++++++++++++++++++++++++++++++++++++++++++++++++++++- > > > 1 file changed, 201 insertions(+), 1 deletion(-) > > > > > > diff --git a/v2v/create_ovf.ml b/v2v/create_ovf.ml > > > index 64edd2b86..f56c4cb64 100644 > > > --- a/v2v/create_ovf.ml > > > +++ b/v2v/create_ovf.ml > > > @@ -216,6 +216,203 @@ and get_ostype = function > > > typ distro major minor arch product; > > > "Unassigned" > > > > > > +(* Determine the ovirt:id attribute from libguestfs inspection. > > > + * See ovirt-engine sources, file: > > > + * packaging/conf/osinfo-defaults.properties > > > + * and also: > > > + * https://bugzilla.redhat.com/show_bug.cgi?id=1219857#c9 > > > + *) > > > +and get_ovirt_osid = function > > > + | { i_type = "linux"; i_distro = ("rhel"|"centos"); i_major_version = 3; > > > + i_arch = "i386" } -> > > > + 9 > > > + > > > + | { i_type = "linux"; i_distro = ("rhel"|"centos"); i_major_version = 3; > > > + i_arch = "x86_64" } -> > > > + 15 > > > + > > > + | { i_type = "linux"; i_distro = ("rhel"|"centos"); i_major_version = 4; > > > + i_arch = "i386" } -> > > > + 8 > > > + > > > + | { i_type = "linux"; i_distro = ("rhel"|"centos"); i_major_version = 4; > > > + i_arch = "x86_64" } -> > > > + 14 > > > + > > > + | { i_type = "linux"; i_distro = ("rhel"|"centos"); i_major_version = 5; > > > + i_arch = "i386" } -> > > > + 7 > > > + > > > + | { i_type = "linux"; i_distro = ("rhel"|"centos"); i_major_version = 5; > > > + i_arch = "x86_64" } -> > > > + 13 > > > + > > > + | { i_type = "linux"; i_distro = ("rhel"|"centos"); i_major_version = 6; > > > + i_arch = "i386" } -> > > > + 18 > > > + > > > + | { i_type = "linux"; i_distro = ("rhel"|"centos"); i_major_version = 6; > > > + i_arch = "x86_64" } -> > > > + 19 > > > + > > > + | { i_type = "linux"; i_distro = ("rhel"|"centos"); i_major_version = 6; > > > + i_minor_version = min; i_arch = ("ppc64"|"ppc64le") } when min >= 9 -> > > > + 1007 > > > + > > > + | { i_type = "linux"; i_distro = ("rhel"|"centos"); i_major_version = 6; > > > + i_arch = ("ppc64"|"ppc64le") } -> > > > + 1003 > > > + > > > + | { i_type = "linux"; i_distro = ("rhel"|"centos"); i_major_version = 7; > > > + i_arch = "x86_64" } -> > > > + 24 > > > + > > > + | { i_type = "linux"; i_distro = ("rhel"|"centos"); i_major_version = 7; > > > + i_arch = ("ppc64"|"ppc64le") } -> > > > + 1006 > > > + > > > + | { i_type = "linux"; i_distro = ("rhel"|"centos"); i_major_version = 7; > > > + i_arch = "s390x" } -> > > > + 2003 > > > + > > > + | { i_type = "linux"; i_distro = "sles"; i_major_version = 11; > > > + i_arch = "x86_64" } -> > > > + 1193 > > > > Shouldn't we here and for the one below use: i_major_version >= 11? > > There's also SLES 12. > > Please note that this function is modelled after the get_ostype function > in the same file, so it inherits basically all its results (at most > adding a couple more). > > In this case, get_ostype returns sles_11/sles_11_ppc64 only for that > version, so in case I need to adapt get_ostype first. >Ok, we can treat SLES12 as generic Linux for now if that's easier.> > > + > > > + | { i_type = "linux"; i_distro = "sles"; i_major_version = 11; > > > + i_arch = "ppc64" | "ppc64le" } -> > > > + 1004 > > > + > > > + | { i_type = "linux"; i_distro = "sles"; i_major_version = 12; > > > + i_arch = "s390x" } -> > > > + 2004 > > > + > > > + (* Only Debian 7 is available, so use it for any 7+ version. *) > > > + | { i_type = "linux"; i_distro = "debian"; i_major_version = v } > > > + when v >= 7 -> > > > + 1300 > > > + > > > + (* Only Ubuntu 12.04 to 14.04 are available, so use them starting > > > + * from 12.04, and 14.04 for anything after it. > > > + *) > > > + | { i_type = "linux"; i_distro = "ubuntu"; i_major_version = v; > > > + i_arch = ("ppc64"|"ppc64le") } when v >= 14 -> > > > + 1005 > > > + > > > + | { i_type = "linux"; i_distro = "ubuntu"; i_major_version = v; > > > + i_arch = "s390x" } when v >= 16 -> > > > + 2005 > > > + > > > + | { i_type = "linux"; i_distro = "ubuntu"; i_major_version = v } > > > + when v >= 14 -> > > > + 1256 > > > + > > > + | { i_type = "linux"; i_distro = "ubuntu"; i_major_version = 12; > > > + i_minor_version = 4 } -> > > > + 1252 > > > + > > > + | { i_type = "linux"; i_distro = "ubuntu"; i_major_version = 12; > > > + i_minor_version = 10 } -> > > > + 1253 > > > + > > > + | { i_type = "linux"; i_distro = "ubuntu"; i_major_version = 13; > > > + i_minor_version = 4 } -> > > > + 1254 > > > + > > > + | { i_type = "linux"; i_distro = "ubuntu"; i_major_version = 13; > > > + i_minor_version = 10 } -> > > > + 1255 > > > + > > > + | { i_type = "linux"; i_arch = ("ppc64"|"ppc64le") } -> > > > + 1002 > > > + > > > + | { i_type = "linux"; i_arch = "s390x" } -> > > > + 2002 > > > + > > > + | { i_type = "linux" } -> > > > + 5 > > > + > > > + | { i_type = "windows"; i_major_version = 5; i_minor_version = 1 } -> > > > + 1 (* no architecture differentiation of XP on RHV *) > > > + > > > + | { i_type = "windows"; i_major_version = 5; i_minor_version = 2; > > > + i_product_name = product } when String.find product "XP" >= 0 -> > > > + 1 (* no architecture differentiation of XP on RHV *) > > > + > > > + | { i_type = "windows"; i_major_version = 5; i_minor_version = 2; > > > + i_arch = "i386" } -> > > > + 3 > > > + > > > + | { i_type = "windows"; i_major_version = 5; i_minor_version = 2; > > > + i_arch = "x86_64" } -> > > > + 10 > > > + > > > + | { i_type = "windows"; i_major_version = 6; i_minor_version = 0; > > > + i_arch = "i386" } -> > > > + 4 > > > + > > > + | { i_type = "windows"; i_major_version = 6; i_minor_version = 0; > > > + i_arch = "x86_64" } -> > > > + 16 > > > + > > > + | { i_type = "windows"; i_major_version = 6; i_minor_version = 1; > > > + i_arch = "i386" } -> > > > + 11 > > > + > > > + | { i_type = "windows"; i_major_version = 6; i_minor_version = 1; > > > + i_arch = "x86_64"; i_product_variant = "Client" } -> > > > + 12 > > > + > > > + | { i_type = "windows"; i_major_version = 6; i_minor_version = 1; > > > + i_arch = "x86_64" } -> > > > + 17 > > > + > > > + | { i_type = "windows"; i_major_version = 6; i_minor_version = 2; > > > + i_arch = "i386" } -> > > > + 20 > > > + > > > + | { i_type = "windows"; i_major_version = 6; i_minor_version = 2; > > > + i_arch = "x86_64"; i_product_variant = "Client" } -> > > > + 21 > > > + > > > + | { i_type = "windows"; i_major_version = 6; i_minor_version = 2; > > > + i_arch = "x86_64" } -> > > > + 23 > > > + > > > + (* Treat Windows 8.1 client like Windows 8. See: > > > + * https://bugzilla.redhat.com/show_bug.cgi?id=1309580#c4 > > > + *) > > > + | { i_type = "windows"; i_major_version = 6; i_minor_version = 3; > > > + i_arch = "i386"; i_product_variant = "Client" } -> > > > + 20 > > > + > > > + | { i_type = "windows"; i_major_version = 6; i_minor_version = 3; > > > + i_arch = "x86_64"; i_product_variant = "Client" } -> > > > + 21 > > > + > > > + | { i_type = "windows"; i_major_version = 6; i_minor_version = 3; > > > + i_arch = "x86_64" } -> > > > + 23 > > > > This one is Windows Server 2012R2 and should map to 25. > > There's a comment few lines above about treating win 8.1 as win 8. >Yes, but I believe it talks only about the desktop version.> > > + > > > + | { i_type = "windows"; i_major_version = 10; i_minor_version = 0; > > > + i_arch = "i386" } -> > > > + 26 > > > + > > > + | { i_type = "windows"; i_major_version = 10; i_minor_version = 0; > > > + i_arch = "x86_64"; i_product_variant = "Client" } -> > > > + 27 > > > + > > > + | { i_type = "windows"; i_major_version = 10; i_minor_version = 0; > > > + i_arch = "x86_64" } -> > > > + 29 > > > + > > > + | { i_type = typ; i_distro = distro; > > > + i_major_version = major; i_minor_version = minor; i_arch = arch; > > > + i_product_name = product } -> > > > + warning (f_"unknown guest operating system: %s %s %d.%d %s (%s)") > > > + typ distro major minor arch product; > > > + 0 > > > + > > > > There are also 1001 which is unspecified PPC and 2001 which is unspecified > > s390x. Maybe we want to use those too? > > They need to be added to get_ostype too, then; OTOH, they are for OSes > different than Linux, Windows, and FreeBSD, which are not supported by > v2v (only Linux, and Windows are). Hence, adding them is a bit > pointless at the moment.Ok, let's leave that as is, if that's easier.> > > (* Set the <Origin/> element based on the source hypervisor. > > > * https://bugzilla.redhat.com/show_bug.cgi?id=1342398#c6 > > > * https://gerrit.ovirt.org/#/c/59147/ > > > @@ -295,6 +492,7 @@ let rec create_ovf source targets guestcaps inspect > > > "xmlns:vssd", "http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_VirtualSystemSettingData"; > > > "xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance"; > > > "xmlns:ovf", "http://schemas.dmtf.org/ovf/envelope/1/"; > > > + "xmlns:ovirt", "http://www.ovirt.org/ovf"; > > > "ovf:version", "0.9" > > > ] [ > > > Comment generated_by; > > > @@ -357,8 +555,10 @@ let rec create_ovf source targets guestcaps inspect > > > ] in > > > (match ovf_flavour with > > > | OVirt -> > > > + let ovirt_osid = get_ovirt_osid inspect in > > > e "OperatingSystemSection" ["ovf:id", vm_uuid; > > > > Having UUID here does not make sense. We can use 0 which is "Unknown" or > > 1 wich is "Other". > > Note I did not add this ovf:id here :) ovirt-engine will ignore it > anyway, at least according to my reading of its OVF parser, as long > as ovirt:id is there.I know you didn't. I did. :) Tomas -- Tomáš Golembiovský <tgolembi@redhat.com>
Apparently Analagous Threads
- Re: [PATCH v2 1/2] v2v: OVF: write ovirt:id attribute for the OS in OVirt flavour
- [PATCH] v2v: OVF: write ovirt:id attribute for the OS in OVirt flavour
- Re: [PATCH v2 1/2] v2v: OVF: write ovirt:id attribute for the OS in OVirt flavour
- [PATCH v3 0/3] v2v: improve OVF in OVirt flavour
- [PATCH v2 1/2] v2v: OVF: write ovirt:id attribute for the OS in OVirt flavour