-
Bug
-
Resolution: Unresolved
-
Undefined
-
rhel-10.2
-
rhel-system-roles
-
None
-
Dev ack
-
False
-
False
-
-
Yes
-
Red Hat Enterprise Linux
-
None
-
None
-
None
-
Bug Fix
-
-
Proposed
-
Unspecified
-
Unspecified
-
Unspecified
-
None
What were you trying to do that didn't work?
What is the impact of this issue to you?
Please provide the package NVR for which the bug is seen:
How reproducible is this bug?:
Steps to reproduce
Expected results
Actual results
TASK [linux-system-roles.storage : Set storage_cryptsetup_services] **********************************************************************
task path: /usr/share/ansible/roles/rhel-system-roles.storage/tasks/main-blivet.yml:65
ok: [localhost] => {"ansible_facts": {"storage_cryptsetup_services": []}, "changed": false}TASK [linux-system-roles.storage : Mask the systemd cryptsetup services] *****************************************************************
task path: /usr/share/ansible/roles/rhel-system-roles.storage/tasks/main-blivet.yml:79
skipping: [localhost] => {"changed": false, "skipped_reason": "No items in the list"}TASK [linux-system-roles.storage : Manage the pools and volumes to match the specified state] ********************************************
task path: /usr/share/ansible/roles/rhel-system-roles.storage/tasks/main-blivet.yml:85
An exception occurred during task execution. To see the full traceback, use -vvv. The error was: IndexError: list index out of range
fatal: [localhost]: FAILED! => {"changed": false, "module_stderr": "Traceback (most recent call last):\n File \"/root/.ansible/tmp/ansible-tmp-1766330907.3265982-1428634-224689291370477/AnsiballZ_blivet.py\", line 107, in <module>\n _ansiballz_main()\n File \"/root/.ansible/tmp/ansible-tmp-1766330907.3265982-1428634-224689291370477/AnsiballZ_blivet.py\", line 99, in _ansiballz_main\n invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\n File \"/root/.ansible/tmp/ansible-tmp-1766330907.3265982-1428634-224689291370477/AnsiballZ_blivet.py\", line 47, in invoke_module\n runpy.run_module(mod_name='ansible.modules.blivet', init_globals=dict(_module_fqn='ansible.modules.blivet', _modlib_path=modlib_path),\n File \"<frozen runpy>\", line 226, in run_module\n File \"<frozen runpy>\", line 98, in _run_module_code\n File \"<frozen runpy>\", line 88, in _run_code\n File \"/tmp/ansible_blivet_payload_v20xfyl0/ansible_blivet_payload.zip/ansible/modules/blivet.py\", line 2645, in <module>\n File \"/tmp/ansible_blivet_payload_v20xfyl0/ansible_blivet_payload.zip/ansible/modules/blivet.py\", line 2641, in main\n File \"/tmp/ansible_blivet_payload_v20xfyl0/ansible_blivet_payload.zip/ansible/modules/blivet.py\", line 2602, in run_module\n File \"/tmp/ansible_blivet_payload_v20xfyl0/ansible_blivet_payload.zip/ansible/modules/blivet.py\", line 2157, in manage_volume\n File \"/tmp/ansible_blivet_payload_v20xfyl0/ansible_blivet_payload.zip/ansible/modules/blivet.py\", line 903, in manage\n File \"/tmp/ansible_blivet_payload_v20xfyl0/ansible_blivet_payload.zip/ansible/modules/blivet.py\", line 965, in _look_up_device\n File \"/tmp/ansible_blivet_payload_v20xfyl0/ansible_blivet_payload.zip/ansible/modules/blivet.py\", line 652, in _look_up_device\n File \"/tmp/ansible_blivet_payload_v20xfyl0/ansible_blivet_payload.zip/ansible/modules/blivet.py\", line 943, in _get_device_id\nIndexError: list index out of range\n", "module_stdout": "", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 1}TASK [linux-system-roles.storage : Failed message] ***************************************************************************************
task path: /usr/share/ansible/roles/rhel-system-roles.storage/tasks/main-blivet.yml:126
fatal: [localhost]: FAILED! => {"changed": false, "msg": {"changed": false, "exception": "Traceback (most recent call last):\n File \"/root/.ansible/tmp/ansible-tmp-1766330907.3265982-1428634-224689291370477/AnsiballZ_blivet.py\", line 107, in <module>\n _ansiballz_main()\n File \"/root/.ansible/tmp/ansible-tmp-1766330907.3265982-1428634-224689291370477/AnsiballZ_blivet.py\", line 99, in _ansiballz_main\n invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\n File \"/root/.ansible/tmp/ansible-tmp-1766330907.3265982-1428634-224689291370477/AnsiballZ_blivet.py\", line 47, in invoke_module\n runpy.run_module(mod_name='ansible.modules.blivet', init_globals=dict(_module_fqn='ansible.modules.blivet', _modlib_path=modlib_path),\n File \"<frozen runpy>\", line 226, in run_module\n File \"<frozen runpy>\", line 98, in _run_module_code\n File \"<frozen runpy>\", line 88, in _run_code\n File \"/tmp/ansible_blivet_payload_v20xfyl0/ansible_blivet_payload.zip/ansible/modules/blivet.py\", line 2645, in <module>\n File \"/tmp/ansible_blivet_payload_v20xfyl0/ansible_blivet_payload.zip/ansible/modules/blivet.py\", line 2641, in main\n File \"/tmp/ansible_blivet_payload_v20xfyl0/ansible_blivet_payload.zip/ansible/modules/blivet.py\", line 2602, in run_module\n File \"/tmp/ansible_blivet_payload_v20xfyl0/ansible_blivet_payload.zip/ansible/modules/blivet.py\", line 2157, in manage_volume\n File \"/tmp/ansible_blivet_payload_v20xfyl0/ansible_blivet_payload.zip/ansible/modules/blivet.py\", line 903, in manage\n File \"/tmp/ansible_blivet_payload_v20xfyl0/ansible_blivet_payload.zip/ansible/modules/blivet.py\", line 965, in _look_up_device\n File \"/tmp/ansible_blivet_payload_v20xfyl0/ansible_blivet_payload.zip/ansible/modules/blivet.py\", line 652, in _look_up_device\n File \"/tmp/ansible_blivet_payload_v20xfyl0/ansible_blivet_payload.zip/ansible/modules/blivet.py\", line 943, in _get_device_id\nIndexError: list index out of range\n", "failed": true, "module_stderr": "Traceback (most recent call last):\n File \"/root/.ansible/tmp/ansible-tmp-1766330907.3265982-1428634-224689291370477/AnsiballZ_blivet.py\", line 107, in <module>\n _ansiballz_main()\n File \"/root/.ansible/tmp/ansible-tmp-1766330907.3265982-1428634-224689291370477/AnsiballZ_blivet.py\", line 99, in _ansiballz_main\n invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\n File \"/root/.ansible/tmp/ansible-tmp-1766330907.3265982-1428634-224689291370477/AnsiballZ_blivet.py\", line 47, in invoke_module\n runpy.run_module(mod_name='ansible.modules.blivet', init_globals=dict(_module_fqn='ansible.modules.blivet', _modlib_path=modlib_path),\n File \"<frozen runpy>\", line 226, in run_module\n File \"<frozen runpy>\", line 98, in _run_module_code\n File \"<frozen runpy>\", line 88, in _run_code\n File \"/tmp/ansible_blivet_payload_v20xfyl0/ansible_blivet_payload.zip/ansible/modules/blivet.py\", line 2645, in <module>\n File \"/tmp/ansible_blivet_payload_v20xfyl0/ansible_blivet_payload.zip/ansible/modules/blivet.py\", line 2641, in main\n File \"/tmp/ansible_blivet_payload_v20xfyl0/ansible_blivet_payload.zip/ansible/modules/blivet.py\", line 2602, in run_module\n File \"/tmp/ansible_blivet_payload_v20xfyl0/ansible_blivet_payload.zip/ansible/modules/blivet.py\", line 2157, in manage_volume\n File \"/tmp/ansible_blivet_payload_v20xfyl0/ansible_blivet_payload.zip/ansible/modules/blivet.py\", line 903, in manage\n File \"/tmp/ansible_blivet_payload_v20xfyl0/ansible_blivet_payload.zip/ansible/modules/blivet.py\", line 965, in _look_up_device\n File \"/tmp/ansible_blivet_payload_v20xfyl0/ansible_blivet_payload.zip/ansible/modules/blivet.py\", line 652, in _look_up_device\n File \"/tmp/ansible_blivet_payload_v20xfyl0/ansible_blivet_payload.zip/ansible/modules/blivet.py\", line 943, in _get_device_id\nIndexError: list index out of range\n", "module_stdout": "", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 1}}TASK [linux-system-roles.storage : Unmask the systemd cryptsetup services] ***************************************************************
task path: /usr/share/ansible/roles/rhel-system-roles.storage/tasks/main-blivet.yml:130
skipping: [localhost] => {"changed": false, "skipped_reason": "No items in the list"}PLAY RECAP *******************************************************************************************************************************
localhost : ok=17 changed=0 unreachable=0 failed=1 skipped=5 rescued=1 ignored=0
ansible-playbook -i /home/host reproduce_indexerror_bug.yml -vv
rhel-system-roles-1.110.1-1.1.el10.noarch
[root@storageqe-109 tests]# cat reproduce_indexerror_bug.yml --- # Playbook to reproduce IndexError bug in blivet module # Bug: library/blivet.py line 943 - accessing disks[0] without checking if list is empty # # Expected behavior: Should raise BlivetAnsibleError("no disks specified for volume 'test_vol'") # Actual behavior: Raises IndexError: list index out of range (unhandled exception)- name: Reproduce IndexError Bug in Blivet Module hosts: localhost become: true gather_facts: false tasks: - name: Display bug information debug: msg: - "==========================================" - "BUG REPRODUCTION: IndexError in blivet.py" - "==========================================" - "Location: library/blivet.py:943 in _get_device_id()" - "Issue: Accessing self._volume['disks'][0] without checking if list is empty" - "" - "Expected: BlivetAnsibleError with clear message" - "Actual: IndexError exception (poor user experience)" - "" - "This will fail with IndexError instead of a helpful error message..." - name: Attempt to create disk volume without specifying disks parameter include_role: name: linux-system-roles.storage vars: storage_safe_mode: false storage_volumes: - name: test_vol_no_disks type: disk # BUG: Missing 'disks' parameter causes IndexError instead of clear error fs_type: ext4 mount_point: /mnt/test_bug ignore_errors: true register: bug_result - name: Show the error that occurred debug: msg: - "Error occurred: {{ bug_result.msg | default('No error info') }}" - "" - "Notice: This is an IndexError, not a helpful BlivetAnsibleError!" - "The code should check if disks list is empty before accessing disks[0]" when: bug_result is failed - name: Expected fix location debug: msg: - "==========================================" - "FIX REQUIRED IN: library/blivet.py" - "==========================================" - "" - "Current code (line 989-996):" - " def _look_up_device(self):" - " super(BlivetDiskVolume, self)._look_up_device()" - " if not self._get_device_id():" - " raise BlivetAnsibleError(...)" - "" - "Problem: _get_device_id() crashes before we can check it!" - "" - "Current code (line 966-967):" - " def _get_device_id(self):" - " return self._volume['disks'][0] # <-- CRASHES HERE" - "" - "Suggested fix:" - " def _get_device_id(self):" - " if not self._volume.get('disks'):" - " return None" - " return self._volume['disks'][0]" [root@storageqe-109 tests]#
- links to