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

Correctly handle exception when no VM name returned by proxmox #4508

Merged
merged 1 commit into from
Apr 19, 2022

Conversation

cinek810
Copy link
Contributor

SUMMARY

Handle a case when proxmox didn't return the VM name, which is generally wrong behavior on proxmox side, but can happen and we shouldn't fail.

ISSUE TYPE
  • Bugfix Pull Request
COMPONENT NAME

proxmox_kvm

ADDITIONAL INFORMATION

I was running a task:

    - name: Get VM state
      community.general.proxmox_kvm:
        api_host: '{{ proxmox_conf.api_host }}'
        api_user: '{{ proxmox_conf.api_user }}'
        api_token_id: '{{ proxmox_conf.api_token_id }}'
        api_token_secret: '{{ proxmox_conf.api_token_secret }}'
        proxmox_default_behavior: compatibility
        state: current
        vmid: '{{ item.vmid }}'
      register: vmstate
      with_items: '{{ clone.results }}'
      loop_control:
        pause: 1

and randomly (a frequency is 1/20, but maybe it depends on the API calls load on the backend proxmox) I get the failure like:

TASK [Get VM state] ************************************************************
221An exception occurred during task execution. To see the full traceback, use -vvv. The error was: KeyError: 'name'
222failed: [localhost] (item={'changed': True, 'vmid': 59187, 'msg': 'VM 759936qjy4vwMoleculeAlma8OnProxmox with newid 59187 cloned from vm with vmid 124', 'invocation': {'module_args': {'api_host': '10.214.45.198:8006', 'api_user': '[MASKED]', 'api_token_id': 'VALUE_SPECIFIED_IN_NO_LOG_PARAMETER', 'api_token_secret': 'VALUE_SPECIFIED_IN_NO_LOG_PARAMETER', 'proxmox_default_behavior': 'compatibility', 'clone': 'Alma8-template', 'full': False, 'format': None, 'node': 'plcyf-pve02', 'newid': 59187, 'name': '759936qjy4vwMoleculeAlma8OnProxmox', 'vmid': 124, 'timeout': 600, 'state': 'present', 'update': False, 'validate_certs': False, 'acpi': True, 'agent': None, 'args': None, 'api_password': None, 'autostart': False, 'balloon': 0, 'bios': None, 'boot': 'cnd', 'bootdisk': None, 'cicustom': None, 'cipassword': None, 'citype': None, 'ciuser': None, 'cores': 1, 'cpu': 'kvm64', 'cpulimit': None, 'cpuunits': 1000, 'delete': None, 'description': None, 'digest': None, 'force': None, 'freeze': None, 'hostpci': None, 'hotplug': None, 'hugepages': None, 'ide': None, 'ipconfig': None, 'keyboard': None, 'kvm': True, 'localtime': None, 'lock': None, 'machine': None, 'memory': 512, 'migrate_downtime': None, 'migrate_speed': None, 'net': None, 'numa': None, 'numa_enabled': None, 'onboot': None, 'ostype': 'l26', 'parallel': None, 'pool': None, 'protection': None, 'reboot': None, 'revert': None, 'sata': None, 'scsi': None, 'scsihw': None, 'serial': None, 'shares': None, 'skiplock': None, 'smbios': None, 'snapname': None, 'sockets': 1, 'sshkeys': None, 'startdate': None, 'startup': None, 'storage': None, 'tablet': False, 'tags': None, 'target': None, 'tdf': None, 'template': False, 'vcpus': None, 'vga': 'std', 'virtio': None, 'watchdog': None}}, 'failed': False, 'item': {'groups': ['plcyf', 'all'], 'name': 'Alma8OnProxmox', 'template': 'Alma8-template', 'template_id': 124}, 'ansible_loop_var': 'item'}) => {"ansible_loop_var": "item", "changed": false, "item": {"ansible_loop_var": "item", "changed": true, "failed": false, "invocation": {"module_args": {"acpi": true, "agent": null, "api_host": "10.214.45.198:8006", "api_password": null, "api_token_id": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "api_token_secret": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "api_user": "[MASKED]", "args": null, "autostart": false, "balloon": 0, "bios": null, "boot": "cnd", "bootdisk": null, "cicustom": null, "cipassword": null, "citype": null, "ciuser": null, "clone": "Alma8-template", "cores": 1, "cpu": "kvm64", "cpulimit": null, "cpuunits": 1000, "delete": null, "description": null, "digest": null, "force": null, "format": null, "freeze": null, "full": false, "hostpci": null, "hotplug": null, "hugepages": null, "ide": null, "ipconfig": null, "keyboard": null, "kvm": true, "localtime": null, "lock": null, "machine": null, "memory": 512, "migrate_downtime": null, "migrate_speed": null, "name": "759936qjy4vwMoleculeAlma8OnProxmox", "net": null, "newid": 59187, "node": "plcyf-pve02", "numa": null, "numa_enabled": null, "onboot": null, "ostype": "l26", "parallel": null, "pool": null, "protection": null, "proxmox_default_behavior": "compatibility", "reboot": null, "revert": null, "sata": null, "scsi": null, "scsihw": null, "serial": null, "shares": null, "skiplock": null, "smbios": null, "snapname": null, "sockets": 1, "sshkeys": null, "startdate": null, "startup": null, "state": "present", "storage": null, "tablet": false, "tags": null, "target": null, "tdf": null, "template": false, "timeout": 600, "update": false, "validate_certs": false, "vcpus": null, "vga": "std", "virtio": null, "vmid": 124, "watchdog": null}}, "item": {"groups": ["plcyf", "all"], "name": "Alma8OnProxmox", "template": "Alma8-template", "template_id": 124}, "msg": "VM 759936qjy4vwMoleculeAlma8OnProxmox with newid 59187 cloned from vm with vmid 124", "vmid": 59187}, "module_stderr": "Traceback (most recent call last):\n  File \"/home/gitlab-runner/.ansible/tmp/ansible-tmp-1650018833.6964254-3818157-29224231583482/AnsiballZ_proxmox_kvm.py\", line 100, in <module>\n    _ansiballz_main()\n  File \"/home/gitlab-runner/.ansible/tmp/ansible-tmp-1650018833.6964254-3818157-29224231583482/AnsiballZ_proxmox_kvm.py\", line 92, in _ansiballz_main\n    invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\n  File \"/home/gitlab-runner/.ansible/tmp/ansible-tmp-1650018833.6964254-3818157-29224231583482/AnsiballZ_proxmox_kvm.py\", line 41, in invoke_module\n    run_name='__main__', alter_sys=True)\n  File \"/usr/lib64/python3.6/runpy.py\", line 205, in run_module\n    return _run_module_code(code, init_globals, run_name, mod_spec)\n  File \"/usr/lib64/python3.6/runpy.py\", line 96, in _run_module_code\n    mod_name, mod_spec, pkg_name, script_name)\n  File \"/usr/lib64/python3.6/runpy.py\", line 85, in _run_code\n    exec(code, run_globals)\n  File \"/tmp/ansible_community.general.proxmox_kvm_payload_6v5m9gur/ansible_community.general.proxmox_kvm_payload.zip/ansible_collections/community/general/plugins/modules/proxmox_kvm.py\", line 1411, in <module>\n  File \"/tmp/ansible_community.general.proxmox_kvm_payload_6v5m9gur/ansible_community.general.proxmox_kvm_payload.zip/ansible_collections/community/general/plugins/modules/proxmox_kvm.py\", line 1403, in main\nKeyError: 'name'\n", "module_stdout": "", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 1}

