Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

KeyError: external_interface_info in nsxt_policy_tier0.py #501

Open
notti1205 opened this issue May 1, 2024 · 1 comment
Open

KeyError: external_interface_info in nsxt_policy_tier0.py #501

notti1205 opened this issue May 1, 2024 · 1 comment
Labels
bug Something isn't working

Comments

@notti1205
Copy link

Describe the bug

Error Message

The full traceback is:
Traceback (most recent call last):
  File "/home/nochi/.ansible/tmp/ansible-tmp-1714569466.6996984-267554-173320257008398/AnsiballZ_nsxt_policy_tier0.py", line 107, in <module>
    _ansiballz_main()
  File "/home/nochi/.ansible/tmp/ansible-tmp-1714569466.6996984-267554-173320257008398/AnsiballZ_nsxt_policy_tier0.py", line 99, in _ansiballz_main
    invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)
  File "/home/nochi/.ansible/tmp/ansible-tmp-1714569466.6996984-267554-173320257008398/AnsiballZ_nsxt_policy_tier0.py", line 47, in invoke_module
    runpy.run_module(mod_name='ansible_collections.vmware.ansible_for_nsxt.plugins.modules.nsxt_policy_tier0', init_globals=dict(_module_fqn='ansible_collections.vmware.ansible_for_nsxt.plugins.modules.nsxt_policy_tier0', _modlib_path=modlib_path),
  File "/usr/lib/python3.10/runpy.py", line 224, in run_module
    return _run_module_code(code, init_globals, run_name, mod_spec)
  File "/usr/lib/python3.10/runpy.py", line 96, in _run_module_code
    _run_code(code, mod_globals, init_globals,
  File "/usr/lib/python3.10/runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "/tmp/ansible_vmware.ansible_for_nsxt.nsxt_policy_tier0_payload_u4fkssnw/ansible_vmware.ansible_for_nsxt.nsxt_policy_tier0_payload.zip/ansible_collections/vmware/ansible_for_nsxt/plugins/modules/nsxt_policy_tier0.py", line 2177, in <module>
  File "/tmp/ansible_vmware.ansible_for_nsxt.nsxt_policy_tier0_payload_u4fkssnw/ansible_vmware.ansible_for_nsxt.nsxt_policy_tier0_payload.zip/ansible_collections/vmware/ansible_for_nsxt/plugins/module_utils/nsxt_base_resource.py", line 141, in realize
  File "/tmp/ansible_vmware.ansible_for_nsxt.nsxt_policy_tier0_payload_u4fkssnw/ansible_vmware.ansible_for_nsxt.nsxt_policy_tier0_payload.zip/ansible_collections/vmware/ansible_for_nsxt/plugins/module_utils/nsxt_base_resource.py", line 765, in _achieve_state
  File "/tmp/ansible_vmware.ansible_for_nsxt.nsxt_policy_tier0_payload_u4fkssnw/ansible_vmware.ansible_for_nsxt.nsxt_policy_tier0_payload.zip/ansible_collections/vmware/ansible_for_nsxt/plugins/module_utils/nsxt_base_resource.py", line 246, in achieve_subresource_state
  File "/tmp/ansible_vmware.ansible_for_nsxt.nsxt_policy_tier0_payload_u4fkssnw/ansible_vmware.ansible_for_nsxt.nsxt_policy_tier0_payload.zip/ansible_collections/vmware/ansible_for_nsxt/plugins/module_utils/nsxt_base_resource.py", line 141, in realize
  File "/tmp/ansible_vmware.ansible_for_nsxt.nsxt_policy_tier0_payload_u4fkssnw/ansible_vmware.ansible_for_nsxt.nsxt_policy_tier0_payload.zip/ansible_collections/vmware/ansible_for_nsxt/plugins/module_utils/nsxt_base_resource.py", line 758, in _achieve_state
  File "/tmp/ansible_vmware.ansible_for_nsxt.nsxt_policy_tier0_payload_u4fkssnw/ansible_vmware.ansible_for_nsxt.nsxt_policy_tier0_payload.zip/ansible_collections/vmware/ansible_for_nsxt/plugins/module_utils/nsxt_base_resource.py", line 564, in _achieve_present_state
  File "/tmp/ansible_vmware.ansible_for_nsxt.nsxt_policy_tier0_payload_u4fkssnw/ansible_vmware.ansible_for_nsxt.nsxt_policy_tier0_payload.zip/ansible_collections/vmware/ansible_for_nsxt/plugins/modules/nsxt_policy_tier0.py", line 1806, in update_resource_params
KeyError: 'external_interface_info'
fatal: [inet-ot0-ext120101 -> localhost]: FAILED! => {
    "changed": false,
    "module_stderr": "Traceback (most recent call last):\n  File \"/home/nochi/.ansible/tmp/ansible-tmp-1714569466.6996984-267554-173320257008398/AnsiballZ_nsxt_policy_tier0.py\", line 107, in <module>\n    _ansiballz_main()\n  File \"/home/nochi/.ansible/tmp/ansible-tmp-1714569466.6996984-267554-173320257008398/AnsiballZ_nsxt_policy_tier0.py\", line 99, in _ansiballz_main\n    invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\n  File \"/home/nochi/.ansible/tmp/ansible-tmp-1714569466.6996984-267554-173320257008398/AnsiballZ_nsxt_policy_tier0.py\", line 47, in invoke_module\n    runpy.run_module(mod_name='ansible_collections.vmware.ansible_for_nsxt.plugins.modules.nsxt_policy_tier0', init_globals=dict(_module_fqn='ansible_collections.vmware.ansible_for_nsxt.plugins.modules.nsxt_policy_tier0', _modlib_path=modlib_path),\n  File \"/usr/lib/python3.10/runpy.py\", line 224, in run_module\n    return _run_module_code(code, init_globals, run_name, mod_spec)\n  File \"/usr/lib/python3.10/runpy.py\", line 96, in _run_module_code\n    _run_code(code, mod_globals, init_globals,\n  File \"/usr/lib/python3.10/runpy.py\", line 86, in _run_code\n    exec(code, run_globals)\n  File \"/tmp/ansible_vmware.ansible_for_nsxt.nsxt_policy_tier0_payload_u4fkssnw/ansible_vmware.ansible_for_nsxt.nsxt_policy_tier0_payload.zip/ansible_collections/vmware/ansible_for_nsxt/plugins/modules/nsxt_policy_tier0.py\", line 2177, in <module>\n  File \"/tmp/ansible_vmware.ansible_for_nsxt.nsxt_policy_tier0_payload_u4fkssnw/ansible_vmware.ansible_for_nsxt.nsxt_policy_tier0_payload.zip/ansible_collections/vmware/ansible_for_nsxt/plugins/module_utils/nsxt_base_resource.py\", line 141, in realize\n  File \"/tmp/ansible_vmware.ansible_for_nsxt.nsxt_policy_tier0_payload_u4fkssnw/ansible_vmware.ansible_for_nsxt.nsxt_policy_tier0_payload.zip/ansible_collections/vmware/ansible_for_nsxt/plugins/module_utils/nsxt_base_resource.py\", line 765, in _achieve_state\n  File \"/tmp/ansible_vmware.ansible_for_nsxt.nsxt_policy_tier0_payload_u4fkssnw/ansible_vmware.ansible_for_nsxt.nsxt_policy_tier0_payload.zip/ansible_collections/vmware/ansible_for_nsxt/plugins/module_utils/nsxt_base_resource.py\", line 246, in achieve_subresource_state\n  File \"/tmp/ansible_vmware.ansible_for_nsxt.nsxt_policy_tier0_payload_u4fkssnw/ansible_vmware.ansible_for_nsxt.nsxt_policy_tier0_payload.zip/ansible_collections/vmware/ansible_for_nsxt/plugins/module_utils/nsxt_base_resource.py\", line 141, in realize\n  File \"/tmp/ansible_vmware.ansible_for_nsxt.nsxt_policy_tier0_payload_u4fkssnw/ansible_vmware.ansible_for_nsxt.nsxt_policy_tier0_payload.zip/ansible_collections/vmware/ansible_for_nsxt/plugins/module_utils/nsxt_base_resource.py\", line 758, in _achieve_state\n  File \"/tmp/ansible_vmware.ansible_for_nsxt.nsxt_policy_tier0_payload_u4fkssnw/ansible_vmware.ansible_for_nsxt.nsxt_policy_tier0_payload.zip/ansible_collections/vmware/ansible_for_nsxt/plugins/module_utils/nsxt_base_resource.py\", line 564, in _achieve_present_state\n  File \"/tmp/ansible_vmware.ansible_for_nsxt.nsxt_policy_tier0_payload_u4fkssnw/ansible_vmware.ansible_for_nsxt.nsxt_policy_tier0_payload.zip/ansible_collections/vmware/ansible_for_nsxt/plugins/modules/nsxt_policy_tier0.py\", line 1806, in update_resource_params\nKeyError: 'external_interface_info'\n",
    "module_stdout": "",
    "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error",
    "rc": 1
}

Reproduction steps

  1. Configure HA VIP on Tier0
  2. Do nsxt_policy_tier0 with only edge_cluster_info directive in locale_services directive
- name: Create T0 Locale service (= Assign Edge Cluster)
  vmware.ansible_for_nsxt.nsxt_policy_tier0:
    hostname: "{{ nsxt_t0_nm_hostname }}"
    username: "{{ nsxt_t0_nm_username }}"
    password: "{{ nsxt_t0_nm_password }}"
    validate_certs: "{{ nsxt_t0_nm_validate }}"
    display_name: "{{ inventory_hostname_short }}"
    state: "{{ nsxt_t0_state }}"
    ha_mode: "{{ nsxt_t0_ha_mode }}"
    failover_mode: "{{ nsxt_t0_failover_mode }}"
    locale_services:
      - display_name: "{{ nsxt_t0_ls_id }}"
        state: present
        edge_cluster_info:
          edge_cluster_display_name: "{{ nsxt_t0_edgecl_name }}"
          site_id: "{{ nsxt_t0_site_id }}"
          enforcementpoint_id: "{{ nsxt_t0_enfp_id }}"
  delegate_to: localhost

...

Expected behavior

nsxt_policy_tier0 module passes in this case.

Additional context

No response

@notti1205 notti1205 added the bug Something isn't working label May 1, 2024
@notti1205
Copy link
Author

I think that need to check whether the external_interface_info key exists before pop this key in L1731.

like this

          if 'ha_vip_configs' in nsx_resource_params:
                for ha_vip_config in nsx_resource_params['ha_vip_configs']:
                    if 'external_interface_info' in ha_vip_config:
                        external_interface_info = ha_vip_config.pop(
                              'external_interface_info')
                        external_interface_paths = []
                        for external_interface in (
                                external_interface_info):
                            interface_base_url = (
                                NSXTTier0.NSXTTier0LocaleService.
                                NSXTTier0Interface.get_resource_base_url(
                                    self.get_parent_info()))
                            external_interface_paths.append(
                                interface_base_url + "/" +
                                self.get_id_using_attr_name_else_fail(
                                    None, external_interface,
                                    interface_base_url,
                                    NSXTTier0.NSXTTier0LocaleService.
                                    NSXTTier0Interface.__name__))
                        ha_vip_config[
                            'external_interface_paths'] = external_interface_paths

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant