When parsing OVA files we have to work backwards to whether the original VMware object was a network or a bridge. It seems as if the presence of <rasd:Connection> is sufficient. I dropped the use of <rasd:ElementName> since it is literally just an internal name for the network element, and is not significant in how the network is used.
Also update documentation because you must use ‘--bridge’ when converting VMware guests to RHV. For a full explanation see: https://bugzilla.redhat.com/show_bug.cgi?id=1559027#c2 --- v2v/parse_ovf_from_ova.ml | 9 +++++---- v2v/virt-v2v.pod | 31 +++++++++++++------------------ 2 files changed, 18 insertions(+), 22 deletions(-) diff --git a/v2v/parse_ovf_from_ova.ml b/v2v/parse_ovf_from_ova.ml index d8de0cea1..82d7adf8c 100644 --- a/v2v/parse_ovf_from_ova.ml +++ b/v2v/parse_ovf_from_ova.ml @@ -230,16 +230,17 @@ let parse_ovf_from_ova ovf_filename = for i = 0 to nr_nodes-1 do let n = Xml.xpathobj_node obj i in Xml.xpathctx_set_current_context xpathctx n; - let vnet = - Option.default (sprintf"eth%d" i) - (xpath_string "rasd:ElementName/text()") in + let vnet, vnet_type = + match xpath_string "rasd:Connection/text()" with + | Some connection -> connection, Bridge + | None -> sprintf"eth%d" i, Network in let mac = xpath_string "rasd:Address/text()" in let nic = { s_mac = mac; s_nic_model = None; s_vnet = vnet; s_vnet_orig = vnet; - s_vnet_type = Network; + s_vnet_type = vnet_type; } in List.push_front nic nics done; diff --git a/v2v/virt-v2v.pod b/v2v/virt-v2v.pod index caf9c983e..097bab453 100644 --- a/v2v/virt-v2v.pod +++ b/v2v/virt-v2v.pod @@ -16,7 +16,7 @@ virt-v2v - Convert a guest to use KVM -o rhv-upload -oc https://ovirt-engine.example.com/ovirt-engine/api \ -os ovirt-data -op /tmp/ovirt-admin-password \ -oo rhv-cafile=/tmp/ca.pem -oo rhv-direct \ - --network ovirtmgmt + --bridge ovirtmgmt virt-v2v -ic qemu:///system qemu_guest --in-place @@ -62,7 +62,7 @@ interface(s) are connected to the target network called C<ovirtmgmt>. -o rhv-upload -oc https://ovirt-engine.example.com/ovirt-engine/api \ -os ovirt-data -op /tmp/ovirt-admin-password \ -oo rhv-cafile=/tmp/ca.pem -oo rhv-direct \ - --network ovirtmgmt + --bridge ovirtmgmt In this case the host running virt-v2v acts as a B<conversion server>. @@ -1134,27 +1134,22 @@ guest’s Network Interface Cards (NICs): NICs: Network "default" mac: 52:54:00:d0:cf:0e -This is typical of a libvirt guest: It has a single network interface -connected to a network called C<default>. - -To map a specific network to a target network, for example C<default> -on the source to C<ovirtmgmt> on the target, use: - - virt-v2v [...] --network default:ovirtmgmt - -To map every network to a target network, use: - - virt-v2v [...] --network ovirtmgmt - -Bridges are handled in the same way, but you have to use the -I<--bridge> option instead. For example: +Bridges are special classes of network devices which are attached to a +named external network on the source hypervisor, for example: $ virt-v2v [-i ...] --print-source name [...] NICs: Bridge "br0" - - $ virt-v2v [...] --bridge br0:targetbr + +To map a specific bridge to a target network, for example C<br0> on +the source to C<ovirtmgmt> on the target, use: + + virt-v2v [...] --bridge br0:ovirtmgmt + +To map every bridge to a target network, use: + + virt-v2v [...] --bridge ovirtmgmt =head1 INPUT FROM VMWARE VCENTER SERVER -- 2.13.2 _______________________________________________ Libguestfs mailing list [email protected] https://www.redhat.com/mailman/listinfo/libguestfs