The python error nicely formatted:

Traceback (most recent call last):
  File \"/home/gitlab-runner/.ansible/tmp/ansible-tmp-1650018833.6964254-3818157-29224231583482/AnsiballZ_proxmox_kvm.py\", line 100, in <module>
    _ansiballz_main()
  File \"/home/gitlab-runner/.ansible/tmp/ansible-tmp-1650018833.6964254-3818157-29224231583482/AnsiballZ_proxmox_kvm.py\", line 92, in _ansiballz_main
    invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)
  File \"/home/gitlab-runner/.ansible/tmp/ansible-tmp-1650018833.6964254-3818157-29224231583482/AnsiballZ_proxmox_kvm.py\", line 41, in invoke_module
    run_name='__main__', alter_sys=True)
  File \"/usr/lib64/python3.6/runpy.py\", line 205, in run_module
    return _run_module_code(code, init_globals, run_name, mod_spec)
  File \"/usr/lib64/python3.6/runpy.py\", line 96, in _run_module_code
    mod_name, mod_spec, pkg_name, script_name)
  File \"/usr/lib64/python3.6/runpy.py\", line 85, in _run_code
    exec(code, run_globals)
  File \"/tmp/ansible_community.general.proxmox_kvm_payload_6v5m9gur/ansible_community.general.proxmox_kvm_payload.zip/ansible_collections/community/general/plugins/modules/proxmox_kvm.py\", line 1411, in <module>
  File \"/tmp/ansible_community.general.proxmox_kvm_payload_6v5m9gur/ansible_community.general.proxmox_kvm_payload.zip/ansible_collections/community/general/plugins/modules/proxmox_kvm.py\", line 1403, in main
