After a successful instance creation or scale out operation, the guest operating system does not list all the interfaces.
Some of the interfaces do not have the associated static IP addresses or MAC address assigned inside the Guest OS.
We can see all the virtual interfaces attached in the virtual machine configuration.
ip link show in the Guest OS shows that ethernet adapters does not have the expected naming convention and is displayed as eth<mac id>.
eth############ (MAC: ##:##:##:##:##:##)
Environment
VIO 7.0U3
TCP 3.0
Cause
When OpenStack boots a VM, nova generates a file called network_data.json. This file contains the instructions to add the desired network configuration such as MAC addresses, Interface Names, IPs, and Routes to the network interfaces.
When the Linux Guest OS boots, a service inside the VM such as cloud-init or a vendor-specific VNF script fetches the configuration from the network_data.json file and translates it into udev rules to name the interfaces and network scripts to apply the IPs.
The Linux kernel detects the new hardware added during the instance creation, but the operating systems network scripts do not name the ethernet interfaces correctly.
Hence, the linux udev device manager panics and appends the associated MAC addresses to the ethernet adapter as suffix.
Resolution
To confirm that this is not a openstack issue verify the network.json file used by openstack to create the virtual machine has the correct information.
Identify the config drive which is a virtual CD-ROM used by openStack to write the network_data.json during the VM boot using the below commands.
lsblk
sudo blkid | grep -i config-2
sudo find / - type f -name "network_data.json" 2>/dev/null
If the output lists all the ethernet interfaces or associated mac ids the failure is entirely on the Guest OS side, as the cloud-init service failed to mount and read the drive after the scale-out event.