From e46f1da4b3342ca724fb5556a5fac547fee274b3 Mon Sep 17 00:00:00 2001 From: Alexandru Avadanii Date: Tue, 25 Jul 2017 00:29:47 +0200 Subject: [PATCH] p/fuel: virtio: min libvirt 3.x and Qemu 2.6 Expect host virtualization tools (libvirt, qemu) to be recent enough to support modern virtio-net-pci out of box as a default. This allows us to drop some changes and a hack - see [1]: - "model=virtio" implies "model=virtio-net-pci" on libvirt 3.x; - "model=virtio" puts each NIC on a seperate bus, all work now; - modern virtio is automatically used when NIC is on PCIe bus; Revert "p/fuel: lib.sh: Revert to virtio-mmio for PXE net" This reverts commit 4f72e6be436badd2ded546424ec4a304cd6ce5d3. [1] https://lists.gnu.org/archive/html/qemu-devel/2017-07/msg07594.html Change-Id: Iaa7af63846c9d9dca5b7a9be5efa54f8cd56242e Signed-off-by: Alexandru Avadanii --- ...h-AArch64-virt-install-Use-virtio-net-pci.patch | 80 -------------- ...h-Use-host-passthrough-when-spawning-VMs.patch} | 10 +- ...es-virtual-AArch64-virtio-NIC-names-sync.patch} | 115 +++++++++++---------- 3 files changed, 63 insertions(+), 142 deletions(-) delete mode 100644 patches/opnfv-fuel/0003-lib.sh-AArch64-virt-install-Use-virtio-net-pci.patch rename patches/opnfv-fuel/{0008-lib.sh-Use-host-passthrough-when-spawning-VMs.patch => 0003-lib.sh-Use-host-passthrough-when-spawning-VMs.patch} (81%) rename patches/opnfv-fuel/{0006-classes-virtual-AArch64-virtio-pci-net-sync.patch => 0006-classes-virtual-AArch64-virtio-NIC-names-sync.patch} (86%) diff --git a/patches/opnfv-fuel/0003-lib.sh-AArch64-virt-install-Use-virtio-net-pci.patch b/patches/opnfv-fuel/0003-lib.sh-AArch64-virt-install-Use-virtio-net-pci.patch deleted file mode 100644 index c49bddec..00000000 --- a/patches/opnfv-fuel/0003-lib.sh-AArch64-virt-install-Use-virtio-net-pci.patch +++ /dev/null @@ -1,80 +0,0 @@ -From: Alexandru Avadanii -Date: Tue, 11 Jul 2017 19:06:47 +0200 -Subject: [PATCH] lib.sh: AArch64: virt-install: Use virtio-net-pci - -AArch64 virt tools (i.e. libvirt) default to "virtio-mmio", instead of -"virtio-net-pci", at least before libvirt 3.x (see [1]). - -Without PCI bus info, we can't really enforce a specific order for -the guest ethernet devices. - -This leads to a mismatch between cloud-init, who expects "pxe" -network to reside on "eth0", while in fact it ends up on "eth3". -As a consequence, we have no connectivity to the guest, as DHCP -is only configured by cloud-init on "eth0", and also the boot -sequence waits ~5 minutes for "eth0" to come up, before eventually -giving up. - -Moreover, predictable network interface naming is out of the question -with virtio-mmio, as there is no bus information to rely on. - -Therefore we will enforce "virtio-net-pci" on AArch64, instead of -the default "virtio" (which translates into "virtio-mmio" currently). - -FIXME: Apparently, both legacy and modern virtio (0.9 and 1.0) are -active, which leads to triggering bug[2]. -For now, throw some sed magic at it and disable legacy mode. - -[1] https://www.redhat.com/archives/libvir-list/2016-August/msg00931.html -[2] https://bugzilla.redhat.com/show_bug.cgi?id=1370005 - -Signed-off-by: Alexandru Avadanii ---- - mcp/scripts/lib.sh | 20 ++++++++++++++++---- - 1 file changed, 16 insertions(+), 4 deletions(-) - -diff --git a/mcp/scripts/lib.sh b/mcp/scripts/lib.sh -index 862fdcc..7c4c46f 100644 ---- a/mcp/scripts/lib.sh -+++ b/mcp/scripts/lib.sh -@@ -58,24 +58,36 @@ create_vms() { - - # AArch64: prepare arch specific arguments - local virt_extra_args="" -+ local virt_pxe_net_model="virtio" -+ local virt_net_model="${virt_pxe_net_model}" - if [ "$(uname -i)" = "aarch64" ]; then - # No Cirrus VGA on AArch64, use vga std - virt_extra_args="$virt_extra_args --video=vga" -+ # AArch64 networking defaults to virtio-mmio before libvirt 3.x -+ virt_net_model="virtio-net-pci" - fi - - # create vms with specified options - for node in "${vnodes[@]}"; do - virt-install --name ${node} --ram ${vnodes_ram[$node]} --vcpus ${vnodes_vcpus[$node]} --cpu host --accelerate \ -- --network network:pxe,model=virtio \ -- --network network:mgmt,model=virtio \ -- --network network:internal,model=virtio \ -- --network network:public,model=virtio \ -+ --network network:pxe,model=${virt_pxe_net_model} \ -+ --network network:mgmt,model=${virt_net_model} \ -+ --network network:internal,model=${virt_net_model} \ -+ --network network:public,model=${virt_net_model} \ - --disk path=$(pwd)/images/mcp_${node}.qcow2,format=qcow2,bus=virtio,cache=none,io=native \ - --os-type linux --os-variant none \ - --boot hd --vnc --console pty --autostart --noreboot \ - --disk path=$(pwd)/images/mcp_${node}.iso,device=cdrom \ - --noautoconsole \ - ${virt_extra_args} -+ -+ # NOTE(armband): Disable legacy virtio (0.9) in favor of modern virtio (1.0) -+ # http://blog.vmsplice.net/2011/04/how-to-pass-qemu-command-line-options.html -+ # -+ # -+ # -+ # -+ EDITOR="sed -i -e \"s|\(|\1 xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>|\" -e \"s|\(\)|\1|\"" virsh edit ${node} - done - } - diff --git a/patches/opnfv-fuel/0008-lib.sh-Use-host-passthrough-when-spawning-VMs.patch b/patches/opnfv-fuel/0003-lib.sh-Use-host-passthrough-when-spawning-VMs.patch similarity index 81% rename from patches/opnfv-fuel/0008-lib.sh-Use-host-passthrough-when-spawning-VMs.patch rename to patches/opnfv-fuel/0003-lib.sh-Use-host-passthrough-when-spawning-VMs.patch index 88793337..57e45d6f 100644 --- a/patches/opnfv-fuel/0008-lib.sh-Use-host-passthrough-when-spawning-VMs.patch +++ b/patches/opnfv-fuel/0003-lib.sh-Use-host-passthrough-when-spawning-VMs.patch @@ -15,15 +15,15 @@ Signed-off-by: Alexandru Avadanii 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mcp/scripts/lib.sh b/mcp/scripts/lib.sh -index 7c4c46f..2be3e65 100644 +index 862fdcc..251c5a5 100644 --- a/mcp/scripts/lib.sh +++ b/mcp/scripts/lib.sh -@@ -69,7 +69,7 @@ create_vms() { +@@ -65,7 +65,7 @@ create_vms() { # create vms with specified options for node in "${vnodes[@]}"; do - virt-install --name ${node} --ram ${vnodes_ram[$node]} --vcpus ${vnodes_vcpus[$node]} --cpu host --accelerate \ + virt-install --name ${node} --ram ${vnodes_ram[$node]} --vcpus ${vnodes_vcpus[$node]} --cpu host-passthrough --accelerate \ - --network network:pxe,model=${virt_pxe_net_model} \ - --network network:mgmt,model=${virt_net_model} \ - --network network:internal,model=${virt_net_model} \ + --network network:pxe,model=virtio \ + --network network:mgmt,model=virtio \ + --network network:internal,model=virtio \ diff --git a/patches/opnfv-fuel/0006-classes-virtual-AArch64-virtio-pci-net-sync.patch b/patches/opnfv-fuel/0006-classes-virtual-AArch64-virtio-NIC-names-sync.patch similarity index 86% rename from patches/opnfv-fuel/0006-classes-virtual-AArch64-virtio-pci-net-sync.patch rename to patches/opnfv-fuel/0006-classes-virtual-AArch64-virtio-NIC-names-sync.patch index 85434387..2c64459b 100644 --- a/patches/opnfv-fuel/0006-classes-virtual-AArch64-virtio-pci-net-sync.patch +++ b/patches/opnfv-fuel/0006-classes-virtual-AArch64-virtio-NIC-names-sync.patch @@ -1,21 +1,22 @@ From: Alexandru Avadanii -Date: Sun, 16 Jul 2017 03:58:58 +0200 -Subject: [PATCH] classes: virtual: AArch64: virtio-pci-net sync +Date: Tue, 25 Jul 2017 02:53:16 +0200 +Subject: [PATCH] classes: virtual: AArch64: virtio NIC names sync grep -e "ens[[:digit:]]" -R . -l | \ xargs sed -i \ - -e 's/ens3/eth0/g' \ - -e 's/ens4/enp2s1/g' \ - -e 's/ens5/enp2s2/g' \ - -e 's/ens6/enp2s3/g' + -e 's/ens3/enp1s0/g' \ + -e 's/ens4/enp2s2/g' \ + -e 's/ens5/enp3s0/g' \ + -e 's/ens6/enp4s0/g' Since AArch64 will be using virtio-net-pci NIC model for guests, predictable interface naming yields a slightly different scheme. Update all configuration to reflect this. -NOTE: PXE interfaces still uses "virtio-mmio", which translates -into "eth0". +NOTE: Above configuration is expected with libvirt 3.x, which puts +each NIC on a separate PCIe bus (which also imposes virtio modern +is used). Signed-off-by: Alexandru Avadanii --- @@ -35,7 +36,7 @@ Signed-off-by: Alexandru Avadanii 13 files changed, 36 insertions(+), 36 deletions(-) diff --git a/mcp/reclass/classes/cluster/virtual-mcp-ocata-odl/infra/config.yml b/mcp/reclass/classes/cluster/virtual-mcp-ocata-odl/infra/config.yml -index 328d6df..99e6152 100644 +index 328d6df..57c6cec 100644 --- a/mcp/reclass/classes/cluster/virtual-mcp-ocata-odl/infra/config.yml +++ b/mcp/reclass/classes/cluster/virtual-mcp-ocata-odl/infra/config.yml @@ -27,7 +27,7 @@ parameters: @@ -43,12 +44,12 @@ index 328d6df..99e6152 100644 network: interface: - ens4: -+ enp2s1: ++ enp2s0: enabled: true type: eth proto: static diff --git a/mcp/reclass/classes/cluster/virtual-mcp-ocata-odl/opendaylight/control.yml b/mcp/reclass/classes/cluster/virtual-mcp-ocata-odl/opendaylight/control.yml -index 6c6640a..c775090 100644 +index 6c6640a..ec02e94 100644 --- a/mcp/reclass/classes/cluster/virtual-mcp-ocata-odl/opendaylight/control.yml +++ b/mcp/reclass/classes/cluster/virtual-mcp-ocata-odl/opendaylight/control.yml @@ -11,7 +11,7 @@ parameters: @@ -56,12 +57,12 @@ index 6c6640a..c775090 100644 network: interface: - ens4: -+ enp2s1: ++ enp2s0: enabled: true type: eth proto: static diff --git a/mcp/reclass/classes/cluster/virtual-mcp-ocata-odl/openstack/compute.yml b/mcp/reclass/classes/cluster/virtual-mcp-ocata-odl/openstack/compute.yml -index 97eda6c..98d2ea2 100644 +index 97eda6c..3f18ccd 100644 --- a/mcp/reclass/classes/cluster/virtual-mcp-ocata-odl/openstack/compute.yml +++ b/mcp/reclass/classes/cluster/virtual-mcp-ocata-odl/openstack/compute.yml @@ -10,9 +10,9 @@ classes: @@ -71,9 +72,9 @@ index 97eda6c..98d2ea2 100644 - primary_interface: ens4 - tenant_interface: ens5 - external_interface: ens6 -+ primary_interface: enp2s1 -+ tenant_interface: enp2s2 -+ external_interface: enp2s3 ++ primary_interface: enp2s0 ++ tenant_interface: enp3s0 ++ external_interface: enp4s0 interface_mtu: 9000 linux_system_codename: xenial loopback_device_size: 10 @@ -82,12 +83,12 @@ index 97eda6c..98d2ea2 100644 dhcp_int: enabled: true - name: ens3 -+ name: eth0 ++ name: enp1s0 proto: dhcp type: eth mtu: ${_param:interface_mtu} diff --git a/mcp/reclass/classes/cluster/virtual-mcp-ocata-odl/openstack/control.yml b/mcp/reclass/classes/cluster/virtual-mcp-ocata-odl/openstack/control.yml -index 17c22c5..5bd4a95 100644 +index 17c22c5..ca3a812 100644 --- a/mcp/reclass/classes/cluster/virtual-mcp-ocata-odl/openstack/control.yml +++ b/mcp/reclass/classes/cluster/virtual-mcp-ocata-odl/openstack/control.yml @@ -40,13 +40,13 @@ parameters: @@ -95,19 +96,19 @@ index 17c22c5..5bd4a95 100644 network: interface: - ens4: -+ enp2s1: ++ enp2s0: enabled: true type: eth proto: static address: ${_param:single_address} netmask: 255.255.255.0 - ens6: -+ enp2s3: ++ enp4s0: enabled: true type: eth proto: static diff --git a/mcp/reclass/classes/cluster/virtual-mcp-ocata-odl/openstack/gateway.yml b/mcp/reclass/classes/cluster/virtual-mcp-ocata-odl/openstack/gateway.yml -index 4ea51f3..b5709e7 100644 +index 4ea51f3..ee17dbd 100644 --- a/mcp/reclass/classes/cluster/virtual-mcp-ocata-odl/openstack/gateway.yml +++ b/mcp/reclass/classes/cluster/virtual-mcp-ocata-odl/openstack/gateway.yml @@ -6,9 +6,9 @@ classes: @@ -117,9 +118,9 @@ index 4ea51f3..b5709e7 100644 - primary_interface: ens4 - tenant_interface: ens5 - external_interface: ens6 -+ primary_interface: enp2s1 -+ tenant_interface: enp2s2 -+ external_interface: enp2s3 ++ primary_interface: enp2s0 ++ tenant_interface: enp3s0 ++ external_interface: enp4s0 interface_mtu: 9000 linux_system_codename: xenial neutron_agents: @@ -128,12 +129,12 @@ index 4ea51f3..b5709e7 100644 dhcp_int: enabled: true - name: ens3 -+ name: eth0 ++ name: enp1s0 proto: dhcp type: eth mtu: ${_param:interface_mtu} diff --git a/mcp/reclass/classes/cluster/virtual-mcp-ocata-ovs-dpdk/infra/config.yml b/mcp/reclass/classes/cluster/virtual-mcp-ocata-ovs-dpdk/infra/config.yml -index 864c71d..ae06d21 100644 +index 864c71d..aec6cde 100644 --- a/mcp/reclass/classes/cluster/virtual-mcp-ocata-ovs-dpdk/infra/config.yml +++ b/mcp/reclass/classes/cluster/virtual-mcp-ocata-ovs-dpdk/infra/config.yml @@ -26,7 +26,7 @@ parameters: @@ -141,7 +142,7 @@ index 864c71d..ae06d21 100644 network: interface: - ens4: -+ enp2s1: ++ enp2s0: enabled: true type: eth proto: static @@ -150,7 +151,7 @@ index 864c71d..ae06d21 100644 tenant_address: 10.1.0.105 external_address: 10.16.0.105 - dpdk0_name: ens5 -+ dpdk0_name: enp2s2 ++ dpdk0_name: enp3s0 dpdk0_pci: '"0000:00:05.0"' openstack_compute_node02: params: @@ -158,12 +159,12 @@ index 864c71d..ae06d21 100644 tenant_address: 10.1.0.106 external_address: 10.16.0.106 - dpdk0_name: ens5 -+ dpdk0_name: enp2s2 ++ dpdk0_name: enp3s0 dpdk0_pci: '"0000:00:05.0"' openstack_gateway_node01: params: diff --git a/mcp/reclass/classes/cluster/virtual-mcp-ocata-ovs-dpdk/openstack/compute.yml b/mcp/reclass/classes/cluster/virtual-mcp-ocata-ovs-dpdk/openstack/compute.yml -index c23ca7f..aeb6ba1 100644 +index c23ca7f..6d2f724 100644 --- a/mcp/reclass/classes/cluster/virtual-mcp-ocata-ovs-dpdk/openstack/compute.yml +++ b/mcp/reclass/classes/cluster/virtual-mcp-ocata-ovs-dpdk/openstack/compute.yml @@ -12,9 +12,9 @@ classes: @@ -173,9 +174,9 @@ index c23ca7f..aeb6ba1 100644 - primary_interface: ens4 - tenant_interface: ens5 - external_interface: ens6 -+ primary_interface: enp2s1 -+ tenant_interface: enp2s2 -+ external_interface: enp2s3 ++ primary_interface: enp2s0 ++ tenant_interface: enp3s0 ++ external_interface: enp4s0 interface_mtu: 9000 linux_system_codename: xenial loopback_device_size: 10 @@ -184,12 +185,12 @@ index c23ca7f..aeb6ba1 100644 dhcp_int: enabled: true - name: ens3 -+ name: eth0 ++ name: enp1s0 proto: dhcp type: eth mtu: ${_param:interface_mtu} diff --git a/mcp/reclass/classes/cluster/virtual-mcp-ocata-ovs-dpdk/openstack/control.yml b/mcp/reclass/classes/cluster/virtual-mcp-ocata-ovs-dpdk/openstack/control.yml -index b85f085..0c4b5b9 100644 +index b85f085..20eb8f5 100644 --- a/mcp/reclass/classes/cluster/virtual-mcp-ocata-ovs-dpdk/openstack/control.yml +++ b/mcp/reclass/classes/cluster/virtual-mcp-ocata-ovs-dpdk/openstack/control.yml @@ -40,13 +40,13 @@ parameters: @@ -197,19 +198,19 @@ index b85f085..0c4b5b9 100644 network: interface: - ens4: -+ enp2s1: ++ enp2s0: enabled: true type: eth proto: static address: ${_param:single_address} netmask: 255.255.255.0 - ens6: -+ enp2s3: ++ enp4s0: enabled: true type: eth proto: static diff --git a/mcp/reclass/classes/cluster/virtual-mcp-ocata-ovs-dpdk/openstack/gateway.yml b/mcp/reclass/classes/cluster/virtual-mcp-ocata-ovs-dpdk/openstack/gateway.yml -index e102c10..e1800de 100644 +index e102c10..f153a19 100644 --- a/mcp/reclass/classes/cluster/virtual-mcp-ocata-ovs-dpdk/openstack/gateway.yml +++ b/mcp/reclass/classes/cluster/virtual-mcp-ocata-ovs-dpdk/openstack/gateway.yml @@ -6,9 +6,9 @@ classes: @@ -219,9 +220,9 @@ index e102c10..e1800de 100644 - primary_interface: ens4 - tenant_interface: ens5 - external_interface: ens6 -+ primary_interface: enp2s1 -+ tenant_interface: enp2s2 -+ external_interface: enp2s3 ++ primary_interface: enp2s0 ++ tenant_interface: enp3s0 ++ external_interface: enp4s0 interface_mtu: 9000 linux_system_codename: xenial neutron: @@ -230,12 +231,12 @@ index e102c10..e1800de 100644 dhcp_int: enabled: true - name: ens3 -+ name: eth0 ++ name: enp1s0 proto: dhcp type: eth mtu: ${_param:interface_mtu} diff --git a/mcp/reclass/classes/cluster/virtual-mcp-ocata-ovs/infra/config.yml b/mcp/reclass/classes/cluster/virtual-mcp-ocata-ovs/infra/config.yml -index 97730b1..671f2f9 100644 +index 97730b1..8cb0992 100644 --- a/mcp/reclass/classes/cluster/virtual-mcp-ocata-ovs/infra/config.yml +++ b/mcp/reclass/classes/cluster/virtual-mcp-ocata-ovs/infra/config.yml @@ -26,7 +26,7 @@ parameters: @@ -243,12 +244,12 @@ index 97730b1..671f2f9 100644 network: interface: - ens4: -+ enp2s1: ++ enp2s0: enabled: true type: eth proto: static diff --git a/mcp/reclass/classes/cluster/virtual-mcp-ocata-ovs/openstack/compute.yml b/mcp/reclass/classes/cluster/virtual-mcp-ocata-ovs/openstack/compute.yml -index a86a7c6..78acfba 100644 +index a86a7c6..0469fa0 100644 --- a/mcp/reclass/classes/cluster/virtual-mcp-ocata-ovs/openstack/compute.yml +++ b/mcp/reclass/classes/cluster/virtual-mcp-ocata-ovs/openstack/compute.yml @@ -10,9 +10,9 @@ classes: @@ -258,9 +259,9 @@ index a86a7c6..78acfba 100644 - primary_interface: ens4 - tenant_interface: ens5 - external_interface: ens6 -+ primary_interface: enp2s1 -+ tenant_interface: enp2s2 -+ external_interface: enp2s3 ++ primary_interface: enp2s0 ++ tenant_interface: enp3s0 ++ external_interface: enp4s0 interface_mtu: 9000 linux_system_codename: xenial loopback_device_size: 10 @@ -269,12 +270,12 @@ index a86a7c6..78acfba 100644 dhcp_int: enabled: true - name: ens3 -+ name: eth0 ++ name: enp1s0 proto: dhcp type: eth mtu: ${_param:interface_mtu} diff --git a/mcp/reclass/classes/cluster/virtual-mcp-ocata-ovs/openstack/control.yml b/mcp/reclass/classes/cluster/virtual-mcp-ocata-ovs/openstack/control.yml -index ae103cd..e2ecc42 100644 +index ae103cd..350b618 100644 --- a/mcp/reclass/classes/cluster/virtual-mcp-ocata-ovs/openstack/control.yml +++ b/mcp/reclass/classes/cluster/virtual-mcp-ocata-ovs/openstack/control.yml @@ -40,13 +40,13 @@ parameters: @@ -282,19 +283,19 @@ index ae103cd..e2ecc42 100644 network: interface: - ens4: -+ enp2s1: ++ enp2s0: enabled: true type: eth proto: static address: ${_param:single_address} netmask: 255.255.255.0 - ens6: -+ enp2s3: ++ enp4s0: enabled: true type: eth proto: static diff --git a/mcp/reclass/classes/cluster/virtual-mcp-ocata-ovs/openstack/gateway.yml b/mcp/reclass/classes/cluster/virtual-mcp-ocata-ovs/openstack/gateway.yml -index 9257d86..0a2a622 100644 +index 9257d86..26b0e4c 100644 --- a/mcp/reclass/classes/cluster/virtual-mcp-ocata-ovs/openstack/gateway.yml +++ b/mcp/reclass/classes/cluster/virtual-mcp-ocata-ovs/openstack/gateway.yml @@ -6,9 +6,9 @@ classes: @@ -304,9 +305,9 @@ index 9257d86..0a2a622 100644 - primary_interface: ens4 - tenant_interface: ens5 - external_interface: ens6 -+ primary_interface: enp2s1 -+ tenant_interface: enp2s2 -+ external_interface: enp2s3 ++ primary_interface: enp2s0 ++ tenant_interface: enp3s0 ++ external_interface: enp4s0 interface_mtu: 9000 linux_system_codename: xenial neutron: @@ -315,7 +316,7 @@ index 9257d86..0a2a622 100644 dhcp_int: enabled: true - name: ens3 -+ name: eth0 ++ name: enp1s0 proto: dhcp type: eth mtu: ${_param:interface_mtu} -- 2.16.6