operator-sdk-ansible-util icon indicating copy to clipboard operation
operator-sdk-ansible-util copied to clipboard

AttributeError: 'NoneType' object has no attribute 'items' when trying to delete a status field using "k8s_status"

Open efussi opened this issue 1 year ago • 0 comments
trafficstars

When trying to delete the old_stuff field from this CR status:

  status:
     old_stuff:
       used: no_longer
     progress: 0%

using this task

- name: Update CR status
  operator_sdk.util.k8s_status:
    api_version: acme.com/v1beta1
    kind: Acme
    name: "{{ ansible_operator_meta.name }}"
    namespace: "{{ ansible_operator_meta.namespace }}"
    status: "{{ cr_status }}"
    replace_lists: true
  vars:
    cr_status:
      old_stuff: null
      progress: 5%

I am getting this error:

An exception occurred during task execution. To see the full traceback, use -vvv. The error was: AttributeError: 'NoneType' object has no attribute 'items'                                                         
fatal: [localhost]: FAILED! => changed=false                                                                                                                                                                        
  attempts: 3                                                                                                                                                                                                       
  module_stderr: |-                                                                                                                                                                                                 
    Traceback (most recent call last):                                                                                                                                                                              
      File "/home/vagrant/.ansible/tmp/ansible-tmp-1730324118.6925457-2890578-67628908416081/AnsiballZ_k8s_status.py", line 107, in <module>                                                                        
        _ansiballz_main()                                                                                                                                                                                           
      File "/home/vagrant/.ansible/tmp/ansible-tmp-1730324118.6925457-2890578-67628908416081/AnsiballZ_k8s_status.py", line 99, in _ansiballz_main                                                                  
        invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)                                                                                                                                                      
      File "/home/vagrant/.ansible/tmp/ansible-tmp-1730324118.6925457-2890578-67628908416081/AnsiballZ_k8s_status.py", line 47, in invoke_module                                                                    
        runpy.run_module(mod_name='ansible_collections.operator_sdk.util.plugins.modules.k8s_status', init_globals=dict(_module_fqn='ansible_collections.operator_sdk.util.plugins.modules.k8s_status', _modlib_path
=modlib_path),                                                                                                                                                                                                      
      File "<frozen runpy>", line 226, in run_module
      File "<frozen runpy>", line 98, in _run_module_code
      File "<frozen runpy>", line 88, in _run_code
      File "/tmp/ansible_operator_sdk.util.k8s_status_payload_qu2kn4fk/ansible_operator_sdk.util.k8s_status_payload.zip/ansible_collections/operator_sdk/util/plugins/modules/k8s_status.py", line 451, in <module>
      File "/tmp/ansible_operator_sdk.util.k8s_status_payload_qu2kn4fk/ansible_operator_sdk.util.k8s_status_payload.zip/ansible_collections/operator_sdk/util/plugins/modules/k8s_status.py", line 214, in main
      File "/tmp/ansible_operator_sdk.util.k8s_status_payload_qu2kn4fk/ansible_operator_sdk.util.k8s_status_payload.zip/ansible_collections/operator_sdk/util/plugins/modules/k8s_status.py", line 339, in execute_m
odule
      File "/tmp/ansible_operator_sdk.util.k8s_status_payload_qu2kn4fk/ansible_operator_sdk.util.k8s_status_payload.zip/ansible_collections/operator_sdk/util/plugins/modules/k8s_status.py", line 368, in patch
      File "/tmp/ansible_operator_sdk.util.k8s_status_payload_qu2kn4fk/ansible_operator_sdk.util.k8s_status_payload.zip/ansible_collections/operator_sdk/util/plugins/modules/k8s_status.py", line 439, in object_co
ntains
      File "/tmp/ansible_operator_sdk.util.k8s_status_payload_qu2kn4fk/ansible_operator_sdk.util.k8s_status_payload.zip/ansible_collections/operator_sdk/util/plugins/modules/k8s_status.py", line 417, in dict_is_s
ubset
      File "/tmp/ansible_operator_sdk.util.k8s_status_payload_qu2kn4fk/ansible_operator_sdk.util.k8s_status_payload.zip/ansible_collections/operator_sdk/util/plugins/modules/k8s_status.py", line 418, in <genexpr>
      File "/tmp/ansible_operator_sdk.util.k8s_status_payload_qu2kn4fk/ansible_operator_sdk.util.k8s_status_payload.zip/ansible_collections/operator_sdk/util/plugins/modules/k8s_status.py", line 423, in dict_is_s
ubset
    AttributeError: 'NoneType' object has no attribute 'items'

This is because subset is None here in this scenario.

efussi avatar Oct 31 '24 09:10 efussi