KeyError: 'name'

@ansibullbot
Copy link
Collaborator

@ansibullbot ansibullbot added bug This issue/PR relates to a bug cloud module module new_contributor Help guide this first time contributor plugins plugin (any type) small_patch Hopefully easy to review traceback labels Apr 15, 2022
Copy link
Collaborator

@felixfontein felixfontein left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for your contribution! Could you please add a changelog fragment? Thanks.

plugins/modules/cloud/misc/proxmox_kvm.py Outdated Show resolved Hide resolved
@felixfontein felixfontein added check-before-release PR will be looked at again shortly before release and merged if possible. backport-3 labels Apr 15, 2022
@ansibullbot ansibullbot removed the small_patch Hopefully easy to review label Apr 15, 2022
@felixfontein felixfontein removed the check-before-release PR will be looked at again shortly before release and merged if possible. label Apr 19, 2022
@felixfontein felixfontein merged commit 8076f16 into ansible-collections:main Apr 19, 2022
@patchback
Copy link

patchback bot commented Apr 19, 2022

Backport to stable-3: 💔 cherry-picking failed — conflicts found

❌ Failed to cleanly apply 8076f16 on top of patchback/backports/stable-3/8076f16aa95b880094187cb788d6c9ea34ac3da3/pr-4508

Backporting merged PR #4508 into main

  1. Ensure you have a local repo clone of your fork. Unless you cloned it
    from the upstream, this would be your origin remote.
  2. Make sure you have an upstream repo added as a remote too. In these
    instructions you'll refer to it by the name upstream. If you don't
    have it, here's how you can add it:
    $ git remote add upstream https://github.com/ansible-collections/community.general.git
  3. Ensure you have the latest copy of upstream and prepare a branch
    that will hold the backported code:
    $ git fetch upstream
    $ git checkout -b patchback/backports/stable-3/8076f16aa95b880094187cb788d6c9ea34ac3da3/pr-4508 upstream/stable-3
  4. Now, cherry-pick PR Correctly handle exception when no VM name returned by proxmox #4508 contents into that branch:
    $ git cherry-pick -x 8076f16aa95b880094187cb788d6c9ea34ac3da3
    If it'll yell at you with something like fatal: Commit 8076f16aa95b880094187cb788d6c9ea34ac3da3 is a merge but no -m option was given., add -m 1 as follows intead:
    $ git cherry-pick -m1 -x 8076f16aa95b880094187cb788d6c9ea34ac3da3
  5. At this point, you'll probably encounter some merge conflicts. You must
    resolve them in to preserve the patch from PR Correctly handle exception when no VM name returned by proxmox #4508 as close to the
    original as possible.
  6. Push this branch to your fork on GitHub:
    $ git push origin patchback/backports/stable-3/8076f16aa95b880094187cb788d6c9ea34ac3da3/pr-4508
  7. Create a PR, ensure that the CI is green. If it's not — update it so that
    the tests and any other checks pass. This is it!
    Now relax and wait for the maintainers to process your pull request
    when they have some cycles to do reviews. Don't worry — they'll tell you if
    any improvements are necessary when the time comes!

🤖 @patchback
I'm built with octomachinery and
my source is open — https://github.com/sanitizers/patchback-github-app.

@felixfontein
Copy link
Collaborator

@cinek810 thanks for fixing this!
@russoz thanks for reviewing!

@patchback
Copy link

patchback bot commented Apr 19, 2022

Backport to stable-4: 💚 backport PR created

✅ Backport PR branch: patchback/backports/stable-4/8076f16aa95b880094187cb788d6c9ea34ac3da3/pr-4508

Backported as #4529

🤖 @patchback
I'm built with octomachinery and
my source is open — https://github.com/sanitizers/patchback-github-app.

patchback bot pushed a commit that referenced this pull request Apr 19, 2022
felixfontein pushed a commit that referenced this pull request Apr 19, 2022
netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this pull request May 14, 2022
v5.7.1

Minor Changes
-------------

- The version of fortinet.fortios has been rolled back to 2.1.4 (from 2.1.5) to address a syntax error pending a new release of
the collection


v5.7.0

Major Changes
-------------

community.postgresql
~~~~~~~~~~~~~~~~~~~~

- postgresql_user - the ``priv`` argument has been deprecated and will be removed in ``community.postgresql 3.0.0``. Please use the ``postgresql_privs`` module to grant/revoke privileges instead (ansible-collections/community.postgresql#212).

fortinet.fortios
~~~~~~~~~~~~~~~~

- Support FortiOS 7.0.2, 7.0.3, 7.0.4, 7.0.5.

Minor Changes
-------------

ansible.utils
~~~~~~~~~~~~~

- 'consolidate' filter plugin added.

cloud.common
~~~~~~~~~~~~

- Move the content of README_ansible_turbo.module.rst in the main README.md to get visibility on Ansible Galaxy.

community.dns
~~~~~~~~~~~~~

- Prepare collection for inclusion in an Execution Environment by declaring its dependencies (ansible-collections/community.dns#93).

community.docker
~~~~~~~~~~~~~~~~

- Prepare collection for inclusion in an Execution Environment by declaring its dependencies. The ``docker_stack*`` modules are not supported (ansible-collections/community.docker#336).
- current_container_facts - add detection for GitHub Actions (ansible-collections/community.docker#336).
- docker_container - support returning Docker container log output when using Docker's ``local`` logging driver, an optimized local logging driver introduced in Docker 18.09 (ansible-collections/community.docker#337).

community.general
~~~~~~~~~~~~~~~~~

- alternatives - add ``state`` parameter, which provides control over whether the alternative should be set as the active selection for its alternatives group (ansible-collections/community.general#4543, ansible-collections/community.general#4557).
- atomic_container - minor refactoring (ansible-collections/community.general#4567).
- clc_alert_policy - minor refactoring (ansible-collections/community.general#4556).
- clc_group - minor refactoring (ansible-collections/community.general#4556).
- clc_loadbalancer - minor refactoring (ansible-collections/community.general#4556).
- clc_server - minor refactoring (ansible-collections/community.general#4556).
- cmd_runner module util - reusable command runner with consistent argument formatting and sensible defaults (ansible-collections/community.general#4476).
- datadog_monitor - support new datadog event monitor of type `event-v2 alert` (ansible-collections/community.general#4457)
- filesystem - add support for resizing btrfs (ansible-collections/community.general#4465).
- lxd_container - adds ``project`` option to allow selecting project for LXD instance (ansible-collections/community.general#4479).
- lxd_profile - adds ``project`` option to allow selecting project for LXD profile (ansible-collections/community.general#4479).
- nmap inventory plugin - add ``sudo`` option in plugin in order to execute ``sudo nmap`` so that ``nmap`` runs with elevated privileges (ansible-collections/community.general#4506).
- nomad_job - minor refactoring (ansible-collections/community.general#4567).
- nomad_job_info - minor refactoring (ansible-collections/community.general#4567).
- packet_device - minor refactoring (ansible-collections/community.general#4567).
- packet_sshkey - minor refactoring (ansible-collections/community.general#4567).
- packet_volume - minor refactoring (ansible-collections/community.general#4567).
- profitbricks - minor refactoring (ansible-collections/community.general#4567).
- proxmox - minor refactoring (ansible-collections/community.general#4567).
- proxmox inventory plugin - add token authentication as an alternative to username/password (ansible-collections/community.general#4540).
- proxmox inventory plugin - parse LXC configs returned by the proxmox API (ansible-collections/community.general#4472).
- proxmox_snap - add restore snapshot option (ansible-collections/community.general#4377).
- proxmox_snap - fixed timeout value to correctly reflect time in seconds. The timeout was off by one second (ansible-collections/community.general#4377).
- redfish_command - add ``IndicatorLedOn``, ``IndicatorLedOff``, and ``IndicatorLedBlink`` commands to the Systems category for controling system LEDs (ansible-collections/community.general#4084).
- seport - minor refactoring (ansible-collections/community.general#4471).
- smartos_image_info - minor refactoring (ansible-collections/community.general#4567).
- terraform - adds ``terraform_upgrade`` parameter which allows ``terraform init`` to satisfy new provider constraints in an existing Terraform project (ansible-collections/community.general#4333).
- udm_group - minor refactoring (ansible-collections/community.general#4556).
- udm_share - minor refactoring (ansible-collections/community.general#4556).
- vmadm - minor refactoring (ansible-collections/community.general#4567).
- webfaction_app - minor refactoring (ansible-collections/community.general#4567).
- webfaction_db - minor refactoring (ansible-collections/community.general#4567).
- xfconf - added missing value types ``char``, ``uchar``, ``int64`` and ``uint64`` (ansible-collections/community.general#4534).

community.grafana
~~~~~~~~~~~~~~~~~

- Remove requirement for `ds_type` and `ds_url` parameters when deleting a datasource
- add `grafana` action group in `meta/runtime.yml` to support for module group defaults
- refactor grafana_notification_channel module

community.hrobot
~~~~~~~~~~~~~~~~

- Prepare collection for inclusion in an Execution Environment by declaring its dependencies (ansible-collections/community.hrobot#45).

community.zabbix
~~~~~~~~~~~~~~~~

- all modules - prepare for deprecation of distutils LooseVersion.
- collection - Add dependencies to other collections. This helps Ansible Galaxy automatically downloading collections that this collection relies on to run.
- connection.httpapi (plugin) - add initial httpapi connection plugin.
- httpapi.jsonrpc (plugin) - add initial httpapi for future handling of json-rpc.
- new module zabbix authentication for configuring global authentication settings in Zabbix Server's Settings section of GUI.
- new module zabbix_autoregister for configuring global autoregistration settings in Zabbix Server's Settings section of GUI.
- new module zabbix_housekeeping for configuring global housekeeping settings in Zabbix Server's Settings section of GUI.
- test_zabbix_host_info - fix Template/Group names for 5.4
- test_zabbix_screen - disable testing for screen in 5.4 (deprecated)
- zabbix_action - additional fixes to make module work with Zabbix 6.0 (ansible-collections/community.zabbix#664)
- zabbix_action - module ported to work with Zabbix 6.0 (ansible-collections/community.zabbix#648, ansible-collections/community.zabbix#653)
- zabbix_agent - Check if 'firewalld' exist and is running when handler is executed.
- zabbix_agent - Install the correct Python libxml2 package on SLES15
- zabbix_agent - Move inclusion of the apache.yml tasks to later stage during execution of role.
- zabbix_agent - Prepare for Zabbix 6.0.
- zabbix_agent - Specify a minor version with zabbix_agent_version_minor for RH systems.
- zabbix_agent - There was no way to configure a specific type for the macro.
- zabbix_agent - Use multiple aliases in the configuration file with ``zabbix_agent_zabbix_alias`` or ``zabbix_agent2_zabbix_alias``.
- zabbix_maintenance - added new module parameter `tags`, which allows configuring Problem Tags on maintenances.
- zabbix_proxy - Prepare for Zabbix 6.0.
- zabbix_proxy - Specify a minor version with zabbix_proxy_version_minor for RH systems.
- zabbix_proxy - Support for Sangoma and treat it like a RHEL system.
- zabbix_server - Check the 'zabbix_server_install_database_client' variable in RedHat tasks.
- zabbix_server - Prepare for Zabbix 6.0.
- zabbix_server - Specify a minor version with zabbix_server_version_minor for RH systems.
- zabbix_user - change alias property to username (changed in 5.4) (alias is now an alias for username)
- zabbix_user_info - change alias property to username (changed in 5.4) (alias is now an alias for username)
- zabbix_web - Change format ENCRYPTION, VERIFY_HOST from string to boolean.
- zabbix_web - Specify a minor version with zabbix_web_version_minor for RH systems.

f5networks.f5_modules
~~~~~~~~~~~~~~~~~~~~~

- bigip_device_info - add UCS creation date to the data gathered
- bigip_virtual_server - add service_down_immediate_action parameter
- bigiq_regkey_license - add addon_keys parameter to the module

netapp.cloudmanager
~~~~~~~~~~~~~~~~~~~

- na_cloudmanager_connector_gcp - when using the user application default credential authentication by running the command gcloud auth application-default login, ``gcp_service_account_path`` is not needed.

netapp.ontap
~~~~~~~~~~~~

- na_ontap_cluster_config role - use na_ontap_login_messages as na_ontap_motd is deprecated.
- na_ontap_debug - report ansible version and ONTAP collection version.
- na_ontap_efficiency_policy - Added REST support.
- na_ontap_export_policy_rule - new option ``ntfs_unix_security`` for NTFS export UNIX security options added.
- na_ontap_lun - Added REST support.
- na_ontap_snapmirror -- Added more descriptive error messages for REST
- na_ontap_snapshot_policy - Added REST support to the na_ontap_snapshot_policy module.
- na_ontap_svm - add support for web services (ssl modify) - REST only with 9.8 or later.
- na_ontap_volume - add support for SnapLock - only for REST.
- na_ontap_volume - allow to modify volume after rename.
- na_ontap_volume - new option ``max_files`` to increase the inode count value.
- na_ontap_vserver_create role - support max_volumes option.

netbox.netbox
~~~~~~~~~~~~~

- Add meta information for use in Execution Environments
- Multiple modules - add new parameters added in NetBox 3.2
- nb_inventory - Add site_group as an option
- netbox_front_port and netbox_rear_port - Add label as parameter

sensu.sensu_go
~~~~~~~~~~~~~~

- Added support for ansible 2.13
- Removed support for CentOS 8

t_systems_mms.icinga_director
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

- Add icinga_serviceset module (https://github.com/T-Systems-MMS/ansible-collection-icinga-director/pull/163)
- Test more ansible versions (https://github.com/T-Systems-MMS/ansible-collection-icinga-director/pull/162)

Deprecated Features
-------------------

community.general
~~~~~~~~~~~~~~~~~

- nmcli - deprecate default hairpin mode for a bridge. This so we can change it to ``false`` in community.general 7.0.0, as this is also the default in ``nmcli`` (ansible-collections/community.general#4334).
- proxmox inventory plugin - the current default ``true`` of the ``want_proxmox_nodes_ansible_host`` option has been deprecated. The default will change to ``false`` in community.general 6.0.0. To keep the current behavior, explicitly set ``want_proxmox_nodes_ansible_host`` to ``true`` in your inventory configuration. We suggest to already switch to the new behavior by explicitly setting it to ``false``, and by using ``compose:`` to set ``ansible_host`` to the correct value. See the examples in the plugin documentation for details (ansible-collections/community.general#4466).

Bugfixes
--------

Ansible-core
~~~~~~~~~~~~

- Ansible.ModuleUtils.SID - Use user principal name as is for lookup in the ``Convert-ToSID`` function - ansible/ansible#77316
- Fix traceback when installing a collection from a git repository and git is not installed (ansible/ansible#77479).
- ansible-test - Correctly detect when running as the ``root`` user (UID 0) on the origin host. The result of the detection was incorrectly being inverted.
- ansible-test - Fix skipping of tests marked ``needs/python`` on the origin host.
- ansible-test - Fix skipping of tests marked ``needs/root`` on the origin host.
- ansible-test compile sanity test - do not crash if a column could not be determined for an error (ansible/ansible#77465).
- hostname - use ``file_get_content()`` to read the file containing the host name in the ``FileStrategy.get_permanent_hostname()`` method. This prevents a ``TypeError`` from being raised when the strategy is used (ansible/ansible#77025).
- script - skip in check mode since the plugin cannot determine if a change will occur.
- shell/command - only skip in check mode if the options `creates` and `removes` are both None.
- winrm - Ensure ``kinit`` is run with the same ``PATH`` env var as the Ansible process

cloud.common
~~~~~~~~~~~~

- fix parameters with aliases not being passed through (ansible-collections/cloud.common#91).
- fix turbo mode loading incorrect module (ansible-collections/cloud.common#102).
- turbo - Ensure we don't call the module with duplicated aliased parameters.

community.dns
~~~~~~~~~~~~~

- Update Public Suffix List.

community.docker
~~~~~~~~~~~~~~~~

- docker connection plugin - make sure that ``docker_extra_args`` is used for querying the Docker version. Also ensures that the Docker version is only queried when needed. This is currently the case if a remote user is specified (ansible-collections/community.docker#325, ansible-collections/community.docker#327).

community.general
~~~~~~~~~~~~~~~~~

- dnsmadeeasy - fix failure on deleting DNS entries when API response does not contain monitor value (ansible-collections/community.general#3620).
- git_branch - remove deprecated and unnecessary branch ``unprotect`` method (ansible-collections/community.general#4496).
- gitlab_group - improve searching for projects inside group on deletion (ansible-collections/community.general#4491).
- gitlab_group_members - handle more than 20 groups when finding a group (ansible-collections/community.general#4491, ansible-collections/community.general#4460, ansible-collections/community.general#3729).
- gitlab_hook - handle more than 20 hooks when finding a hook (ansible-collections/community.general#4491).
- gitlab_project - handle more than 20 namespaces when finding a namespace (ansible-collections/community.general#4491).
- gitlab_project_members - handle more than 20 projects and users when finding a project resp. user (ansible-collections/community.general#4491).
- gitlab_user - handle more than 20 users and SSH keys when finding a user resp. SSH key (ansible-collections/community.general#4491).
- keycloak - fix parameters types for ``defaultDefaultClientScopes`` and ``defaultOptionalClientScopes`` from list of dictionaries to list of strings (ansible-collections/community.general#4526).
- opennebula inventory plugin - complete the implementation of ``constructable`` for opennebula inventory plugin. Now ``keyed_groups``, ``compose``, ``groups`` actually work (ansible-collections/community.general#4497).
- pacman - fixed bug where ``absent`` state did not work for locally installed packages (ansible-collections/community.general#4464).
- pritunl - fixed bug where pritunl plugin api add unneeded data in ``auth_string`` parameter (ansible-collections/community.general#4527).
- proxmox inventory plugin - fix error when parsing container with LXC configs (ansible-collections/community.general#4472, ansible-collections/community.general#4472).
- proxmox_kvm - fix a bug when getting a state of VM without name will fail (ansible-collections/community.general#4508).
- xbps - fix error message that is reported when installing packages fails (ansible-collections/community.general#4438).

community.hrobot
~~~~~~~~~~~~~~~~

- robot inventory plugin - do not crash if a server neither has name or primary IP set. Instead, fall back to using the server's number as the name. This can happen if unnamed rack reservations show up in your server list (ansible-collections/community.hrobot#40, ansible-collections/community.hrobot#47).

community.postgresql
~~~~~~~~~~~~~~~~~~~~

- postgresql_db - get rid of the deprecated psycopg2 connection alias ``database`` in favor of ``dbname`` when psycopg2 is 2.7+ is used (ansible-collections/community.postgresql#194, ansible-collections/community.postgresql#196).

community.proxysql
~~~~~~~~~~~~~~~~~~

- module_utils/mysql.py - Proxysql version suffix may not be an integer (ansible-collections/community.proxysql#96).

community.zabbix
~~~~~~~~~~~~~~~~

- Various modules and plugins - use vendored version of ``distutils.version`` instead of the deprecated Python standard library ``distutils`` (ansible-collections/community.zabbix#603).
- ZapiWrapper (module_utils) - fix only partial zabbix version is returned.
- zabbix_agent - Install Zabbix packages when zabbix_repo == other is used with yum.
- zabbix_agent - Install the Agent for MacOSX sooner than its configuration.
- zabbix_agent - The ``Install gpg key`` task for Debian did not work when a http proxy is configured.
- zabbix_agent - Use the correct URL with correct version.
- zabbix_agent - Use the correct path to determine Zabbix Agent 2 installation on Windows.
- zabbix_agent - Using the correct hostgroup as default now.
- zabbix_agent - fix for the autopsk, incl. tests with Molecule.
- zabbix_host - Added small notification that an user should have read access to get hostgroups overview.
- zabbix_host - adapter changed properties for interface comparisson
- zabbix_maintenance - should now work when creating maintenace on Zabbix 6.0 server
- zabbix_proxy - 'zcat' the zipped sql files to /tmp before executing it.
- zabbix_proxy - Check MySQL version before settings mysql_innodb_default_row_format value.
- zabbix_proxy - Install Zabbix packages when zabbix_repo == other is used with yum.
- zabbix_server - 'zcat' the zipped sql files to /tmp before executing it.
- zabbix_server - Check MySQL version before settings mysql_innodb_default_row_format value.
- zabbix_server - Install Zabbix packages when zabbix_repo == other is used with yum.
- zabbix_template - setting correct null values to fix unintentional changes
- zabbix_web - Added some default variables if the geerlingguys apache role is not used.
- zabbix_web - Specified the correct versions for php.

f5networks.f5_modules
~~~~~~~~~~~~~~~~~~~~~

- bigip_command - fixed a bug that interpreted a pipe symbol inside an input string as pipe used to combine commands
- bigip_device_certificate - adds missing space to tmsh command
- bigip_gtm_wide_ip - fixed inability to change persistence setting on existing wide ip objects

fortinet.fortios
~~~~~~~~~~~~~~~~

- Fix issues in version mismatch logic.
- Fix status issue in fortios_json_generic().
- Fix the issue of inconsistent data types in different schemas.

netapp.cloudmanager
~~~~~~~~~~~~~~~~~~~

- Add check when volume is capacity tiered.
- na_cloudmanager_connector_azure - Fix string formatting error when deleting the connector.

netapp.ontap
~~~~~~~~~~~~

- Fixed ONTAP minor version ignored in checking minimum ONTAP version.
- na_ontap_aggregate - Fixed error in delete aggregate if the ``disk_count`` is less than current disk count.
- na_ontap_autosupport - Fixed `partner_address` not working in REST.
- na_ontap_command - document that a READONLY user is not supported, even for show commands.
- na_ontap_disk_options - ONTAP 9.10.1 returns on/off rather than True/False.
- na_ontap_info - Fixes issue with na_ontap_info failing in 9.1 because of ``job-schedule-cluster``.
- na_ontap_iscsi - Fixed issue with ``start_state`` always being set to stopped when creating an ISCSI.
- na_ontap_iscsi - fixed error starting iscsi service on vserver where Service, adapter, or operation already started.
- na_ontap_lun - Fixed KeyError on options ``force_resize``, ``force_remove`` and ``force_remove_fenced`` in Zapi.
- na_ontap_lun - Fixed ``force_remove`` option silently ignored in REST.
- na_ontap_lun_map - TypeError - '>' not supported between instances of 'int' and 'str '.
- na_ontap_qtree - Fixed issue with ``oplocks`` not being changed during a modify in Zapi.
- na_ontap_qtree - Fixed issue with ``oplocks`` not warning user about not being supported in REST
- na_ontap_snapmirror - Added use_rest condition for the REST support to work when use_rest `always`.
- na_ontap_snapshot - add error message if volume is not found with REST.
- na_ontap_snapshot - fix key error on volume when using REST.
- na_ontap_snapshot_policy - Do not validate parameter when state is ``absent`` and fix KeyError on ``comment``.
- na_ontap_svm - fixed KeyError issue on protocols when vserver is stopped.
- na_ontap_volume - do not attempt to mount volume if current state is offline.
- na_ontap_volume - fix idempotency issue with compression settings when using REST.
- na_ontap_vserver_peer - Added cluster peer accept code in REST.
- na_ontap_vserver_peer - Fixed AttributeError if ``dest_hostname`` or ``peer_options`` not present.
- na_ontap_vserver_peer - Fixed ``local_name_for_peer`` and ``local_name_for_source`` options silently ignored in REST.
- na_ontap_vserver_peer - Get peer cluster name if remote peer exist else use local cluster name.
- na_ontap_vserver_peer - ignore job entry doesn't exist error with REST to bypass ONTAP issue with FSx.
- na_ontap_vserver_peer - report error if SVM peer does not see a peering relationship after create.

netbox.netbox
~~~~~~~~~~~~~

- netbox_contact_group - Fix field description
- netbox_rack - Add location as a query parameter for uniqueness check

New Plugins
-----------

Connection
~~~~~~~~~~

- community.zabbix.httpapi - Use httpapi to run command on network appliances

Httpapi
~~~~~~~

- community.zabbix.jsonrpc - HttpApi Plugin for Zabbix

New Modules
-----------

community.general
~~~~~~~~~~~~~~~~~

Cloud
^^^^^

Lxd
...

- community.general.lxd_project - Manage LXD projects

Monitoring
^^^^^^^^^^

- community.general.alerta_customer - Manage customers in Alerta

community.zabbix
~~~~~~~~~~~~~~~~

- community.zabbix.zabbix_authentication - Update Zabbix authentication
- community.zabbix.zabbix_autoregister - Update Zabbix autoregistration
- community.zabbix.zabbix_housekeeping - Update Zabbix housekeeping

f5networks.f5_modules
~~~~~~~~~~~~~~~~~~~~~

- f5networks.f5_modules.bigip_ltm_global - Manages global LTM settings

t_systems_mms.icinga_director
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

- t_systems_mms.icinga_director.icinga_serviceset - Manage servicesets in Icinga2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug This issue/PR relates to a bug cloud module module new_contributor Help guide this first time contributor plugins plugin (any type) traceback
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants