← Back to team overview

ubuntu-public-cloud team mailing list archive

[Bug 2116077] Re: [SRU] azure-vm-utils updates

 

This bug was fixed in the package azure-vm-utils -
0.6.0-4~ubuntu0.24.04.1

---------------
azure-vm-utils (0.6.0-4~ubuntu0.24.04.1) noble; urgency=medium

  * Backport from devel, first time in Noble (LP: #2116077).

 -- Miriam España Acebal <miriam.espana@xxxxxxxxxxxxx>  Mon, 07 Jul 2025
17:52:08 +0200

** Changed in: azure-vm-utils (Ubuntu Noble)
       Status: Fix Committed => Fix Released

** Changed in: azure-vm-utils (Ubuntu Jammy)
       Status: Fix Committed => Fix Released

-- 
You received this bug notification because you are a member of Ubuntu
Public Cloud, which is subscribed to azure-vm-utils in Ubuntu.
https://bugs.launchpad.net/bugs/2116077

Title:
  [SRU] azure-vm-utils updates

Status in azure-vm-utils package in Ubuntu:
  In Progress
Status in azure-vm-utils source package in Jammy:
  Fix Released
Status in azure-vm-utils source package in Noble:
  Fix Released
Status in azure-vm-utils source package in Plucky:
  Fix Released

Bug description:
  [ Impact ]

    This release contains both bug-fixes and new
    features and we would like to make sure all of our supported customers have
    access to these improvements.

    Full release notes are available at:
      https://github.com/Azure/azure-vm-utils/releases/tag/v0.6.0

  [ Test Plan ]

    A) Ensure the selftests run at autopkgtest time, and pass.
    B) Check installation/upgrade/removal in Azure VM machine
    C) Manual testing in Azure VM machines (hardware dependent) composed of
       1. For any MANA, mlx4, or mlx5 SR-IOV devices with the IFF_SLAVE flag
          set:
          (a) The appropriate udev properties should be configured; and
          (b) systemd-networkd should report these devices as unmanaged

       2. Any network devices not matching the above criteria are left
          unaffected.
       3. Manually check that the command `DEVNAME=<nvme device name> azure-
          nvme-id --udev gives correct output for some device. Only Direct
          Disk v2 is fully supported for now.
       4. Check that expected /dev/disk/azure symlinks are created for the
          device.
       5. Use unmkintramfs to ensure that the udev rules are copied to the
          initrd correctly.

    Detailed commands can be found below. A) and B) are not detailed - it is
    understood that the reviewer or tester knows how to do it.

    Results of this test plan should be attached to the bug in comments per
    target series of the SRU for the SRU Team (Andreas Hasenack) to review.

    Requeriments:

    Some azure VM are required to test this package, as it contains
          specific configurations for Ubuntu on Azure. An Azure account and
          access to the Azure portal is needed.

    azure-cli package is needed for command line VM creation (
  https://packages.microsoft.com/repos/azure-cli/ ).

    Preparing the manual testing:

    ## 0.0 ## AZURE VM CREATION: selection of VM's family size depending
  on what disk and net driver we need to check:

   For Microsoft NVMe Direct Disk v2, MSFT NVMe Accelerator v1.0 and networking
   on mellanox v5 ->
       az vm create --resource-group miriam-azure-vm-utils --name nmve_direct --image "Canonical:ubuntu-25_10-daily:server:latest" --ssh-key-values ~/.ssh/id_rsa.pub --size Standard_E2ads_v6 --admin-username ubuntu

   For Microsoft NVMe Direct Disk ->
       az vm create --resource-group miriam-azure-vm-utils --name nmve_direct_noversion --image "Canonical:ubuntu-25_10-daily:server:latest" --ssh-key-values ~/.ssh/id_rsa.pub --size Standard_D2alds_v6 --admin-username ubuntu

   For Net mana driver ->
       az vm create --resource-group miriam-azure-vm-utils --name nmvemana --image "Canonical:ubuntu-25_10-daily:server:latest" --ssh-key-values ~/.ssh/id_rsa.pub --size Standard_D2ls_v6 --admin-username ubuntu

    Note: Earlier v2/v3/v4 sizes with AN enabled is most likely to
  result in mlx4, but there's no guarantee. Therefore, we may never have
  the opportunity to test mlx4 for sure.

  Please, log in every machine with ssh ubuntu@<vm_ip> to perform the
  next steps.

         ## 0.1 ## CHECK DEVICES IN ORIGINAL STATE

         # DISKS

         $ nvme list | grep -e "Microsoft NVMe Direct Disk v2" -e "MSFT
  NVMe Accelerator v1.0" -e "Microsoft NVMe Direct Disk"

         # NETWORK

         To record differences before and after installing the package plus
         rebooting, the following command

         $ networkctl status -a -l | grep -v Jul | tee
  net_{before,after}.txt

         was used. Please, change the month in the second part of the command to
         fit the actual month the manual testing is being done. Note that actual
         differences are occasioned by the rebooting of systemd-networkd , not by
         the deployment of the azure-vm-utils package. However, we include the
         step for a sanity check.

         To check driver presence (mana, mlx4, mlx5)

         $ networkctl status $(ip a | grep SLAVE | cut -d':' -f2 |
  xargs) | grep -i driver | grep -e mana -e mlx

         To check udev rules (at this stage, only showing the driver):

         $ udevadm info /sys/class/net/$(ip a | grep SLAVE | cut -d':'
  -f2 | xargs) | grep -e AZURE_UNMANAGED_SRIOV -e ID_NET_MANAGED_BY -e
  ID_NET_DRIVER

         ## 0.2 ## INSTALLING PACKAGE

         $ sudo apt install azure-vm-utils

         checking all went well:

         $ dpkg -l azure-vm-utils | grep ii

         ## 0. 3 ## ENABLING SYSTEMD-NETWORKD IN DEBUG MODE

         $ sudo mkdir -p /etc/systemd/system/systemd-networkd.service.d/

         $ sudo cat > /etc/systemd/system/systemd-networkd.service.d/10-debug.conf <<EOF
  [Service]
  Environment=SYSTEMD_LOG_LEVEL=debug
  EOF

         ## 0. 4 ## REBOOTING

         $ sudo shutdown -r now

    Performing manual testing C):

        ## 1.a ## UDEV CONFIGURED

        $ udevadm info /sys/class/net/$(ip a | grep SLAVE | cut -d':'
  -f2 | xargs) | grep -e AZURE_UNMANAGED_SRIOV -e ID_NET_MANAGED_BY -e
  ID_NET_DRIVER

        ## 1.b ## NETWORKD-SYSTEMD PROCESS THE FILE FOR SRI-OV DEVICES
  AND RETURNS THEM UNMANAGED

        $ sudo journalctl -b -u systemd-networkd | grep azure

        $ sudo journalctl -b -u systemd-networkd | grep $(ip a | grep
  SLAVE | cut -d':' -f2 | xargs) | grep -e SLAVE -e unmanaged

        ## 2 ## NO OTHER NETWORKING ITEMS AFFECTED

        $ networkctl status -a -l | grep -v Jul | tee net_after.txt

        $ diff net_before.txt net_after.txt

        The output should be something similar to:

          17c17
    <                    Link File: /usr/lib/systemd/network/99-default.link
     ---
     >                    Link File: /run/systemd/network/10-netplan-eth0.link
     24d23
     <            Alternative Names: enx002248814532
     52a52
     >                               enx002248814532

        ## 3 ## azure-nvme UTIL WORKS FOR NMVE DISK V2

        $ sudo DEVNAME=$(nvme list | grep v2 | cut -d' ' -f1) azure-
  nvme-id --udev

        ## 4 ## SYMLINKS ARE CREATED FOR THE NVME DEVICES

        $ udevadm info $(nvme list | grep "MSFT NVMe Accelerator v1.0" |
  cut -d' ' -f1) | grep -i -e model -e azure

        $ udevadm info $(nvme list | grep "Microsoft NVMe Direct Disk" |
  cut -d' ' -f1) | grep -i -e model -e azure

        $ udevadm info $(nvme list | grep "Microsoft NVMe Direct Disk
  v2" | cut -d' ' -f1) | grep -i -e model -e azure

        ## 5 ## UDEV RULES ARE COPIED TO INITRD

        $ unmkinitramfs /boot/initrd.img-$(uname -r) initramfs/

        $ ls initramfs/lib/udev/rules.d/*0*azure* | wc  -l  # it should
  return only 2

  [ Where problems could occur ]

   Although azure-vm-utils is a package to be used intentionally for Ubuntu on
   Azure, this package could be installed on all Ubuntu systems by users, which
   should remain unaffected by any changes made to this package.

   Sometimes this extends beyond what we might consider supportable
   configurations; we try to stretch ourselves so that no user who apparently
   has an otherwise functional system is affected by this package or changes
   to it.

   This mainly includes regressions caused by the introduction of new udev rules
   that conflict with the existing mapping, specially netplan configurations
   generated by cloud-init.

   The test plan above is intended to foresee this situation and prevent any
   risk. In addition, due to hardware constraints and awareness of the above,
   upstream performs a test with a custom netplan configuration that enables DHCP
   on all Ethernet devices and validates that the interface is unmanaged.

  [ Other Info ]

   The QA process consists of three stages:  pre-SRU tests (the [Test Plan]
   section), SRU tests and SRU Verification.

   Output reports per target series of the [Test Plan] should be attached
   to this bug before them can be reviewed by the SRU team.

   SRU Test Cases
   ..............

   The following will be executed for representative combinations of supported
   architectures, image types and machine sizes:

      1.) Build new cloud image with -proposed package
      2.) Boot machine from image
      3.) Run all CPC image tests against machine

   SRU Verification
   ................

   When a new version of azure-vm-utils is uploaded to -proposed, there will be
   validate actions performed by the CPC azure squad and others from Microsoft
   maintainers. Therefore, the following will be done:

   - By The CPC Azure squad team

     -  the CPC azure squad team will write new automated tests to cover new
        testable functionality (if any) in the new package
     -  the automated testing that the CPC team normally runs against Azure
        images before they are published will be run against the -proposed
        package.
     -  The new package candidate version is built in devel-proposed and tested
        on the target suite. This will involve one or both of:
        -  Installing the devel-proposed packages on an Azure VM, manually
           restoring the VM to a first boot state and rebooting it,
        -  Generating a fresh image with the devel-proposed package version
           preinstalled and testing that directly
     -  Once the manual packaging tests pass successfully and the package
        requires no further changes, it will be marked as such on the tracking
        bug. On the development release, this is done by removing the
        *block-proposed* tag.

   - By the Microsoft team maintaining the Azure VM Utils
  project(upstream QA)

      -  that the new package addresses the issues it is expected to address, and
      -  that the new package passes their internal image validation

   **If appropriate due to the nature of the changes (functional embargo
  on publication), the steps above may be done in a private PPA prior to
  landing in devel-proposed.**

  The CPC team will be responsible for attaching a summary of testing to the bug.
  CPC team members will not mark ‘verification-done’ until this has happened.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/azure-vm-utils/+bug/2116077/+subscriptions



References