diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d2bfa4fb0..683be91e5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -88,12 +88,21 @@ jobs: strategy: matrix: include: + # Note; 2.16 and 2.17 is still needed for AAP support for customers using the rhel8 base image - ansible: "2.16" python_ver: "3.11" - ansible: "2.17" python_ver: "3.11" - ansible: "2.18" python_ver: "3.11" + - ansible: "2.18" + python_ver: "3.12" + - ansible: "2.19" + python_ver: "3.11" + - ansible: "2.19" + python_ver: "3.12" + - ansible: "2.20" + python_ver: "3.12" runs-on: ubuntu-latest defaults: run: diff --git a/plugins/modules/panos_facts.py b/plugins/modules/panos_facts.py index 09511707d..c170d8711 100644 --- a/plugins/modules/panos_facts.py +++ b/plugins/modules/panos_facts.py @@ -226,7 +226,6 @@ """ from ansible.module_utils.basic import AnsibleModule -from ansible.module_utils.six import iteritems from ansible_collections.paloaltonetworks.panos.plugins.module_utils.panos import ( get_connection, ) @@ -590,7 +589,7 @@ def main(): ansible_facts = dict() - for key, value in iteritems(facts): + for key, value in facts.items(): key = "ansible_net_%s" % key ansible_facts[key] = value diff --git a/pyproject.toml b/pyproject.toml index b46651213..3f61fcade 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -17,9 +17,9 @@ package-mode = false [tool.poetry.dependencies] python = ">=3.10,<4.0" pan-os-python = ">=1.12.4,<2.0" -xmltodict = ">=0.12.0,<0.15.0" -aiohttp = ">=3.8.4,<4.0" -dpath = ">=2.1.5,<3.0" +xmltodict = ">=0.12.0" +aiohttp = ">=3.8.4" +dpath = ">=2.1.5" panos-upgrade-assurance = ">=2.0.0,<3.0" [tool.poetry.dev-dependencies] diff --git a/requirements.txt b/requirements.txt index bc1b7beec..91f617978 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ -aiohttp>=3.8.4,<4.0 ; python_version >= "3.10" and python_version < "4.0" -dpath>=2.1.5,<3.0 ; python_version >= "3.10" and python_version < "4.0" +aiohttp>=3.8.4 ; python_version >= "3.10" and python_version < "4.0" +dpath>=2.1.5 ; python_version >= "3.10" and python_version < "4.0" pan-os-python>=1.12.4,<2.0 ; python_version >= "3.10" and python_version < "4.0" panos-upgrade-assurance>=2.0.0,<3.0 ; python_version >= "3.10" and python_version < "4.0" -xmltodict>=0.12.0,<0.15.0 ; python_version >= "3.10" and python_version < "4.0" +xmltodict>=0.12.0 ; python_version >= "3.10" and python_version < "4.0" diff --git a/tests/sanity/ignore-2.19.txt b/tests/sanity/ignore-2.19.txt new file mode 100644 index 000000000..ea42920e4 --- /dev/null +++ b/tests/sanity/ignore-2.19.txt @@ -0,0 +1,118 @@ +plugins/httpapi/panos.py validate-modules:missing-gplv3-license +plugins/modules/panos_active_in_ha.py validate-modules:missing-gplv3-license +plugins/modules/panos_address_group.py validate-modules:missing-gplv3-license +plugins/modules/panos_address_object.py validate-modules:missing-gplv3-license +plugins/modules/panos_admin.py validate-modules:missing-gplv3-license +plugins/modules/panos_administrator.py validate-modules:missing-gplv3-license +plugins/modules/panos_admpwd.py validate-modules:missing-gplv3-license +plugins/modules/panos_aggregate_interface.py validate-modules:missing-gplv3-license +plugins/modules/panos_api_key.py validate-modules:missing-gplv3-license +plugins/modules/panos_application_filter.py validate-modules:missing-gplv3-license +plugins/modules/panos_application_group.py validate-modules:missing-gplv3-license +plugins/modules/panos_application_object.py validate-modules:missing-gplv3-license +plugins/modules/panos_bgp_aggregate.py validate-modules:missing-gplv3-license +plugins/modules/panos_bgp_auth.py validate-modules:missing-gplv3-license +plugins/modules/panos_bgp_conditional_advertisement.py validate-modules:missing-gplv3-license +plugins/modules/panos_bgp_dampening.py validate-modules:missing-gplv3-license +plugins/modules/panos_bgp_peer_group.py validate-modules:missing-gplv3-license +plugins/modules/panos_bgp_peer.py validate-modules:missing-gplv3-license +plugins/modules/panos_bgp_policy_filter.py validate-modules:missing-gplv3-license +plugins/modules/panos_bgp_policy_rule.py validate-modules:missing-gplv3-license +plugins/modules/panos_bgp_redistribute.py validate-modules:missing-gplv3-license +plugins/modules/panos_bgp.py validate-modules:missing-gplv3-license +plugins/modules/panos_cert_gen_ssh.py validate-modules:missing-gplv3-license +plugins/modules/panos_check.py validate-modules:missing-gplv3-license +plugins/modules/panos_commit_firewall.py validate-modules:missing-gplv3-license +plugins/modules/panos_commit_panorama.py validate-modules:missing-gplv3-license +plugins/modules/panos_commit_push.py validate-modules:missing-gplv3-license +plugins/modules/panos_commit.py validate-modules:missing-gplv3-license +plugins/modules/panos_config_element.py validate-modules:missing-gplv3-license +plugins/modules/panos_custom_url_category.py validate-modules:missing-gplv3-license +plugins/modules/panos_dag_tags.py validate-modules:missing-gplv3-license +plugins/modules/panos_dag.py validate-modules:missing-gplv3-license +plugins/modules/panos_decryption_rule.py validate-modules:missing-gplv3-license +plugins/modules/panos_device_group.py validate-modules:missing-gplv3-license +plugins/modules/panos_dhcp_relay_ipv6_address.py validate-modules:missing-gplv3-license +plugins/modules/panos_dhcp_relay.py validate-modules:missing-gplv3-license +plugins/modules/panos_dhcp.py validate-modules:missing-gplv3-license +plugins/modules/panos_dynamic_updates.py validate-modules:missing-gplv3-license +plugins/modules/panos_dynamic_user_group.py validate-modules:missing-gplv3-license +plugins/modules/panos_edl.py validate-modules:missing-gplv3-license +plugins/modules/panos_email_profile.py validate-modules:missing-gplv3-license +plugins/modules/panos_email_server.py validate-modules:missing-gplv3-license +plugins/modules/panos_export.py validate-modules:missing-gplv3-license +plugins/modules/panos_gre_tunnel.py validate-modules:missing-gplv3-license +plugins/modules/panos_ha.py validate-modules:missing-gplv3-license +plugins/modules/panos_http_profile_header.py validate-modules:missing-gplv3-license +plugins/modules/panos_http_profile_param.py validate-modules:missing-gplv3-license +plugins/modules/panos_http_profile.py validate-modules:missing-gplv3-license +plugins/modules/panos_http_server.py validate-modules:missing-gplv3-license +plugins/modules/panos_ike_crypto_profile.py validate-modules:missing-gplv3-license +plugins/modules/panos_ike_gateway.py validate-modules:missing-gplv3-license +plugins/modules/panos_import.py validate-modules:missing-gplv3-license +plugins/modules/panos_interface.py validate-modules:missing-gplv3-license +plugins/modules/panos_ipsec_ipv4_proxyid.py validate-modules:missing-gplv3-license +plugins/modules/panos_ipsec_profile.py validate-modules:missing-gplv3-license +plugins/modules/panos_ipsec_tunnel.py validate-modules:missing-gplv3-license +plugins/modules/panos_ipv6_address.py validate-modules:missing-gplv3-license +plugins/modules/panos_l2_subinterface.py validate-modules:missing-gplv3-license +plugins/modules/panos_l3_subinterface.py validate-modules:missing-gplv3-license +plugins/modules/panos_lic.py validate-modules:missing-gplv3-license +plugins/modules/panos_loadcfg.py validate-modules:missing-gplv3-license +plugins/modules/panos_log_forwarding_profile_match_list_action.py validate-modules:missing-gplv3-license +plugins/modules/panos_log_forwarding_profile_match_list.py validate-modules:missing-gplv3-license +plugins/modules/panos_log_forwarding_profile.py validate-modules:missing-gplv3-license +plugins/modules/panos_loopback_interface.py validate-modules:missing-gplv3-license +plugins/modules/panos_management_profile.py validate-modules:missing-gplv3-license +plugins/modules/panos_match_rule.py validate-modules:missing-gplv3-license +plugins/modules/panos_mgtconfig.py validate-modules:missing-gplv3-license +plugins/modules/panos_nat_rule_facts.py validate-modules:missing-gplv3-license +plugins/modules/panos_nat_rule.py validate-modules:missing-gplv3-license +plugins/modules/panos_nat_rule2.py validate-modules:missing-gplv3-license +plugins/modules/panos_object_facts.py validate-modules:missing-gplv3-license +plugins/modules/panos_object.py validate-modules:missing-gplv3-license +plugins/modules/panos_op.py validate-modules:missing-gplv3-license +plugins/modules/panos_pbf_rule.py validate-modules:missing-gplv3-license +plugins/modules/panos_pg.py validate-modules:missing-gplv3-license +plugins/modules/panos_query_rules.py validate-modules:missing-gplv3-license +plugins/modules/panos_readiness_checks.py validate-modules:missing-gplv3-license +plugins/modules/panos_redistribution.py validate-modules:missing-gplv3-license +plugins/modules/panos_region.py validate-modules:missing-gplv3-license +plugins/modules/panos_registered_ip_facts.py validate-modules:missing-gplv3-license +plugins/modules/panos_registered_ip.py validate-modules:missing-gplv3-license +plugins/modules/panos_restart.py validate-modules:missing-gplv3-license +plugins/modules/panos_sag.py validate-modules:missing-gplv3-license +plugins/modules/panos_schedule_object.py validate-modules:missing-gplv3-license +plugins/modules/panos_security_rule_facts.py validate-modules:missing-gplv3-license +plugins/modules/panos_security_rule.py validate-modules:missing-gplv3-license +plugins/modules/panos_service_group.py validate-modules:missing-gplv3-license +plugins/modules/panos_service_object.py validate-modules:missing-gplv3-license +plugins/modules/panos_snapshot_report.py validate-modules:missing-gplv3-license +plugins/modules/panos_snmp_profile.py validate-modules:missing-gplv3-license +plugins/modules/panos_snmp_v2c_server.py validate-modules:missing-gplv3-license +plugins/modules/panos_snmp_v3_server.py validate-modules:missing-gplv3-license +plugins/modules/panos_software.py validate-modules:missing-gplv3-license +plugins/modules/panos_state_snapshot.py validate-modules:missing-gplv3-license +plugins/modules/panos_static_route.py validate-modules:missing-gplv3-license +plugins/modules/panos_syslog_profile.py validate-modules:missing-gplv3-license +plugins/modules/panos_syslog_server.py validate-modules:missing-gplv3-license +plugins/modules/panos_tag_object.py validate-modules:missing-gplv3-license +plugins/modules/panos_template_stack.py validate-modules:missing-gplv3-license +plugins/modules/panos_template_variable.py validate-modules:missing-gplv3-license +plugins/modules/panos_template.py validate-modules:missing-gplv3-license +plugins/modules/panos_tunnel.py validate-modules:missing-gplv3-license +plugins/modules/panos_type_cmd.py validate-modules:missing-gplv3-license +plugins/modules/panos_userid.py validate-modules:missing-gplv3-license +plugins/modules/panos_virtual_router_facts.py validate-modules:missing-gplv3-license +plugins/modules/panos_virtual_router.py validate-modules:missing-gplv3-license +plugins/modules/panos_virtual_wire.py validate-modules:missing-gplv3-license +plugins/modules/panos_vlan_interface.py validate-modules:missing-gplv3-license +plugins/modules/panos_vlan.py validate-modules:missing-gplv3-license +plugins/modules/panos_vm_auth_key.py validate-modules:missing-gplv3-license +plugins/modules/panos_zone_facts.py validate-modules:missing-gplv3-license +plugins/modules/panos_zone.py validate-modules:missing-gplv3-license +plugins/modules/panos_logical_router.py validate-modules:missing-gplv3-license +plugins/modules/panos_logical_router_vrf.py validate-modules:missing-gplv3-license +plugins/modules/panos_logical_router_vrf_ospf_area.py validate-modules:missing-gplv3-license +plugins/modules/panos_logical_router_vrf_ospf_area_interface.py validate-modules:missing-gplv3-license +plugins/modules/panos_logical_router_vrf_static_route.py validate-modules:missing-gplv3-license diff --git a/tests/sanity/ignore-2.20.txt b/tests/sanity/ignore-2.20.txt new file mode 100644 index 000000000..ea42920e4 --- /dev/null +++ b/tests/sanity/ignore-2.20.txt @@ -0,0 +1,118 @@ +plugins/httpapi/panos.py validate-modules:missing-gplv3-license +plugins/modules/panos_active_in_ha.py validate-modules:missing-gplv3-license +plugins/modules/panos_address_group.py validate-modules:missing-gplv3-license +plugins/modules/panos_address_object.py validate-modules:missing-gplv3-license +plugins/modules/panos_admin.py validate-modules:missing-gplv3-license +plugins/modules/panos_administrator.py validate-modules:missing-gplv3-license +plugins/modules/panos_admpwd.py validate-modules:missing-gplv3-license +plugins/modules/panos_aggregate_interface.py validate-modules:missing-gplv3-license +plugins/modules/panos_api_key.py validate-modules:missing-gplv3-license +plugins/modules/panos_application_filter.py validate-modules:missing-gplv3-license +plugins/modules/panos_application_group.py validate-modules:missing-gplv3-license +plugins/modules/panos_application_object.py validate-modules:missing-gplv3-license +plugins/modules/panos_bgp_aggregate.py validate-modules:missing-gplv3-license +plugins/modules/panos_bgp_auth.py validate-modules:missing-gplv3-license +plugins/modules/panos_bgp_conditional_advertisement.py validate-modules:missing-gplv3-license +plugins/modules/panos_bgp_dampening.py validate-modules:missing-gplv3-license +plugins/modules/panos_bgp_peer_group.py validate-modules:missing-gplv3-license +plugins/modules/panos_bgp_peer.py validate-modules:missing-gplv3-license +plugins/modules/panos_bgp_policy_filter.py validate-modules:missing-gplv3-license +plugins/modules/panos_bgp_policy_rule.py validate-modules:missing-gplv3-license +plugins/modules/panos_bgp_redistribute.py validate-modules:missing-gplv3-license +plugins/modules/panos_bgp.py validate-modules:missing-gplv3-license +plugins/modules/panos_cert_gen_ssh.py validate-modules:missing-gplv3-license +plugins/modules/panos_check.py validate-modules:missing-gplv3-license +plugins/modules/panos_commit_firewall.py validate-modules:missing-gplv3-license +plugins/modules/panos_commit_panorama.py validate-modules:missing-gplv3-license +plugins/modules/panos_commit_push.py validate-modules:missing-gplv3-license +plugins/modules/panos_commit.py validate-modules:missing-gplv3-license +plugins/modules/panos_config_element.py validate-modules:missing-gplv3-license +plugins/modules/panos_custom_url_category.py validate-modules:missing-gplv3-license +plugins/modules/panos_dag_tags.py validate-modules:missing-gplv3-license +plugins/modules/panos_dag.py validate-modules:missing-gplv3-license +plugins/modules/panos_decryption_rule.py validate-modules:missing-gplv3-license +plugins/modules/panos_device_group.py validate-modules:missing-gplv3-license +plugins/modules/panos_dhcp_relay_ipv6_address.py validate-modules:missing-gplv3-license +plugins/modules/panos_dhcp_relay.py validate-modules:missing-gplv3-license +plugins/modules/panos_dhcp.py validate-modules:missing-gplv3-license +plugins/modules/panos_dynamic_updates.py validate-modules:missing-gplv3-license +plugins/modules/panos_dynamic_user_group.py validate-modules:missing-gplv3-license +plugins/modules/panos_edl.py validate-modules:missing-gplv3-license +plugins/modules/panos_email_profile.py validate-modules:missing-gplv3-license +plugins/modules/panos_email_server.py validate-modules:missing-gplv3-license +plugins/modules/panos_export.py validate-modules:missing-gplv3-license +plugins/modules/panos_gre_tunnel.py validate-modules:missing-gplv3-license +plugins/modules/panos_ha.py validate-modules:missing-gplv3-license +plugins/modules/panos_http_profile_header.py validate-modules:missing-gplv3-license +plugins/modules/panos_http_profile_param.py validate-modules:missing-gplv3-license +plugins/modules/panos_http_profile.py validate-modules:missing-gplv3-license +plugins/modules/panos_http_server.py validate-modules:missing-gplv3-license +plugins/modules/panos_ike_crypto_profile.py validate-modules:missing-gplv3-license +plugins/modules/panos_ike_gateway.py validate-modules:missing-gplv3-license +plugins/modules/panos_import.py validate-modules:missing-gplv3-license +plugins/modules/panos_interface.py validate-modules:missing-gplv3-license +plugins/modules/panos_ipsec_ipv4_proxyid.py validate-modules:missing-gplv3-license +plugins/modules/panos_ipsec_profile.py validate-modules:missing-gplv3-license +plugins/modules/panos_ipsec_tunnel.py validate-modules:missing-gplv3-license +plugins/modules/panos_ipv6_address.py validate-modules:missing-gplv3-license +plugins/modules/panos_l2_subinterface.py validate-modules:missing-gplv3-license +plugins/modules/panos_l3_subinterface.py validate-modules:missing-gplv3-license +plugins/modules/panos_lic.py validate-modules:missing-gplv3-license +plugins/modules/panos_loadcfg.py validate-modules:missing-gplv3-license +plugins/modules/panos_log_forwarding_profile_match_list_action.py validate-modules:missing-gplv3-license +plugins/modules/panos_log_forwarding_profile_match_list.py validate-modules:missing-gplv3-license +plugins/modules/panos_log_forwarding_profile.py validate-modules:missing-gplv3-license +plugins/modules/panos_loopback_interface.py validate-modules:missing-gplv3-license +plugins/modules/panos_management_profile.py validate-modules:missing-gplv3-license +plugins/modules/panos_match_rule.py validate-modules:missing-gplv3-license +plugins/modules/panos_mgtconfig.py validate-modules:missing-gplv3-license +plugins/modules/panos_nat_rule_facts.py validate-modules:missing-gplv3-license +plugins/modules/panos_nat_rule.py validate-modules:missing-gplv3-license +plugins/modules/panos_nat_rule2.py validate-modules:missing-gplv3-license +plugins/modules/panos_object_facts.py validate-modules:missing-gplv3-license +plugins/modules/panos_object.py validate-modules:missing-gplv3-license +plugins/modules/panos_op.py validate-modules:missing-gplv3-license +plugins/modules/panos_pbf_rule.py validate-modules:missing-gplv3-license +plugins/modules/panos_pg.py validate-modules:missing-gplv3-license +plugins/modules/panos_query_rules.py validate-modules:missing-gplv3-license +plugins/modules/panos_readiness_checks.py validate-modules:missing-gplv3-license +plugins/modules/panos_redistribution.py validate-modules:missing-gplv3-license +plugins/modules/panos_region.py validate-modules:missing-gplv3-license +plugins/modules/panos_registered_ip_facts.py validate-modules:missing-gplv3-license +plugins/modules/panos_registered_ip.py validate-modules:missing-gplv3-license +plugins/modules/panos_restart.py validate-modules:missing-gplv3-license +plugins/modules/panos_sag.py validate-modules:missing-gplv3-license +plugins/modules/panos_schedule_object.py validate-modules:missing-gplv3-license +plugins/modules/panos_security_rule_facts.py validate-modules:missing-gplv3-license +plugins/modules/panos_security_rule.py validate-modules:missing-gplv3-license +plugins/modules/panos_service_group.py validate-modules:missing-gplv3-license +plugins/modules/panos_service_object.py validate-modules:missing-gplv3-license +plugins/modules/panos_snapshot_report.py validate-modules:missing-gplv3-license +plugins/modules/panos_snmp_profile.py validate-modules:missing-gplv3-license +plugins/modules/panos_snmp_v2c_server.py validate-modules:missing-gplv3-license +plugins/modules/panos_snmp_v3_server.py validate-modules:missing-gplv3-license +plugins/modules/panos_software.py validate-modules:missing-gplv3-license +plugins/modules/panos_state_snapshot.py validate-modules:missing-gplv3-license +plugins/modules/panos_static_route.py validate-modules:missing-gplv3-license +plugins/modules/panos_syslog_profile.py validate-modules:missing-gplv3-license +plugins/modules/panos_syslog_server.py validate-modules:missing-gplv3-license +plugins/modules/panos_tag_object.py validate-modules:missing-gplv3-license +plugins/modules/panos_template_stack.py validate-modules:missing-gplv3-license +plugins/modules/panos_template_variable.py validate-modules:missing-gplv3-license +plugins/modules/panos_template.py validate-modules:missing-gplv3-license +plugins/modules/panos_tunnel.py validate-modules:missing-gplv3-license +plugins/modules/panos_type_cmd.py validate-modules:missing-gplv3-license +plugins/modules/panos_userid.py validate-modules:missing-gplv3-license +plugins/modules/panos_virtual_router_facts.py validate-modules:missing-gplv3-license +plugins/modules/panos_virtual_router.py validate-modules:missing-gplv3-license +plugins/modules/panos_virtual_wire.py validate-modules:missing-gplv3-license +plugins/modules/panos_vlan_interface.py validate-modules:missing-gplv3-license +plugins/modules/panos_vlan.py validate-modules:missing-gplv3-license +plugins/modules/panos_vm_auth_key.py validate-modules:missing-gplv3-license +plugins/modules/panos_zone_facts.py validate-modules:missing-gplv3-license +plugins/modules/panos_zone.py validate-modules:missing-gplv3-license +plugins/modules/panos_logical_router.py validate-modules:missing-gplv3-license +plugins/modules/panos_logical_router_vrf.py validate-modules:missing-gplv3-license +plugins/modules/panos_logical_router_vrf_ospf_area.py validate-modules:missing-gplv3-license +plugins/modules/panos_logical_router_vrf_ospf_area_interface.py validate-modules:missing-gplv3-license +plugins/modules/panos_logical_router_vrf_static_route.py validate-modules:missing-gplv3-license diff --git a/tests/unit/httpapi/test_panos.py b/tests/unit/httpapi/test_panos.py index 0461853b3..01201c2e8 100644 --- a/tests/unit/httpapi/test_panos.py +++ b/tests/unit/httpapi/test_panos.py @@ -6,8 +6,8 @@ from unittest.mock import call, patch import pytest +from io import BytesIO from ansible.module_utils.basic import to_text -from ansible.module_utils.six import BytesIO from ansible.module_utils.six.moves import urllib from ansible_collections.mrichardson03.panos.plugins.httpapi.panos import ( HttpApi,