Comment 6 for bug 1807505

Revision history for this message
Andres Rodriguez (andreserl) wrote : Re: [Bug 1807505] Re: [2.5rc2] serial of a device is not populated for virtio-blk devices

Also, I think it is fair to say that MAAS requires / uses the
ID_SERIAL_SHORT and that’s the one you should be setting on your virtual
machine.

On Sat, Dec 8, 2018 at 11:04 AM Andres Rodriguez <email address hidden>
wrote:

> Also, please test disk creating virtual
> Machines from MAAS as that is now our supported path for KVM in MAAS!
>
> On Sat, Dec 8, 2018 at 11:03 AM Andres Rodriguez <email address hidden>
> wrote:
>
>> The reason for this is that SERIAL is a made up name. It’s not the actual
>> serial of a device. The SERIAL_SHORT is the actual serial name.
>>
>> I think MAAS already creates serial for the devices it creates, I would
>> have to check, but I don’t think we can rely on using SERIAL because it’s
>> jot the actual serial of the disk, it is again, just a made up name
>> assigned from the software perspective.
>>
>>
>>
>> On Sat, Dec 8, 2018 at 10:35 AM Dmitrii Shcherbakov <
>> <email address hidden>> wrote:
>>
>>> ** Description changed:
>>>
>>> Created a domain with a number of different devices (virtio-blk,
>>> virtio-
>>> scsi, sata, NVMe) and added <serial/> tag to all of them for testing of
>>> lp:1735839. Querying udev, I can see that ID_SERIAL is set but MAAS
>>> does
>>> not use it to populate the "serial" field during commissioning.
>>> +
>>> + The reason is that only ID_SERIAL_SHORT is collected by MAAS, not
>>> + ID_SERIAL.
>>>
>>> https://paste.ubuntu.com/p/pM7Tx8Hgbw/
>>>
>>> <disk type='file' device='disk'>
>>> <driver name='qemu' type='qcow2'/>
>>> <source
>>> file='/mnt/sec1/libvirt-images/maas-vhost6-virtio0.qcow2'/>
>>> <backingStore/>
>>> <target dev='vda' bus='virtio'/>
>>> <serial>disk2</serial>
>>> <alias name='virtio-disk0'/>
>>> <address type='pci' domain='0x0000' bus='0x06' slot='0x00'
>>> function='0x0'/>
>>> </disk>
>>> <disk type='file' device='disk'>
>>> <driver name='qemu' type='qcow2'/>
>>> <source
>>> file='/mnt/sec1/libvirt-images/maas-vhost6-virtio1.qcow2'/>
>>> <backingStore/>
>>> <target dev='vdb' bus='virtio'/>
>>> <serial>disk3</serial>
>>> <alias name='virtio-disk1'/>
>>> <address type='pci' domain='0x0000' bus='0x07' slot='0x00'
>>> function='0x0'/>
>>> </disk>
>>>
>>> ubuntu@maas-vhost6:~$ udevadm info --query=property --name /dev/vda |
>>> grep ID_SERIAL
>>> ID_SERIAL=disk2
>>>
>>> ubuntu@maas-vhost6:~$ udevadm info --query=property --name /dev/vdb |
>>> grep ID_SERIAL
>>> ID_SERIAL=disk3
>>>
>>> Looking at the full output I can see that in the udev output there is
>>> no
>>> ID_SERIAL_SHORT for virtio devices:
>>>
>>> udevadm info --query=property --name /dev/vda
>>> DEVLINKS=/dev/disk/by-path/virtio-pci-0000:06:00.0
>>> /dev/disk/by-dname/vda /dev/disk/by-path/pci-0000:06:00.0
>>> /dev/disk/by-id/virtio-disk2
>>> DEVNAME=/dev/vda
>>> DEVPATH=/devices/pci0000:00/0000:00:02.5/0000:06:00.0/virtio5/block/vda
>>> DEVTYPE=disk
>>> ID_PATH=pci-0000:06:00.0
>>> ID_PATH_TAG=pci-0000_06_00_0
>>> ID_SERIAL=disk2
>>> MAJOR=252
>>> MINOR=0
>>> SUBSYSTEM=block
>>> TAGS=:systemd:
>>> USEC_INITIALIZED=1789047
>>>
>>> And ID_SERIAL_SHORT is something that MAAS collects in provisioning
>>> scripts for block devices:
>>>
>>>
>>> https://github.com/maas/maas/blob/2.5.0-rc2/src/provisioningserver/refresh/node_info_scripts.py#L513-L521
>>> # Grab the device path, serial number, and sata connection.
>>> UDEV_MAPPINGS = {
>>> "DEVNAME": "PATH",
>>> "DEVPATH": "DEVPATH",
>>> "ID_SERIAL_SHORT": "SERIAL",
>>>
>>> As a result the serial field is empty for virtio devices (noticed first
>>> by looking at the UI):
>>>
>>> https://paste.ubuntu.com/p/RzMk7r5ZGH/
>>>
>>> {
>>> "firmware_version": null,
>>> "name": "vda",
>>> "filesystem": null,
>>> "id_path": "/dev/vda",
>>> "block_size": 2048,
>>> "system_id": "xeqrrw",
>>> # ...
>>> "path": "/dev/disk/by-dname/vda",
>>> # ...
>>> "serial": "",
>>>
>>> ** Description changed:
>>>
>>> Created a domain with a number of different devices (virtio-blk,
>>> virtio-
>>> scsi, sata, NVMe) and added <serial/> tag to all of them for testing of
>>> lp:1735839. Querying udev, I can see that ID_SERIAL is set but MAAS
>>> does
>>> not use it to populate the "serial" field during commissioning.
>>>
>>> The reason is that only ID_SERIAL_SHORT is collected by MAAS, not
>>> - ID_SERIAL.
>>> + ID_SERIAL and it is not present for virtio-blk devices (even if it is
>>> + provided via QEMU).
>>>
>>> https://paste.ubuntu.com/p/pM7Tx8Hgbw/
>>>
>>> <disk type='file' device='disk'>
>>> <driver name='qemu' type='qcow2'/>
>>> <source
>>> file='/mnt/sec1/libvirt-images/maas-vhost6-virtio0.qcow2'/>
>>> <backingStore/>
>>> <target dev='vda' bus='virtio'/>
>>> <serial>disk2</serial>
>>> <alias name='virtio-disk0'/>
>>> <address type='pci' domain='0x0000' bus='0x06' slot='0x00'
>>> function='0x0'/>
>>> </disk>
>>> <disk type='file' device='disk'>
>>> <driver name='qemu' type='qcow2'/>
>>> <source
>>> file='/mnt/sec1/libvirt-images/maas-vhost6-virtio1.qcow2'/>
>>> <backingStore/>
>>> <target dev='vdb' bus='virtio'/>
>>> <serial>disk3</serial>
>>> <alias name='virtio-disk1'/>
>>> <address type='pci' domain='0x0000' bus='0x07' slot='0x00'
>>> function='0x0'/>
>>> </disk>
>>>
>>> ubuntu@maas-vhost6:~$ udevadm info --query=property --name /dev/vda |
>>> grep ID_SERIAL
>>> ID_SERIAL=disk2
>>>
>>> ubuntu@maas-vhost6:~$ udevadm info --query=property --name /dev/vdb |
>>> grep ID_SERIAL
>>> ID_SERIAL=disk3
>>>
>>> Looking at the full output I can see that in the udev output there is
>>> no
>>> ID_SERIAL_SHORT for virtio devices:
>>>
>>> udevadm info --query=property --name /dev/vda
>>> DEVLINKS=/dev/disk/by-path/virtio-pci-0000:06:00.0
>>> /dev/disk/by-dname/vda /dev/disk/by-path/pci-0000:06:00.0
>>> /dev/disk/by-id/virtio-disk2
>>> DEVNAME=/dev/vda
>>> DEVPATH=/devices/pci0000:00/0000:00:02.5/0000:06:00.0/virtio5/block/vda
>>> DEVTYPE=disk
>>> ID_PATH=pci-0000:06:00.0
>>> ID_PATH_TAG=pci-0000_06_00_0
>>> ID_SERIAL=disk2
>>> MAJOR=252
>>> MINOR=0
>>> SUBSYSTEM=block
>>> TAGS=:systemd:
>>> USEC_INITIALIZED=1789047
>>>
>>> And ID_SERIAL_SHORT is something that MAAS collects in provisioning
>>> scripts for block devices:
>>>
>>>
>>> https://github.com/maas/maas/blob/2.5.0-rc2/src/provisioningserver/refresh/node_info_scripts.py#L513-L521
>>> # Grab the device path, serial number, and sata connection.
>>> UDEV_MAPPINGS = {
>>> "DEVNAME": "PATH",
>>> "DEVPATH": "DEVPATH",
>>> "ID_SERIAL_SHORT": "SERIAL",
>>>
>>> As a result the serial field is empty for virtio devices (noticed first
>>> by looking at the UI):
>>>
>>> https://paste.ubuntu.com/p/RzMk7r5ZGH/
>>>
>>> {
>>> "firmware_version": null,
>>> "name": "vda",
>>> "filesystem": null,
>>> "id_path": "/dev/vda",
>>> "block_size": 2048,
>>> "system_id": "xeqrrw",
>>> # ...
>>> "path": "/dev/disk/by-dname/vda",
>>> # ...
>>> "serial": "",
>>>
>>> --
>>> You received this bug notification because you are subscribed to MAAS.
>>> https://bugs.launchpad.net/bugs/1807505
>>>
>>> Title:
>>> [2.5rc2] serial of a device is not populated for virtio-blk devices
>>>
>>> To manage notifications about this bug go to:
>>> https://bugs.launchpad.net/maas/+bug/1807505/+subscriptions
>>>
>>> Launchpad-Notification-Type: bug
>>> Launchpad-Bug: product=maas; status=New; importance=Undecided;
>>> assignee=None;
>>> Launchpad-Bug-Information-Type: Public
>>> Launchpad-Bug-Private: no
>>> Launchpad-Bug-Security-Vulnerability: no
>>> Launchpad-Bug-Commenters: dmitriis
>>> Launchpad-Bug-Reporter: Dmitrii Shcherbakov (dmitriis)
>>> Launchpad-Bug-Modifier: Dmitrii Shcherbakov (dmitriis)
>>> Launchpad-Message-Rationale: Subscriber (MAAS)
>>> Launchpad-Message-For: andreserl
>>>
>> --
>> Andres Rodriguez (RoAkSoAx)
>> Ubuntu Server Developer
>> MSc. Telecom & Networking
>> Systems Engineer
>>
> --
> Andres Rodriguez (RoAkSoAx)
> Ubuntu Server Developer
> MSc. Telecom & Networking
> Systems Engineer
>
--
Andres Rodriguez (RoAkSoAx)
Ubuntu Server Developer
MSc. Telecom & Networking
Systems Engineer