Uploaded image for project: 'Red Hat OpenStack Services on OpenShift'
  1. Red Hat OpenStack Services on OpenShift
  2. OSPRH-22377

 _user_data_change is not changed is evaluating as false when expected to be true

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Normal Normal
    • None
    • None
    • GitOps
    • None
    • RHOS Upgrades 2025 Sprint 18, RHOS Upgrades 2025 Sprint 19
    • 2
    • Important

      Create infra can fail after a soft clean , on the '_user_data' assertion.

       

      changing the assert to the expected result resolves the issue : 

            - _user_data_change is skipped or _user_data_change is not changed

      Before: 

      https://gitlab.cee.redhat.com/pkomarov/examples/-/jobs/43687373

       
      TASK [config_drive : Assert we don't try to change an existing ISO that=['_meta_data_change is not changed', '_user_data_change is not changed', '_net_data_change is not changed'], msg=You're trying to edit an existing ISO. This isn't possible, since the ISO is usually attached to a virtual machine, and you cannot dynamically edit it.] ***Monday 24 November 2025 11:07:57 -0500 (0:00:00.196) 0:02:15.395 ******* task path: /home/zuul/src/github.com/openstack-k8s-operators/ci-framework/roles/config_drive/tasks/main.yml:81fatal: [localhost]: FAILED! => assertion: _user_data_change is not changed changed: false evaluated_to: false msg: You're trying to edit an existing ISO. This isn't possible, since the ISO is usually attached to a virtual machine, and you cannot dynamically edit it.
       
      

      After: 

      https://gitlab.cee.redhat.com/pkomarov/examples/-/jobs/43727490/raw

      TASK [config_drive : Assert we don't try to change an existing ISO that=['_meta_data_change is not changed', '_user_data_change is skipped or _user_data_change is not changed', '_net_data_change is not changed'], msg=You're trying to edit an existing ISO. This isn't possible, since the ISO is usually attached to a virtual machine, and you cannot dynamically edit it.] ***
      task path: /home/zuul/src/github.com/openstack-k8s-operators/ci-framework/roles/config_drive/tasks/main.yml:112
      Tuesday 25 November 2025  04:43:43 -0500 (0:00:00.046)       0:02:14.465 ****** 
      Tuesday 25 November 2025  04:43:43 -0500 (0:00:00.046)       0:02:14.465 ****** 
      ok: [localhost] => 
          changed: false
          msg: All assertions passed

       

       

      during research : 

      failure link:

      *https://gitlab.cee.redhat.com/pkomarov/examples/-/jobs/43700110*

      TASK [config_drive : Assert we don't try to change an existing ISO that=['_meta_data_change is not changed', '_user_data_change is not changed', '_net_data_change is not changed'], msg=You're trying to edit an existing ISO. This isn't possible, since the ISO is usually attached to a virtual machine, and you cannot dynamically edit it.] ***

      possible rca: 

       _user_data_change is not changed is evaluating as false when you expect it to be true.

       

      Looking at the "Generate user-data" task (lines 51-60), there's a when condition that prevents it from running if cifmw_config_drive_userdata is not defined or is empty. The cause of the assertion failure is: When the "Generate user-data" task is skipped (because the when condition evaluates to false), the registered variable _user_data_change will be set to a skipped state, not a "not changed" state. In Ansible, a skipped task is different from an unchanged task. The assertion at main.yml:87 checks:
      _user_data_change is not changed
      This will evaluate to false when:
      The task was skipped (variable exists but has skipped=true)
      The task actually changed something
      Possible root causes in your scenario:
      cifmw_config_drive_userdata is undefined or empty - The "Generate user-data" task gets skipped, so _user_data_change.skipped == true, which fails the is not changed test
      Similar issue with network-data - Line 88 checks _net_data_change, which can also be skipped if cifmw_config_drive_networkconfig is not defined or false
      Possible solution: The assertion should account for skipped tasks

       

      Was hit while doing :

      Goal: 

      • Following the documentation, fork the examples repository, create your gitlab runner, and create a custom pipeline to test the changes in the dataplane.

      An example of a custom pipeline is visible in my own fork here:
      https://gitlab.cee.redhat.com/cjeanner/rhos-gitops-examples/-/blob/keep-infra-pipeline/.gitlab-ci.yml?ref_type=heads#L55-75

      Acceptance Criteria:

      • A custom pipeline exists in a fork, and shows successful runs with unmodified dataplane

              pkomarov pini komarov
              pkomarov pini komarov
              rhos-dfg-upgrades
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated:
                Resolved: