Public bug reported:

Nova doesn't care about PCI slot number where virtual NIC is attached.
As a result guests (recent Ubuntu for example) in which NIC name depends on PCI 
slot number rename interfaces in circumstances described below:

1. Launch VM using Ubuntu cloud image with 1 interface.

Name of the interface will be like "ens3"

$ lspci
00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II]
00:01.2 USB controller: Intel Corporation 82371SB PIIX3 USB [Natoma/Triton II] 
(rev 01)
00:01.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 03)
00:02.0 VGA compatible controller: Cirrus Logic GD 5446
00:03.0 Ethernet controller: Red Hat, Inc Virtio network device
00:04.0 SCSI storage controller: Red Hat, Inc Virtio block device
00:05.0 SCSI storage controller: Red Hat, Inc Virtio block device
00:06.0 Unclassified device [00ff]: Red Hat, Inc Virtio memory balloon

2. Attach more interfaces (nova interface-attach).

Attached interfaces will get names like "ens7"

$ lspci
00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II]
00:01.2 USB controller: Intel Corporation 82371SB PIIX3 USB [Natoma/Triton II] 
(rev 01)
00:01.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 03)
00:02.0 VGA compatible controller: Cirrus Logic GD 5446
00:03.0 Ethernet controller: Red Hat, Inc Virtio network device
00:04.0 SCSI storage controller: Red Hat, Inc Virtio block device
00:05.0 SCSI storage controller: Red Hat, Inc Virtio block device
00:06.0 Unclassified device [00ff]: Red Hat, Inc Virtio memory balloon
00:07.0 Ethernet controller: Red Hat, Inc Virtio network device

3. Do "nova reboot --hard" for this VM (this action regenerates XML in
Libvirt).

Interfaces "ens7" will be renamed to "ens4" since Libvirt XML for this
VM will be recreated.

lspci
00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II]
00:01.2 USB controller: Intel Corporation 82371SB PIIX3 USB [Natoma/Triton II] 
(rev 01)
00:01.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 03)
00:02.0 VGA compatible controller: Cirrus Logic GD 5446
00:03.0 Ethernet controller: Red Hat, Inc Virtio network device
00:04.0 Ethernet controller: Red Hat, Inc Virtio network device
00:05.0 SCSI storage controller: Red Hat, Inc Virtio block device
00:06.0 SCSI storage controller: Red Hat, Inc Virtio block device
00:07.0 Unclassified device [00ff]: Red Hat, Inc Virtio memory balloon


4. Compare names of interfaces after step 2 and step 3.

Same happens after interfaces detached:
For example if VM has ens3, ens4, ens5 then detach ens4 then ens5 will be 
renamed to renamed on hard reboot.

Ideally I would expect from Nova to assign PCI slot number to attached
devices and keep this assignment in XML in
/var/lib/nova/instances/<instanceUUID>/libvirt.xml

OpenStack version: Newton (newer versions also affected)
hypervisor: Libvirt+KVM
networking type: Neutron with OpenVSwitch

** Affects: nova
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Compute (nova).
https://bugs.launchpad.net/bugs/1821089

Title:
  assign PCI slot for VM's NIC persistently

Status in OpenStack Compute (nova):
  New

Bug description:
  Nova doesn't care about PCI slot number where virtual NIC is attached.
  As a result guests (recent Ubuntu for example) in which NIC name depends on 
PCI slot number rename interfaces in circumstances described below:

  1. Launch VM using Ubuntu cloud image with 1 interface.

  Name of the interface will be like "ens3"

  $ lspci
  00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
  00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
  00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II]
  00:01.2 USB controller: Intel Corporation 82371SB PIIX3 USB [Natoma/Triton 
II] (rev 01)
  00:01.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 03)
  00:02.0 VGA compatible controller: Cirrus Logic GD 5446
  00:03.0 Ethernet controller: Red Hat, Inc Virtio network device
  00:04.0 SCSI storage controller: Red Hat, Inc Virtio block device
  00:05.0 SCSI storage controller: Red Hat, Inc Virtio block device
  00:06.0 Unclassified device [00ff]: Red Hat, Inc Virtio memory balloon

  2. Attach more interfaces (nova interface-attach).

  Attached interfaces will get names like "ens7"

  $ lspci
  00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
  00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
  00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II]
  00:01.2 USB controller: Intel Corporation 82371SB PIIX3 USB [Natoma/Triton 
II] (rev 01)
  00:01.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 03)
  00:02.0 VGA compatible controller: Cirrus Logic GD 5446
  00:03.0 Ethernet controller: Red Hat, Inc Virtio network device
  00:04.0 SCSI storage controller: Red Hat, Inc Virtio block device
  00:05.0 SCSI storage controller: Red Hat, Inc Virtio block device
  00:06.0 Unclassified device [00ff]: Red Hat, Inc Virtio memory balloon
  00:07.0 Ethernet controller: Red Hat, Inc Virtio network device

  3. Do "nova reboot --hard" for this VM (this action regenerates XML in
  Libvirt).

  Interfaces "ens7" will be renamed to "ens4" since Libvirt XML for this
  VM will be recreated.

  lspci
  00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
  00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
  00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II]
  00:01.2 USB controller: Intel Corporation 82371SB PIIX3 USB [Natoma/Triton 
II] (rev 01)
  00:01.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 03)
  00:02.0 VGA compatible controller: Cirrus Logic GD 5446
  00:03.0 Ethernet controller: Red Hat, Inc Virtio network device
  00:04.0 Ethernet controller: Red Hat, Inc Virtio network device
  00:05.0 SCSI storage controller: Red Hat, Inc Virtio block device
  00:06.0 SCSI storage controller: Red Hat, Inc Virtio block device
  00:07.0 Unclassified device [00ff]: Red Hat, Inc Virtio memory balloon

  
  4. Compare names of interfaces after step 2 and step 3.

  Same happens after interfaces detached:
  For example if VM has ens3, ens4, ens5 then detach ens4 then ens5 will be 
renamed to renamed on hard reboot.

  Ideally I would expect from Nova to assign PCI slot number to attached
  devices and keep this assignment in XML in
  /var/lib/nova/instances/<instanceUUID>/libvirt.xml

  OpenStack version: Newton (newer versions also affected)
  hypervisor: Libvirt+KVM
  networking type: Neutron with OpenVSwitch

To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1821089/+subscriptions

-- 
Mailing list: https://launchpad.net/~yahoo-eng-team
Post to     : yahoo-eng-team@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yahoo-eng-team
More help   : https://help.launchpad.net/ListHelp

Reply via email to