diff options
Diffstat (limited to 'ansible_collections/fortinet/fortios')
679 files changed, 19793 insertions, 5544 deletions
diff --git a/ansible_collections/fortinet/fortios/CHANGELOG.rst b/ansible_collections/fortinet/fortios/CHANGELOG.rst index 4c4fcae19..0d17e07af 100644 --- a/ansible_collections/fortinet/fortios/CHANGELOG.rst +++ b/ansible_collections/fortinet/fortios/CHANGELOG.rst @@ -5,6 +5,34 @@ Fortinet.Fortios Release Notes .. contents:: Topics +v2.3.6 +====== + +Release Summary +--------------- + +patch release of 2.3.6 + +Major Changes +------------- + +- Add notes for backup modules in the documentation in both monitor and monitor_fact modules. +- Supported new FOS versions 7.4.2 and 7.4.3, and support data type mac_address in the collection. +- Update the documentation for the supported versions from latest to a fix version number. +- Update the required ansible version to 2.15. + +Bugfixes +-------- + +- Fix the issue that ssl-certificate cannot be set in `fortios_firewall_vip` and `fortios_firewall_vip6`. +- Github issue +- Github issue +- Github issue +- Github issue +- Github issue +- Github issue +- mantis issue + v2.3.5 ====== diff --git a/ansible_collections/fortinet/fortios/FILES.json b/ansible_collections/fortinet/fortios/FILES.json index 337faea78..55ea5694d 100644 --- a/ansible_collections/fortinet/fortios/FILES.json +++ b/ansible_collections/fortinet/fortios/FILES.json @@ -81,7 +81,7 @@ "name": "plugins/module_utils/fortios/secret_field.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9bea3bcaf0be6ad9f00348e0dd3606812c4df7c1e1da61a58aeb810abe1d3f7b", + "chksum_sha256": "5b593961fc2471e5e2e138a2ca5faac8416e514f458c076a520c7f3a5e10004a", "format": 1 }, { @@ -158,7 +158,7 @@ "name": "plugins/module_utils/fortios/comparison.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f81bd10353196872dc191c4696431e2534de9d56a0732810e32486e39ccb9576", + "chksum_sha256": "6889e6d9f92b97658736b997b472c956c4f8380e9c450bae516a846c92f2516f", "format": 1 }, { @@ -221,798 +221,798 @@ "name": "plugins/modules/fortios_system_api_user.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "dd7e5edc521c2d92b777ae9addfc737816c8fef5e98938a131d52b006bbafad0", + "chksum_sha256": "fc4c5bf5ed89bdd8df0858e99543635c18baf0bc2f0206eaf6b05c3bd2a0c3d6", "format": 1 }, { "name": "plugins/modules/fortios_wireless_controller_timers.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "bbc986558d84076baa4c2b0a52e643d0673d18e19c0c0ba7e55161f9a634060f", + "chksum_sha256": "50313bdcf3488871fef6a8dc782854a268f56cc796adbb727aa2aa8571596c36", "format": 1 }, { "name": "plugins/modules/fortios_firewall_proxy_policy.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "effb40a0c126ab142ce9aafffd4dba9822fd8da47e074b7f64286ed824af4ff7", + "chksum_sha256": "3c094b0eed553167f91759d73aacdf2b0686b326525e1332b8c4238aa2267e21", "format": 1 }, { "name": "plugins/modules/fortios_system_dns_server.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "89bdb2cb1d24579a0c6069fed2a18b5e42f4aedd98608f46fa4a4aef94da18a2", + "chksum_sha256": "34acb5b6c482f49c0781594c2472a953e39c207267e19bd64dc92f03f4860580", "format": 1 }, { "name": "plugins/modules/fortios_endpoint_control_client.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "718569c11df47ba71c178af4e2b2c88cc34689b3801e5e40d2821c57c317c276", + "chksum_sha256": "9688f67c929bd21b804c809946e1bcc4cc78317f0bf8c459eda0192d327eca66", "format": 1 }, { "name": "plugins/modules/fortios_webfilter_content.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "20a31f1159fead209953e325db849c8f2cf7fa5a6915fe55cd2fb158abf73757", + "chksum_sha256": "b414da23c0c10e6d9477e836b5a2818330ad29a1e5e8cf7f399fd7813c8adbde", "format": 1 }, { "name": "plugins/modules/fortios_system_vdom_exception.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "6d7a92e961b393f0733a2c4e4827d77ec119d88094fb84f3f8207c927f04e1ca", + "chksum_sha256": "d442f7a84fdaddfda45fa5e1e60b84549ad03c299357178b0172778bc2be5d8e", "format": 1 }, { "name": "plugins/modules/fortios_log_fortianalyzer2_override_setting.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "df23f4800497d25696d122b898d6d343333140f657e76a546a4015d066aa5c22", + "chksum_sha256": "f5d47391e336b2e00c79ce7a6fced95f396b9c715404f3276222db81385c2a79", "format": 1 }, { "name": "plugins/modules/fortios_system_saml.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "43abbbb98d173e4fb33759f7842e652555a78562e8f61e83cb2a2320665b1e46", + "chksum_sha256": "d14495e6fd71f12a547d9714c273f702b3fc10abab59879a0fc59493eadfafec", "format": 1 }, { "name": "plugins/modules/fortios_wireless_controller_client_info.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a387891aa15e67a0c4d6445ec3fe2c530e0ee1c453b535561c2c4e7108c2420a", + "chksum_sha256": "a71632fcdf758fe3b574b8fa74326f9d4b0a784d34fdc72a28848f9e4352b611", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_sflow.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ec974acdc4ff5265494eee81e8da962b57b66dc20eaec73a3bc1e944dfdc4371", + "chksum_sha256": "4d3a2200950a8f586548f80d6f374126a1abb859421f11db4572a374f7530d76", "format": 1 }, { "name": "plugins/modules/fortios_emailfilter_dnsbl.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "7b70eb04b436ba759eea3808ae63b32195dfef508db8ab8a2f4743fd6fd8cf71", + "chksum_sha256": "0582b764857e7898e4cae12a09c4491a586144f2fe730e307f51e68fd06fa18a", "format": 1 }, { "name": "plugins/modules/fortios_firewall_internet_service_addition.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "63615269d4de40ad6ec6b84da986549c7ea866ac82ebeb07f919266a90deeeeb", + "chksum_sha256": "da82feec6fa403861e2201c9d7a881f2e773bf0739f482a534ea762bd9b7b97c", "format": 1 }, { "name": "plugins/modules/fortios_webfilter_urlfilter.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "35b0aeda672c901d7fdddeb7c65ef4c3bc95260aaf5ae1112c5fe3fc9b71dade", + "chksum_sha256": "1ac937be56336178a611c77cf6b795aee9160bc8a56a3e7237cf6e5fcd7b007a", "format": 1 }, { "name": "plugins/modules/fortios_system_probe_response.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9c309722a76a7b1695c4fd6925a3ee4a0dbad3298fccfbfdd62c89327e68c939", + "chksum_sha256": "bb322793a9de05e8a3bd1a7f57039905300dce18599792e3035e773ce6d80236", "format": 1 }, { "name": "plugins/modules/fortios_wireless_controller_ap_status.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "8df694b2e493d4ddef9b5725219da60e74619d37f3e5bbcfe20b3c578d7c01fe", + "chksum_sha256": "dffdb9cc3a4f48c9384d72621de5349ebb9d5ee1cff2c6eb7c31a6f374525220", "format": 1 }, { "name": "plugins/modules/fortios_user_peergrp.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "74a469484f74cef7c5a6fcef623ffd2125291a44c97d970b1035d59eae6c0ac1", + "chksum_sha256": "331f63a4a877e894a92c5adfc86710a36344ed056129bc3d712d994e854afb3e", "format": 1 }, { "name": "plugins/modules/fortios_system_password_policy.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "4e3fca1461ffe4058be3e256c5e368ab73b4ba0f830b91d272f80a1355fb07a9", + "chksum_sha256": "8ae4f17ad05ba30be056dee67f11883334ac06f972c825a3431ca4c3cd877773", "format": 1 }, { "name": "plugins/modules/fortios_system_geoip_country.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "b7819412c615a4f900dcdd7d2788da8f93d2a83c12efe5c163e47ad62fed7f39", + "chksum_sha256": "c24e424c8dd5180a38644b6f333334089bf05ef90dce6c9c5761fef7aeb22c2f", "format": 1 }, { "name": "plugins/modules/fortios_system_automation_action.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "4110818ef54692224186f3322084962f50ff930053b064b7630ba2f34df40b17", + "chksum_sha256": "d4440cbeba5a77804b9f27439994b609987f48102980fe61689f8ac28076b462", "format": 1 }, { "name": "plugins/modules/fortios_system_alias.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "eb62577bda049e70368b86955ca9ae9089c26617a3a708ce9e440b79bb3b95f2", + "chksum_sha256": "45ee07d0e8b817959a82935950d498a2c0554db0be673c86e6aee3ef62d7e3cb", "format": 1 }, { "name": "plugins/modules/fortios_firewall_mms_profile.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "1f37290f372a32b3986f25dd497f73eee559d7663365b514c6d0c7ee58bba3e0", + "chksum_sha256": "1ac1ebf54cd3843830f26270b4aef75f1363ccc1f36f2be0f098a75eeaed878a", "format": 1 }, { "name": "plugins/modules/fortios_system_storage.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f3c7d10b7bab2cb20865269333358d3afd64cc50a79452c7564e0189dd753613", + "chksum_sha256": "fc1717cc180106e0536f5abb72e9fd6de8a2673f795bd6e68cff55fee546206a", "format": 1 }, { "name": "plugins/modules/fortios_extender_controller_extender.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "17e253c7a0c13af1a83c2e9ba7f3effab48d726f6911dca7ac60e6032f09ae3c", + "chksum_sha256": "687090cd81028d8b80023440dfd46c022a828182c77875566924d4298fe6c9d4", "format": 1 }, { "name": "plugins/modules/fortios_system_federated_upgrade.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ad84d561dbe756715a1a9871bdb107af8802f2b28b6a7a039a21b27044e33ac4", + "chksum_sha256": "901292f423ef4ae391ed78fb3c945a988d06491c5c95280567c6aaf76f2b58b1", "format": 1 }, { "name": "plugins/modules/fortios_system_modem.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "849feca08b49b89379dbe3f28c1e35c8ffc84a05701709b46b06bc13acb8f7cf", + "chksum_sha256": "0807b9a6857464a0d92c55661463faec862448f5a753bbf59d20bc9489b6939e", "format": 1 }, { "name": "plugins/modules/fortios_gtp_tunnel_limit.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "8ef45386d725f48ce523ff8b002bb17b3ce33f07ef1bd41527155f23ca3b3f72", + "chksum_sha256": "9211389438d28bc253dc2894f819fb081ddec6b272a52dbd5893182216a66bf8", "format": 1 }, { "name": "plugins/modules/fortios_extender_lte_carrier_list.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "009a5e3725dd5a86cd0cd9f91f6ccdf62e314b69e8603d939cbacdb7f2fa2b03", + "chksum_sha256": "9a761c881e9457afbe938cfabb5a8b471a04285a76437cf7c05773687a369659", "format": 1 }, { "name": "plugins/modules/fortios_antivirus_notification.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "8e95be23b6c7c8a0eb846806570954c60210cb191332a6df558f31c5505d2e83", + "chksum_sha256": "8c371c19f23d847cf513e76b44e651f2cf8a9d2fde919bd335fb415af9e9408f", "format": 1 }, { "name": "plugins/modules/fortios_system_ha_monitor.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "8690ac56330e655cda47bfb2a8aa57141fc8033d137613342a1b4fd22d784d1b", + "chksum_sha256": "970887e396fdaa8d14decc533a8de42a2020972974204b243a3a1b09d221cc92", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_traffic_policy.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "aa88becfa91f45c0c143fd11f6a376f272573ac9068c8ac3965b2c6ec97998b0", + "chksum_sha256": "ea81c3eecfd8b4c3106790f791d5a1ed7489cef1f3eb17a7dfb11c5b9ebd9964", "format": 1 }, { "name": "plugins/modules/fortios_firewall_address.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "73294b37ed69587b2b78098f780142af90d63c975037c8ca39f7a2751722efef", + "chksum_sha256": "7a4f1d4a5e23ba149afe6307768e9f4ebeabc3bf64a21d9907a5960372222780", "format": 1 }, { "name": "plugins/modules/fortios_log_setting.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "439593676e498dcad59fd73bac99e35384bb7eff1c52e0052e56c1b629ec7ead", + "chksum_sha256": "c3426278da3de1b4c352c6abb72a608030b6cf905cad397665b192b5b025884d", "format": 1 }, { "name": "plugins/modules/fortios_wireless_controller_vap_status.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e751de9ed22c0a8f63e401df758e989d3d0296f3863bc47452063dfc452ef1c3", + "chksum_sha256": "4c5e95b00f9ded4f6dd7e438d3e867720ea8f74bebb30fd3bb5eb59b1d56b790", "format": 1 }, { "name": "plugins/modules/fortios_log_syslogd2_override_setting.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a35506233192c8a6ebd9e19a1db65d78edd184f6a6d0937f1263c926350a7de7", + "chksum_sha256": "1f97bace65c3754cb1cb948871de2e3062700b034f5ac139ba8bc85af6714e45", "format": 1 }, { "name": "plugins/modules/fortios_firewall_addrgrp6.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "5a7b14246043ae9ae19133518c45c7541a6ae63e04f58b2a0f1bd5f94d89cfc4", + "chksum_sha256": "b6595a64413100f6cf8452e6f3ad1e11302e60f02d461eb19872ae4d05b5d72f", "format": 1 }, { "name": "plugins/modules/fortios_ips_settings.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "0419029a5420c7b7efad382e72c2904c5fcfa8e13ef7f13d4e327c1878f53f10", + "chksum_sha256": "71c821570ea80482718b4ee945e19926e24cc8ae2caf4183ad287ae51b44352f", "format": 1 }, { "name": "plugins/modules/fortios_system_dhcp6_server.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "504851c5948dda377ed19187121ab653460c55f430a34a493b0ab3b0edb2a072", + "chksum_sha256": "94f6bb3c926e6f977b0715af350b3b5ae7e38016f0eeb1d93f080ee789f652c9", "format": 1 }, { "name": "plugins/modules/fortios_antivirus_settings.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "6007ed49c48d6ae886dd0884efb1627a8896f7c8bcf0cf46f67199aaf0b81ef6", + "chksum_sha256": "e746f9a1c83aa3a648560b0583035832211e4a41a2061c6fee9c6b721124ee53", "format": 1 }, { "name": "plugins/modules/fortios_antivirus_mms_checksum.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "45d853325b68a03f1e0ba9d772ad319efd64614f3fd3bea0a04bd7c5590b0201", + "chksum_sha256": "01f88ac47fd6f0d6a6c670b102050a050e164814edfceb3bec1540be1c2d0579", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_qos_dot1p_map.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "2c2b81e23a8c2c444411ff053740b4af586c2ec6af128ff43953e45832d2f632", + "chksum_sha256": "4478d2f9f0ec5be7ac3966c60153aaa28bfa125c2ccf5f822c0cbfe8effb35bc", "format": 1 }, { "name": "plugins/modules/fortios_system_vdom_property.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d31b7ee0e5a704d0593422b5e60323d221963b09a8a0a44493fa74a24a7fc821", + "chksum_sha256": "0ba413b216af86fcafb715842c6cb9928b68062a226752d8a5b6a1f4847afc0a", "format": 1 }, { "name": "plugins/modules/fortios_webfilter_ips_urlfilter_setting6.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "3dcb16468f93f5b0e225c1eca8af10ccbd5e8662481df326e333a2d530e9e0b1", + "chksum_sha256": "2face3427b4de2440b54d1efd1e18319383031b682551cc09dac2eea7da2b811", "format": 1 }, { "name": "plugins/modules/fortios_system_device_upgrade.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c0c2b52aa410de9d533f79bdf07eaaf9e293f7876e2478563f180c5017f353c6", + "chksum_sha256": "d4cf1ca58adf330b01907a8b42cf751ea04dc0113f5048e40733ee8051fbfd97", "format": 1 }, { "name": "plugins/modules/fortios_pfcp_message_filter.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "8a8f53495a80945a3ff5d6a6b68c98db92c03d3398e39d8c5aa4b07b0fc19f8a", + "chksum_sha256": "50f526f5218d0834741d98ed6910545419bcb4c1f82d89ff1ed688a97a41c1a3", "format": 1 }, { "name": "plugins/modules/fortios_log_threat_weight.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "6cf83cd4425f861ab4d7c621fec88b7ff9274bfaf91f13d31b6dd2ca5db9499e", + "chksum_sha256": "a242279977e39380057cb1c4e176de123f6d76e1ddea0d873024ece5014b83a6", "format": 1 }, { "name": "plugins/modules/fortios_waf_main_class.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "4865c0e04bfd72f363feb0849346d757db77c009595a6739f244ef1b26a69e57", + "chksum_sha256": "38feac3aa59b23abdddf7885ac7c2335d4777b8f4da31dc82d5d3a2a1db62888", "format": 1 }, { "name": "plugins/modules/fortios_firewall_ssh_host_key.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "6ae8b773f02dc9388b71cdc85998af471055c251937e3b7f0b3d6342ee349994", + "chksum_sha256": "22489c89646bdb1ee04b8e95a13d571f5fef9dd0a24dc7a28f26b440f3dc4f9d", "format": 1 }, { "name": "plugins/modules/fortios_wireless_controller_hotspot20_h2qp_advice_of_charge.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "4c6b16010e4ff40931d67b94a724e23c29b8de1620b7cb6fa67fc55ff46ad096", + "chksum_sha256": "94420f6b1c865f386dab4d90468836c84da7393dd79a69d3a8bb6d0ff18b2e4b", "format": 1 }, { "name": "plugins/modules/fortios_system_evpn.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "b3aed9799513e0232af75bb6b091c2e54651c355eb7ae09cbf63ed5cc415ff1b", + "chksum_sha256": "08606730bead4e7af26df1e39ace2033a464d00aa05df93c238379edffaa6b42", "format": 1 }, { "name": "plugins/modules/fortios_user_setting.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "6eecd18b9814d439e2e93d46a582d394178c0247f26445874c7549ec9fd72d88", + "chksum_sha256": "ceec56c9973fde68459ec8eb1ae4d802217fbbcb99d052ef4834950ea0a03170", "format": 1 }, { "name": "plugins/modules/fortios_firewall_access_proxy.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "538adfb6690787ab49df9d76bf9a7f0ead89b4b8d6c9f0ad68bc5fb4b12f5ee7", + "chksum_sha256": "d64bf452e126956f4d04ea65e92f2733f83cf846388b70d5c256ccd12814f7e5", "format": 1 }, { "name": "plugins/modules/fortios_wireless_controller_ble_profile.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ebbacb2f3837ff740c1eaf5bd0fdc52b940f42ba686fe106160c3a0124022ef0", + "chksum_sha256": "5bb4dd8164a2f67f8718107fb960efd55b9ef0f67b0fef93cff3148543ba155c", "format": 1 }, { "name": "plugins/modules/fortios_wireless_controller_wtp_status.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "4ead66fdfb42a3c9c60eb0b4045bba4f00d5ddc2f06c9cf5de16404d5ff7999a", + "chksum_sha256": "cce73f5436002f347e2762c5e28c69c8e53da18dd5c5aebc15acdc16717dcca1", "format": 1 }, { "name": "plugins/modules/fortios_webfilter_override.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "781c2119ba5ad5d278ec2287f297d1a49525f731e9e5fe280d281232919af393", + "chksum_sha256": "cd31364e99703f2813cb76e9a1122e91978874e302cdcf30561c096bd08b438c", "format": 1 }, { "name": "plugins/modules/fortios_monitor.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "3ff2cb047e9f75637946cad239504cc4db86d8043f07a9ca424b9dbb60650c8c", + "chksum_sha256": "10bf9b1274b814f2d312a99633c6c7525c2854a02d264106044e656063f56311", "format": 1 }, { "name": "plugins/modules/fortios_router_multicast.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "23378d626c1a42f284cdba4fc5d3184e8945ca7db899bf0e4d49b38e02d60fde", + "chksum_sha256": "3e913ce148c2752e560a59282ab5971120a796e8c3d6f285808cd2bc72517db2", "format": 1 }, { "name": "plugins/modules/fortios_system_replacemsg_icap.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "8aa1b93fa62cc10f1bb9187b653d3ecabd41dd4a797668569e7febc05aad4615", + "chksum_sha256": "9be2d49e6701e324597de5b66b713b68d328cb8562669528eadba7ff57a19a9c", "format": 1 }, { "name": "plugins/modules/fortios_monitoring_np6_ipsec_engine.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "186c94183221808a408d5f2afcfe55042f580353b98e6ac3368a63b12e2029ed", + "chksum_sha256": "569f58bec7bc908cc950de7ae509164a6f267b242e488d7609028c278dcb2a34", "format": 1 }, { "name": "plugins/modules/fortios_firewall_address6_template.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9e85c4191de5580db0fb8c2d9d58a47d9dd05abd3b42fe42fb745f3c8ac14516", + "chksum_sha256": "2ba30eedb0050d940102259e6784bbd914682724c7af118ca391c41749e7ed36", "format": 1 }, { "name": "plugins/modules/fortios_system_object_tagging.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "58be97f341f1ca232fb0ce136d74bdc5f12cf6535e2ad0f4aa7b85b5979c1cb5", + "chksum_sha256": "5052a193e16a219aa50b0cdae3a3441470dda0be97d6f1f991d3ae9ac63871a1", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_poe.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "3938ae8f064f65690781bc45a36d2dc0f019ef8bcaeb929a4f807f5df1d0d2e7", + "chksum_sha256": "d8f0bae556d98dc2c3277d127e6f6028228049e5f5753c2a8b6cac5624039d0b", "format": 1 }, { "name": "plugins/modules/fortios_vpn_ike_gateway.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "bf756164b3325e85f655cc9ca21997fb028d90757fe5ec1892d7e939b6653da9", + "chksum_sha256": "1f38fd7985f080b3c6c8289cd0e9526bd90b801ced01819e1f1d79242768cab6", "format": 1 }, { "name": "plugins/modules/fortios_system_fortiguard.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "4edd311cd7a68fd7c733bbfa977922f0d0989bd4b4624554e8405c676b64b596", + "chksum_sha256": "91001b8097516587e7d863e6494c3b52eee4ca038543d90653c3e88d6dfb6faa", "format": 1 }, { "name": "plugins/modules/fortios_system_password_policy_guest_admin.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "1013f3bb973b28c178d876fa366987d94de26d0284736788b07edcd82dd25bc7", + "chksum_sha256": "b084b12a735418049ed5e534ae04b0b2dd0018cc558b331a36569e45847ee86a", "format": 1 }, { "name": "plugins/modules/fortios_user_password_policy.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ea4cccc45a4261c74a59daeb9a59b8303053ade1684cbf253c29a12e1d888c0d", + "chksum_sha256": "2fcb2f9657d7ef66eaa3f3d2018de21cfd2a2bb86fe05c92251e985c977d0243", "format": 1 }, { "name": "plugins/modules/fortios_casb_profile.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "b177ed0bced6e2b9c9c0b258aee54c81f402085e054c911b6bb7f99ca58165b4", + "chksum_sha256": "5c9971cad0178f3188693ab6e747a0398c0b9b71b26db8630aa6d0f324ee213d", "format": 1 }, { "name": "plugins/modules/fortios_firewall_identity_based_route.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "10a2acec1283f30fd416e37d0813fc6f199a9568af51d82ed796c360a918aee1", + "chksum_sha256": "e760171a7a3e6d41ae50178a5dcd59c3f946f904bd1be56969f376106e0a0cb4", "format": 1 }, { "name": "plugins/modules/fortios_system_replacemsg_mm7.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e23bc05d94cf3281354dc7bec83f5dac592d4524a5d8f05a5afcd9e2af112ee5", + "chksum_sha256": "29fa3d99b1a24591b9acaa3bf87024da1f5981d03fbce96daaee0a5c3d7890ce", "format": 1 }, { "name": "plugins/modules/fortios_application_name.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f690beec05cce5dae99f38f8170ca712325ccd9860a8b3af2eb59209ba9fb7a5", + "chksum_sha256": "18561ed5414a453eb7422c43cbc9549db539d970e9055fd610acec560f54bd10", "format": 1 }, { "name": "plugins/modules/fortios_system_zone.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "5bd028dea4c2ab5576b8c97acc25dc97e9965daee26d7fa3927231106476830d", + "chksum_sha256": "30dbe654f6f882ecfed7f4c0ac4ab77ccac7da255a3d68615ed04b169d85b7a3", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_nac_device.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "207dd2d74074d7e8e2e4d1875ccacef85cdf90c5876cd9e2a12b8ffb4ba6ff15", + "chksum_sha256": "63789467156fe770831cc9f89760670155bf2069b4fa9bb43b69c55162abcd41", "format": 1 }, { "name": "plugins/modules/fortios_system_speed_test_setting.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "887588c26bf8e4525eb7b6d11995020d830c3a6a6ff619197cb43504d6f94543", + "chksum_sha256": "20c02e889e0f822db3bf2b2e861688d822ad6af1990fe3be39d3f78518e6ef0e", "format": 1 }, { "name": "plugins/modules/fortios_application_group.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a2b1b6a8a06cbf654808a97dc76538899ea2a954309cdee66165419cb486ea3d", + "chksum_sha256": "33dbce8c632a7acd0f8eda63111f5c5a0017f2363f304792c0f3ab0a424e780f", "format": 1 }, { "name": "plugins/modules/fortios_firewall_access_proxy_virtual_host.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "556d46d886d86c1e0e66e8a511100fc74b28dcddf46059ecd485d7b0af301023", + "chksum_sha256": "1af0a0a8b518dec40b1505e9f5fc280ca352ead5f51ae9f63f104fc8ae24859b", "format": 1 }, { "name": "plugins/modules/fortios_firewall_profile_protocol_options.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "670b5fc702071431439f9fc989d551b01dba3e8717f768c6995bccf179817745", + "chksum_sha256": "22d90d1813fbc47ff7ccd3336540a16c27282bc2445ab367804f4169f049927a", "format": 1 }, { "name": "plugins/modules/fortios_user_device_access_list.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "51a61c0fd9be6fd53d9211846aaa51e84d85f62af9a805086067e4b503d9f785", + "chksum_sha256": "13724a2af3a3f29531b456ffc08a954fa6f65c0c707aefad12ee1f490f8a15c2", "format": 1 }, { "name": "plugins/modules/fortios_monitoring_npu_hpe.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e4e0a960a28de3bcf40b3317c7bf1fc61d9b307714af4f9a5dcf60ed9de6c976", + "chksum_sha256": "ad90243c02d1d83e17c4c769acbc25bfb879ff23e1be61fb039cbaf8d3607c26", "format": 1 }, { "name": "plugins/modules/fortios_system_vdom_link.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "5760d7e9b24aad15d461d6ef0addb919cf9395747f653e581a86ec57a297af1a", + "chksum_sha256": "9751b009be2f2221d033ccebc4915ee24eed421a312ccf2310cacc1fb0d6f0a8", "format": 1 }, { "name": "plugins/modules/fortios_user_group.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9b7f228f952687d3a8dc712cf6a20a6196435640c318eb25312798e2d54ad048", + "chksum_sha256": "c0cb0cab1b0d396e4578e8678ed7686303e5d3709b50d8f1016da369c057d7a1", "format": 1 }, { "name": "plugins/modules/fortios_system_3g_modem_custom.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "1f0a969f3fd9b111cdf991c1699b7ce5acd558311748455e9e8e90d77b5065cb", + "chksum_sha256": "04ac97a312a5e35c86b95408a125596e14fa39473db678e7d719ed5c39919559", "format": 1 }, { "name": "plugins/modules/fortios_system_replacemsg_ec.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f1ad6bf0fd1c39bd3edbeac4df0f4ce883bf7317410884fcccdd970ee56a6aad", + "chksum_sha256": "3ca5aa7e3435200a5fc258bb2604a6ab1b409198a0b73b391e929958a68cc4ae", "format": 1 }, { "name": "plugins/modules/fortios_system_smc_ntp.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "61bfdadb4bdd15d4141ac48ae6ebaabd1fbd417a8ddaeb2aa461e0099497fab0", + "chksum_sha256": "5574fb73881397472a1cc03920626755bf5f9a3ce270f143850eb09d90c1a6a4", "format": 1 }, { "name": "plugins/modules/fortios_system_netflow.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "755ec4ca3e9e9b0ee7b5cd05345b30767f4b9f0fcec2e15078e8ae579a2b5294", + "chksum_sha256": "091ad4ed6e244cfccecbab7dbfa03ca23f5d3766178f8ea2056914854074a5d1", "format": 1 }, { "name": "plugins/modules/fortios_vpn_ssl_web_portal.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "57904e8ed4cff2a32a6eca69752bed1a6490c02ef7959bcdf60da5bff9a00e58", + "chksum_sha256": "b510807996e02a7ccfe635e4685378194741f2ae98595c56d5edb0feea6d0692", "format": 1 }, { "name": "plugins/modules/fortios_vpn_ipsec_fec.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "93bbeccacaedee52e2de50e2d0078cdb2d713f418bbc34f1c380f50ad6f3cbb7", + "chksum_sha256": "6a09a2812a456788b52a305794b75253274328c7175613888fa52ba2d5e2fdfa", "format": 1 }, { "name": "plugins/modules/fortios_vpn_ipsec_phase2_interface.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "06e0c35809b2d7f115bd0483be3c47f93eb3035d696ad949505901f1e8129862", + "chksum_sha256": "5289366b51f5765ff6c48048f70254b4c171e0872d4b81f79cdbac00bb787828", "format": 1 }, { "name": "plugins/modules/fortios_vpn_ssl_web_realm.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c4293075b37a16a9c79c5aaa2e77f050c1fea0a6d1ee9d2316c2e3083fe6aa02", + "chksum_sha256": "c8d0844b8682499e0db8cdfb667a559249a363d79cf8fe003273e57f15984b2b", "format": 1 }, { "name": "plugins/modules/fortios_system_ips.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "6f2f459d4c7f07d8ab850741e2b985d3a9637de6cc0d6da568b131bf7feb3dea", + "chksum_sha256": "00b535f52491f0acc4f1de5ca9d8623a0ad8eaa36f030e4c9f20f927b124044a", "format": 1 }, { "name": "plugins/modules/fortios_firewall_service_custom.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d93c275e8b4f180406eb9d03c4c8b506bf455558898273ae2e421cea0c4c2093", + "chksum_sha256": "edee215e347c0b529f8515f2b565582d2ce0f8daeae1d27860bc29270cb8b274", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_auto_config_default.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "fdd29cc32ac28d8627cfee8ff4330251de48943896924800d0222aec04c9d98b", + "chksum_sha256": "5079720eec5238ed387773184d6476a798710832caa9f7de66aa719b1d0eca03", "format": 1 }, { "name": "plugins/modules/fortios_system_automation_destination.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "4ff12fd40001de09f53b87ee1347d5d6d74b535c7495229500a17efc21eef094", + "chksum_sha256": "4ec8d441235321580bf20e8d2e3f297ad2ddead34d1785eb52a9f38d83fa6cee", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_auto_config_policy.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9f025626a5c7d386671892d12e3c60a6163aaafdab3a39e3d1abbc99b12cb0eb", + "chksum_sha256": "27a95736f276858f940fd0e29fc6a86606650ac371354ef2bc0e189d0443a388", "format": 1 }, { "name": "plugins/modules/fortios_router_bfd6.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "8bfef5644b5680c501d58ea084454dc2105a7edcd2e9b115c864264a4559f620", + "chksum_sha256": "25f21bae0c75a2abe1ee709101473d2b9d393047f0315a58074d7202d90d2dae", "format": 1 }, { "name": "plugins/modules/fortios_wireless_controller_hotspot20_anqp_nai_realm.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "05178d828698f8a73c162e20d03567b19ffb6fa1f225c244e99ca07612c09b6e", + "chksum_sha256": "027c3ea89c7efc0aef679899a8737d8235b582d1f605b9131819c080ed4ad1e6", "format": 1 }, { "name": "plugins/modules/fortios_firewall_shaper_per_ip_shaper.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "b248909058e1fb83fa358976897206ca97179a2fb8d697bf91545dec800ba424", + "chksum_sha256": "148846d752dafe70a071e57edc8229ec2db864d35e8fb0ba8be1e54193c6e2ff", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_traffic_sniffer.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "bed798bc7940866a0cce1e2b950fe4647e1379b1d8c932a93b24c6e332e0f9bf", + "chksum_sha256": "d0e54e09df2279f287e94beee12288ab78e57d9fd94ca23fb674497614d24327", "format": 1 }, { "name": "plugins/modules/fortios_wanopt_webcache.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "0830de076fa9a4a7002a311c9cc130943da3069dc4cc2d573885d7fbe2920e2c", + "chksum_sha256": "47a5f6436471e24463effa8e015d7a1e449dfb515d3c2cbffa0374ea46dd3706", "format": 1 }, { "name": "plugins/modules/fortios_vpn_certificate_crl.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "adbeaca1683537020cdbb8413265161d0e03b1303e122ac7c522b414dd1829b4", + "chksum_sha256": "1cebd60b39eab2b36ccd802ad7c3394ce3d79a595891f05d9a2805ee2f2d86f8", "format": 1 }, { "name": "plugins/modules/fortios_system_csf.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c519f2a530e47529a5d6d61a6c9174f2ece2da2b1975890ba68d25a7d1a6d510", + "chksum_sha256": "78a230b88bf82a523112a3a716a67ae373e63ad1c45c1078d43dc3517a5a0c1d", "format": 1 }, { "name": "plugins/modules/fortios_firewall_vip.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "70cee5d5d3657697c738ff5e339e8a7879d84cedb89987480a7b6f720ac0a5eb", + "chksum_sha256": "02a9a7d4c7452eb85ecc6879a8dcfba765ef91607dfa271fdcaa81b8c1c7f43d", "format": 1 }, { "name": "plugins/modules/fortios_log_gui_display.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ad99af3bf99fdd28e80af24f5e4ff026d57e7125abe950eb12d7f94cdcb364ed", + "chksum_sha256": "37b015aa38a5c2ef3afad923b6fa4412d9b8523bb9ed17f82788a4ccbb9772b1", "format": 1 }, { "name": "plugins/modules/fortios_wanopt_settings.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "0b15b066edc8abd9ab96b5724462148a6cfc83fc516b3e34890a1b1392636ed7", + "chksum_sha256": "dd6d65df2273da41c38b50f497ff21e515ba03a1f5b17058c2ce7a65f58c50bd", "format": 1 }, { "name": "plugins/modules/fortios_gtp_message_filter_v0v1.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "544bf975aa61033c3b0b2753a90a3325c7b2984a10d21d4b00cce4b8b459795d", + "chksum_sha256": "449e069d48cc173f89bd9efdb68b922d4b011259d8ab6e197cc01510bfb3861d", "format": 1 }, { "name": "plugins/modules/fortios_user_security_exempt_list.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "62d88c6c244086a82644703f7ae67fcba32706389b4e8bdacded8ff19c1f259b", + "chksum_sha256": "493836fd96791f329237a7ce32f85ab6c2b8841f77b45fb7e2888459eece4cd9", "format": 1 }, { "name": "plugins/modules/fortios_virtual_patch_profile.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "31d9008122af8b9a5358d689a02081b68a65fb3641aa85e0fb18df87b79b9a8a", + "chksum_sha256": "4bfa11326a8ad04c1d3109e0a25483065e8754514afc1b8ba66281fc9bef0d70", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_system.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d4d49f789ebd0d32f320de95e7af66d485eeeb8e5109cada3060fef93c1275f3", + "chksum_sha256": "5b02071b7e6565bb89b831b634706b965d2313174e01c6de7cba76af3866e65a", "format": 1 }, { "name": "plugins/modules/fortios_firewall_city.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "b25f28bc753edf969a1c1765b55ff92383dd1908e39164b3aba20d812cee557f", + "chksum_sha256": "92da9ffa999e3d277032a521c2a841aa44dd0432d9f93ec6a784ba40875a1289", "format": 1 }, { "name": "plugins/modules/fortios_firewall_internet_service_ipbl_reason.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f93f8ba457f731b06923d6fe9e12ab2690e00b5336843146eae5ec3ed6b5985b", + "chksum_sha256": "17ddf962b7a23520d9d94208171d4d927f73fe2119476de940f1a0f006cadb1e", "format": 1 }, { "name": "plugins/modules/fortios_router_bfd.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9d6cc05bd092d0d8d22571106b3fb0290aba3a47909496d504a8b52008d484ce", + "chksum_sha256": "e014a58323dc921aa838b7f958380054eb8579d88cae595630e8730877eb901e", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_managed_switch.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "4c53ce41e84059b415fa51fbb1f60c98ce841edf27a62e898cd1e9e01493a450", + "chksum_sha256": "64690c3d3b2df4a7adf8fa2b9808ae30e3dca080cee9361bd8624edd69500eb5", "format": 1 }, { "name": "plugins/modules/fortios_emailfilter_options.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "99004fc3b349dcb77ff1b1bf021b24e448cecd5ba60dc822f64f55064a8c2ce4", + "chksum_sha256": "02f50e814fe3eb740c95a14cffe4e327adc7404f1975fe3338be479fb9e8b6eb", "format": 1 }, { "name": "plugins/modules/fortios_firewall_ttl_policy.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "128508d50f79cc4a8ed10e698aedefe8b2fa857a21feba2adc06e2278a57bea8", + "chksum_sha256": "8f3303bdc589ba1bc96179297cc02e7bc0ad1fd8384e75543f7082f9c01461b8", "format": 1 }, { "name": "plugins/modules/fortios_router_prefix_list6.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e5ec88a17d26afa1326d68abb5d13a1b9899bf6dd10f409bda75635e59b24861", + "chksum_sha256": "182722befb258a6f247ca76d1b61ed3788787ee4092b326e5931e8909a416b66", "format": 1 }, { @@ -1026,350 +1026,371 @@ "name": "plugins/modules/fortios_web_proxy_forward_server_group.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d5dfc329f5d66a9d6f8cb3ae86c8e0c8bbdc29ceae214da06c58f3db78384caa", + "chksum_sha256": "0148c96446db7d260e0112a2ba1f38dda6e27c75f63136ed3dd0984a31914e80", "format": 1 }, { "name": "plugins/modules/fortios_webfilter_ftgd_local_rating.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "b19184e98c766ba72d919cd6afd9f6631a62cabd29eb3d0b2057db5c49e7a19e", + "chksum_sha256": "e48817c1a64c8d736aefc37f067bd6a7a476b2481d666c0b8360f1802b67d3fb", "format": 1 }, { "name": "plugins/modules/fortios_user_nac_policy.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "122868c8a4dda398cbe50fd5bf5db1896d6113471bbb2660911394dd7598e3fc", + "chksum_sha256": "cf49536c0855328cfd3134a5f9b77cade4ae4650a8598812fe027ec0dd9fb411", + "format": 1 + }, + { + "name": "plugins/modules/fortios_system_npu_vlink.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "8c7e8cd2d3629b72b14d07f614657fc293dc8e4b6a61da0d1e640647bff54115", "format": 1 }, { "name": "plugins/modules/fortios_firewall_wildcard_fqdn_group.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "06af7a37cba01f9aef1f0f262aa754ab257ca0e57ab856645393aa7b1f0c5e8e", + "chksum_sha256": "24d35fa834afc32542d92701a0985bfefec95145d666b824ea20ce2d99e13b4d", "format": 1 }, { "name": "plugins/modules/fortios_spamfilter_bwl.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e93886f065e79bfc18cd23408f56fa8c90c1f7e72faf17fa6bf2beb837564347", + "chksum_sha256": "742083fed80786f9f1b0189742453f6b20901e9a9b942e9a1f05b9c8de4ed478", "format": 1 }, { "name": "plugins/modules/fortios_log_tacacsplusaccounting_filter.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f1ac9284841520d9a7c56801cb7b1f123765166c8dd6e808545cc5178fa4a7d5", + "chksum_sha256": "46ab28693ffed9df74398880dd3ade82d765bea5957104cae84d3f99297614f8", "format": 1 }, { "name": "plugins/modules/fortios_spamfilter_iptrust.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ce82ed813853a8ab0e6235ef90bdec783dc55b09321d115af91c5f19705047c3", + "chksum_sha256": "71dd1cf5901a97ea4411addf38e4d27e1d11d4b07707d9a11fcf563d11ea44a2", "format": 1 }, { "name": "plugins/modules/fortios_system_auto_script.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9a591dd1bbebbacea4ada9d91b36ad3e4ef484ab73fcbbc53a6b7b451c7e8b1e", + "chksum_sha256": "5d6856facce0f42e881760ee6c793c9fbbb41fc55a1acbe291371395f6dfa747", "format": 1 }, { "name": "plugins/modules/fortios_gtp_ie_white_list.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e917a5569d5393c3ac87cb296c7b40f5ca3a673c4f9ca8ef449d9c90ffb01046", + "chksum_sha256": "3ddd54b783764d573bb66dadf8bfc2b3e9d75333b690eefc947eb0222db7c1a8", "format": 1 }, { "name": "plugins/modules/fortios_firewall_region.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "b8377348945fc2e8b60f51fe73cda50737e62e07f7d5b44a5dc50c225bf1ccc2", + "chksum_sha256": "24a70c4d3715c932c1845820bf18e87836f9f26b2fdbbbd808fb61315311f920", "format": 1 }, { "name": "plugins/modules/fortios_system_ptp.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "0ea0183fe6ca1ca560b6c84d18caa78d592999c3ca11245a94c6f05f5ad8bb48", + "chksum_sha256": "a520b839c55407fb3e5cf617ded46632b04a9ce9bbb2d6d6a75e9dc7cec3e03a", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_acl_ingress.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "586948fae811cfe86bee22377ef0f33f843786e549a8dfabca44f8efc6d656d6", + "chksum_sha256": "a2d23c5c397479bb8d71225e3ed58e700a6c6304bfcc76b60648077e7e2c1a95", "format": 1 }, { "name": "plugins/modules/fortios_router_ospf6.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "92cd9bb7cf5b80e6c1f05f3365fe3f4edea5101c8612511b0459e753f9e7d930", + "chksum_sha256": "81776bed1b6270f9d5421c7d7efd64a091f8798b690333f361101fc0d793a55e", "format": 1 }, { "name": "plugins/modules/fortios_firewall_policy.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "58fa717265cd45b28dd732ce3882893c9e771cf1b8ebbb7e3744c8eef089329d", + "chksum_sha256": "eac53924fb25a678e2e9ba8290d55257b0440ff670a52a8b320d599dea90085a", "format": 1 }, { "name": "plugins/modules/fortios_wireless_controller_address.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "3153aefceb665737ebb7a9135b52eb795e7551fc03ed4de6465d96f441c2667f", + "chksum_sha256": "4c5d89ea71d7b132547f7060085769087c5ece22b71e9625ceeab549ee0bcadb", + "format": 1 + }, + { + "name": "plugins/modules/fortios_vpn_qkd.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "f3f2a2c78e6c228a51a97e66ca7ac610837efc994beaf89a976397874831e7a6", "format": 1 }, { "name": "plugins/modules/fortios_dlp_fp_sensitivity.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "82a9825be1f77ca17a2c99d28712a8e27c5c9db375fdb4260140633554993042", + "chksum_sha256": "919ebe6653cac516c29a83614cc86a7031c03401e60dad658c0043c94e1d8b7a", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_fortilink_settings.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "69652c3b605995360642f76f55c64dc56ebbad048d6b941fe2582d6d402adacb", + "chksum_sha256": "b50b213b50a5e1ef700a16b21b3eedc0fc45ee85bd128465c94b3c14790e118d", "format": 1 }, { "name": "plugins/modules/fortios_router_isis.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "0fcd418670df84b6c91806dade8188aade2baaff96b8875eab20a16779171d2b", + "chksum_sha256": "7c965048b86913ca469da1c81933d63b547a3eeb1355ac25cfa33789e3254aca", "format": 1 }, { "name": "plugins/modules/fortios_firewall_ssh_setting.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "2e2ef6349523a30add0b189190f32b2b9eb4130f19bcb9d32ab2150ba397659d", + "chksum_sha256": "b6dad011ad9b65197d4b0694f8aee31a5caf9f5b1b28fbed31dad3eda6584c9f", "format": 1 }, { "name": "plugins/modules/fortios_alertemail_setting.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "0e9d0175c43d321b02e2f308e2682624ec03430c5002c8dcaf922e76ee8b1edf", + "chksum_sha256": "6320ad7b198adc656a4501aa7f2d49675640f2b25fc2262dee684e0f0ecabfbd", "format": 1 }, { "name": "plugins/modules/fortios_hardware_nic.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f89fc8e66dbbb25e1be01797f04479de4c7b44f897ef16c8f4709a2f06be3fba", + "chksum_sha256": "1c7edfb33cc96ddc6a5af06d06c83aa2667d81b647453c8a6ba861758fe36ab4", "format": 1 }, { "name": "plugins/modules/fortios_report_style.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9f2b1a2c5ec2158589f9c883f7ac3b81dd5f951573c6be8f3e521b9ecf0cd5c8", + "chksum_sha256": "a03d9578247e6a5f6219bcba819f3bd3a6fdd5dbe50bb4ca5a9a337f1ce3f3f2", "format": 1 }, { "name": "plugins/modules/fortios_system_autoupdate_schedule.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "900f4cb3c1ead3d6805ab5699ae8da26f4fa987888e38e5b1fcc5a119bcd54f4", + "chksum_sha256": "118336e0b3b79f2f20677b8bf87d27c0d50791d0c4f3193f0c32293f2998a38a", "format": 1 }, { "name": "plugins/modules/fortios_system_replacemsg_auth.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c4256ec4f451988ee432824dda8941ca0cab31575706e929524d0872661b51a1", + "chksum_sha256": "34af378cb292d7996e27743e83f8d935cafa7a88b5a598a136db1248f5886d2c", "format": 1 }, { "name": "plugins/modules/fortios_firewall_multicast_policy.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "208e712364f436af735538c43b48dceefd4869c57d43bf86e771d9c7beaac91b", + "chksum_sha256": "cd32c75d15324214e63b7beacc3a1191694cb542061318aa362abb6c7ec0f593", + "format": 1 + }, + { + "name": "plugins/modules/fortios_diameter_filter_profile.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "cd41ca526f3bb7073586815c6188f8688f36aed139cdf4e7222a5423e9514f17", "format": 1 }, { "name": "plugins/modules/fortios_log_fortianalyzer_setting.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "887a964146cd919a7872e4fb0e477143ecf61b6a287965cb746499dd5220c4bf", + "chksum_sha256": "e0318768b5da5f8b96e78d53a452a1ef39adb41b3a3695c8e3fdeb8ab1500376", "format": 1 }, { "name": "plugins/modules/fortios_antivirus_exempt_list.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "7740502d84fda7e39888eaa89055f05debc0d068aab9bf0aac553b4ebdc0ee93", + "chksum_sha256": "a5e2acf8b45dedd1fcac41c21625d1e7f50720680ae5151586f04bda5b21ec41", "format": 1 }, { "name": "plugins/modules/fortios_log_memory_global_setting.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9a052b19104e2914510a711e3ba891d2834cd63b1049116dc7e7d076d72f51fa", + "chksum_sha256": "44198d8c526f1c5c85ad716e14448f7006010e698dfbdeac2865b3f1d5278e7b", "format": 1 }, { "name": "plugins/modules/fortios_credential_store_domain_controller.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f0edccf6001c3c8a88851169ee7c0880a14eefa441d4b8a60277ca49d0a76d08", + "chksum_sha256": "e65f5ab28dd84b86e5968a3a132af672e3c3074ae6df5805d09b469e94847857", "format": 1 }, { "name": "plugins/modules/fortios_vpn_ssl_web_user_group_bookmark.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "b4cf8ca1e7db14de1ae0785167dcdbee29249c60179446aa87c1be86e812d400", + "chksum_sha256": "0f28542d6a3e20c1d27072a728f530e4f8aae5c794ec120f0ffc0ddbcfdccf0d", "format": 1 }, { "name": "plugins/modules/fortios_firewall_ssl_setting.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "57cb6b6e7063a98a59e28a1951f2b829b0bb4ebca531e2942d804336f3ea1996", + "chksum_sha256": "29c3aa9cc072e3592a0a14938d189dd18b9ad987930a142f25dfd8877ec4fd71", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_security_policy_802_1x.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "cb44f476a5b5af6b461d7bc0bab94c57c398102a3b2d624cb7a11bc0539bbe25", + "chksum_sha256": "1a3b99831b4d8126f7dc63203c216edb34a9f777b22938e0d944a3d879ee8221", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_security_policy_captive_portal.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d8a63e5c520bbc246c29d9694112cbe8cbddcec43294bf08cb7a086a8d3a832b", + "chksum_sha256": "bd1b25ed36a88a507f6d75e1a6315e44b47ea90b2bf3c269b4ab85bec8aa8c67", "format": 1 }, { "name": "plugins/modules/fortios_file_filter_profile.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "7ae523221e52bd4cf4de9733333d882dae1e5aac74fc7113745869fc877559ae", + "chksum_sha256": "181bc0f78df13d4283b6697d549ad4930682173943dfadf366e41735d94402d4", "format": 1 }, { "name": "plugins/modules/fortios_firewall_ipmacbinding_setting.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "eb1f7a44746f1ecafb93009fc4efff1734fa0c38223baa7e7c7761990eb211f0", + "chksum_sha256": "a224b361d9fc04a00eabca9088bb7b3acccfcae89ba5cd5b8e8518414a7c74ce", "format": 1 }, { "name": "plugins/modules/fortios_wireless_controller_hotspot20_anqp_ip_address_type.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "783a62729d382d2ee3c63813477165bff855f53a4ae828b47a9c2e1a8d87e7d6", + "chksum_sha256": "326e9847718801f86490a6a0f15155392a73499187cecec499aef69a3ea9fa76", "format": 1 }, { "name": "plugins/modules/fortios_gtp_ie_allow_list.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "143aac32f0ca451bff0e5857e3b836db13026d581e93fd8d3b78064e6e38dfe1", + "chksum_sha256": "30658bd15919e1ee812c08a4a5bb2c2e651a3efafc7159d3f0ac6a258b219a83", "format": 1 }, { "name": "plugins/modules/fortios_system_session_helper.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c45e73c453f4fb51e175de6a501c5d342290f0ec973058e44aeac08c10537e56", + "chksum_sha256": "9b886a6dcbbd4b4aa5253324d34d6958e46affe30cc5a1a3d8dd9f03f92bf966", "format": 1 }, { "name": "plugins/modules/fortios_wireless_controller_wag_profile.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "8dec8c7399c6c3ebe8a7970c0bdc0b27a333a99c990a2dfe3f05801d90079499", + "chksum_sha256": "6f1ecbf39a7ca907824981254512e5010d2d1065150ae61a6eefff6ab4d9437f", "format": 1 }, { "name": "plugins/modules/fortios_system_affinity_packet_redistribution.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "4cd6aede5a3cf21ac7cebda43895ec4dfd9642edc4da7e727a824cc681e0c975", + "chksum_sha256": "346c11a2d85e7e3f981cd739446cee1dfb687f0215888112c4f7504f998eee01", "format": 1 }, { "name": "plugins/modules/fortios_vpn_ssl_web_user_bookmark.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "3863ef18f696db2081562d855e8ab2239f889d6040320a1ff904775b2bfe96ed", + "chksum_sha256": "97410a87dc7611057107e3026946a61b231a071a330fc5a7b10eef55a1bc4f5c", "format": 1 }, { "name": "plugins/modules/fortios_system_custom_language.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "8417377fb79c864a1a2e302b9070852aa80b6d99b665ecaa06cf2f5aad96df93", + "chksum_sha256": "597ade28b627548c02cf0ad4dc3654d7ef434564eb9612cea8dca80701a3b50d", "format": 1 }, { "name": "plugins/modules/fortios_system_automation_trigger.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a256a2e473acb57d1a9d72f75c00113c3dbd4cd30ef8201faf99537494256d4c", + "chksum_sha256": "b5f336f0692e45e555d28176f295b479278958f5616b39745600ffcfd4ea7d46", "format": 1 }, { "name": "plugins/modules/fortios_firewall_ippool.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "57c444528f4665273e50c2e3e10de656ad7177ac30ce052df9ec2bac73e09173", + "chksum_sha256": "a18dd1898e22ef0c25fbca209625366ebe34ab6d92cae38f3218cc2bc1fc32a5", "format": 1 }, { "name": "plugins/modules/fortios_system_central_management.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "decf0d64134ce4899ad7b7febf75892f9d9edb7f9c1b83ead90f14f89b913d76", + "chksum_sha256": "6ca36e055aed4f7393b0b44fd0a231637b7043f47aefb72b1372dafcd826c6fe", "format": 1 }, { "name": "plugins/modules/fortios_firewall_ssh_local_key.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "42067dd868c794ec8be708f40e629807bc52b62d3a65c8b87c49bfb854981acb", + "chksum_sha256": "dabe5f157a334ab98b56d143904e9bede29957920779e40e94d959a1f7a8532e", "format": 1 }, { "name": "plugins/modules/fortios_firewall_vip6.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "826aa050d5242f637a7f7e5becaf3e322f0db1d0af4695a83ffbc71a36cb0c74", + "chksum_sha256": "b15db0a73d5d488d4ee5a17645edc2922409a8bedff8e083c584c4e864ed0008", "format": 1 }, { "name": "plugins/modules/fortios_router_ripng.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "cf34dee2fd1da4d231f816bc5fa5b2261e34476571e360ab308fffafa6d4a3eb", + "chksum_sha256": "69cecdaacbeae322f00eaef9b8b50a5e9e28265324ef17f44b6a039372a9f466", "format": 1 }, { "name": "plugins/modules/fortios_wireless_controller_hotspot20_anqp_roaming_consortium.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d816b1be406ffee4f6c5f692e4a3dfd26ae269dad07be29edfb139dded6e7cbf", + "chksum_sha256": "a3f9c67b3a04a309ead2f475342dc58c817f6da853d86b4effa237ddcf4e0057", "format": 1 }, { "name": "plugins/modules/fortios_vpn_ssl_settings.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9011c1e5f487d829012ddd04f510bef57338d8ee2df629ac4c65bf7ae902f573", + "chksum_sha256": "8589c9fe9edc58f119e57348bd6793212aa666b4a8c54c5de53ca4249b3ca0e4", "format": 1 }, { @@ -1383,1365 +1404,1372 @@ "name": "plugins/modules/fortios_system_replacemsg_nac_quar.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "902b0e7ae24c6b53ab6572f0c61e4a32b8c2a6b936579651f4d938ce7cef8122", + "chksum_sha256": "01170b5c04cb489d2340e0605ac5176d4cc99276a44ad51735b514a556933f40", "format": 1 }, { "name": "plugins/modules/fortios_wireless_controller_hotspot20_h2qp_terms_and_conditions.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "2acb9b4f74d3e26e7b7c11ccf2165d76c884b30e4696048a565807a562de34f6", + "chksum_sha256": "78e9a426e7d39ace052cf67ac409ae43bcd948d42ea7c46ac9234671eda6c7fa", "format": 1 }, { "name": "plugins/modules/fortios_system_nd_proxy.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "4a8c8ffa81fdfcca35a8ed4b9a711d0f537635348cbea93c3458f303654ddf9b", + "chksum_sha256": "a381bab05c2f2949854a08a90e8421c6fc08e49dc52d7d1a170b382f4d26f6aa", "format": 1 }, { "name": "plugins/modules/fortios_webfilter_search_engine.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "8a397ef3ac5fe72ef99975b9b0002c758ec8985a77efcfd4c88b79afdfb917d4", + "chksum_sha256": "e54976ebce40bab2c44fb152fa42cc6a05bedbfd50fcd7bc40a6157b8e4f184d", "format": 1 }, { "name": "plugins/modules/fortios_videofilter_youtube_channel_filter.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "3475f5100a23f5838e2f4f2e00b43a5f921da4d74d486608e890afdccdad855c", + "chksum_sha256": "f96ab954ea6e9354ade13ca329868fae9b5cf197ccb2aafb7af8944325760c61", "format": 1 }, { "name": "plugins/modules/fortios_ips_custom.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "1c4941abe49c4b73b1aa61f6641177919b13bdf8bd3dc4ea34a5a0f8b13fedfc", + "chksum_sha256": "1f9ac0dfd9941ed147c61f2747037a2f1a398c9ae806d81d88c9f69048bf7405", "format": 1 }, { "name": "plugins/modules/fortios_wireless_controller_rf_analysis.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "299b5ccd12d3579a1ddabacf6599df1e47b5982ba6ab8c3937d94e36071f0cc2", + "chksum_sha256": "37d9b6d6982a82f165a8b38634bab8d727b9c8aeaa8ca9deae26c80f72871a92", "format": 1 }, { "name": "plugins/modules/fortios_log_syslogd4_override_setting.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "26a57975f3895079d6c7cc2a10e93e832a9627f5337c6a7d4cbda17bedf8e172", + "chksum_sha256": "0ca48a40c130aba048c8ae6204c1f8c4f3cec0c4fda39645ea5c7e343ca936d0", "format": 1 }, { "name": "plugins/modules/fortios_firewall_local_in_policy6.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "0cc5147b88c31f8ee1cce04b3691375c162314b75ec68fcc5fa2219dae383c60", + "chksum_sha256": "5589af09c9c8e71f5005499df022c19a368b09532ec124c74ca2bf5b5c20ad99", "format": 1 }, { "name": "plugins/modules/fortios_system_replacemsg_mm1.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a1bc847f33fbe26b1ca34b5de2b8f2f168068cb14c69a807d3f23b4435d13567", + "chksum_sha256": "9f7332d7fc10e806fb568904e91ca34ae2f9c980d025f1fc730d3ea13d512932", "format": 1 }, { "name": "plugins/modules/fortios_wanopt_content_delivery_network_rule.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "85df28da6f1e52811e3ca51e6d1462c15f4eb3b2e890c38c5e9ea6dec4304223", + "chksum_sha256": "165991a4819631f73465a91db5b28e8171374b755dad949f2c87cdbbdb4c6a5a", "format": 1 }, { "name": "plugins/modules/fortios_ips_global.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "3c82ec778c4b098e9c874db9e6bba11e27bc28f1b8925b33e768ea2135706881", + "chksum_sha256": "f527ad98a8656cfbf0635999aea87371957e052c350bfe8e80efb1f6ce194704", "format": 1 }, { "name": "plugins/modules/fortios_report_layout.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "6d37df914b8036c01dd5be4781ab670e50f5fa0eb5de4557e63943b149ccbef5", + "chksum_sha256": "7569c55cdb4ee61a776e5cff4fb7cb8ec2e4245b5e8593327bdbe7c76655ccfe", "format": 1 }, { "name": "plugins/modules/fortios_log_eventfilter.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "cee0e4db54df8158c9de8d6deec85d1cb824d46594457405781fe9a6bf69515d", + "chksum_sha256": "a371ae91931cc795fa28dc09c81c6e44596421c15570223a44dcfedbfecdfe28", "format": 1 }, { "name": "plugins/modules/fortios_extension_controller_fortigate_profile.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "3b072d5b1887957f088e187f8254206e9001f7a8354f82943ecb8800c1b08f0e", + "chksum_sha256": "07a087918b7d5063fb729b34478366f7fb86cf590058bd889c5e8d1fd6a25a2b", "format": 1 }, { "name": "plugins/modules/fortios_dpdk_global.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "2be736ae79e2d71c8a494820f4e94b7cea94864bd2688fbb95e953447d10f9c9", + "chksum_sha256": "10b3a5b2cfc8e17242e007a0f20fdae438d70f1ee63075e8eb2e90afbbc9d20f", "format": 1 }, { "name": "plugins/modules/fortios_user_local.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ceb8e0350d1a4845e3a09b44e6d40d3ca2ecb8649f87a4fbd17500d62d7d3054", + "chksum_sha256": "836b2d829435547ee9c437b9b30b2bae468f5a143d7b3bcd6a18bc65acc528ff", "format": 1 }, { "name": "plugins/modules/fortios_system_auto_install.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ee35dce8fcf95213214b30ddb9f9e55b0b0d0e5455d8c8efd2b3652eb1d85560", + "chksum_sha256": "2a57bc9278a8ce7b689e33e2e6aa7f2ca20cce5d76cee0d58e67712a74c1bc06", "format": 1 }, { "name": "plugins/modules/fortios_firewall_wildcard_fqdn_custom.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d203182e20828c479d4d5b4c8a90cc54f9bd0e218664be02197ff0022895dc84", + "chksum_sha256": "efce750f732e05a68385a4c080e1ff8a6780c44b090c9d66dfaaea29a44441e6", "format": 1 }, { "name": "plugins/modules/fortios_wireless_controller_hotspot20_h2qp_conn_capability.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "91a03eacffa374c341a1e4d0119bc29ecfc8a7f0c32e7892b9d2d75f8db5e7a6", + "chksum_sha256": "3846b14505a0918d5f518a149b88809f0bd3ca37b400449f3ad054e6d76c5107", "format": 1 }, { "name": "plugins/modules/fortios_vpn_ipsec_manualkey_interface.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ea99c9cd124a91ef1a4d93d51462b920acb0bee94d36c8a1834577794b5b7749", + "chksum_sha256": "d5b22f4b64c8c6321dcf0d4b6c686acb2dbfb0842b7d0d0b6d1975715832dd70", "format": 1 }, { "name": "plugins/modules/fortios_monitor_fact.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9d5dbb9c5c968269e7389e681f0d99cd9b5348338bda942a6eb4e34d5c94a9ab", + "chksum_sha256": "26f2865011183343d9e7e824ce445ef3e0b4d6c4e685074eadfe77ab82421345", "format": 1 }, { "name": "plugins/modules/fortios_router_static6.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "823fe5fadcb1b2b15d66a4570715bbd10639d44c8b18018a18e294d2de6badda", + "chksum_sha256": "ba46ee581e53e3e140800e78809a83a6cbedff2a7cdfb72e1c8addbdd53a5ef9", "format": 1 }, { "name": "plugins/modules/fortios_certificate_crl.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9fdbc154d18117a7e4608851cebbc4b815d47e73b51990b961363f051c15ac4e", + "chksum_sha256": "c5ac5310e239186994543c14a1065feb026ec751b96c65470818f755621cb24f", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_switch_profile.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f0ea02ecdc5cbfb9203d6f387a16321392b412a6892844c71000047c83027bb6", + "chksum_sha256": "560130a7a7621b8854af4c10ec287b05863dc1595ab454fc88dd9808428485dc", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_network_monitor_settings.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "b4976b74f49b0af1e070b68b46c88a5e303e76a55f83be92d1a962652daafece", + "chksum_sha256": "5835c583ad3b3f1587e79e7293ee5aa218e8059ba46218c7f1e3377184edd3e3", "format": 1 }, { "name": "plugins/modules/fortios_firewall_vipgrp46.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "4b6ebe842c94a3c46ec3c50832d59a7f8d51e10316fb66b76c6691bd49c9c1aa", + "chksum_sha256": "d99f8a1b2757fde44718d8403a1e65aa1b4e13412923deb300f9b100052c5dd7", "format": 1 }, { "name": "plugins/modules/fortios_log_syslogd2_setting.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "2f97249fcc3df8e80218322b6122b85bcac9633765d295275dbac61daf064f8a", + "chksum_sha256": "3e83e0f5e90089bfee83750546e7976b289ffd3cd37e419248bfc172934b6d88", "format": 1 }, { "name": "plugins/modules/fortios_emailfilter_bwl.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "40b97634abf021998342a84677563edbeee01574893ddc9edd33914fa48d6764", + "chksum_sha256": "a81d13ea6ea09cd4a8f58f8ec7202f48eab347628545d4b8f4f5bdd4fbe6c89d", "format": 1 }, { "name": "plugins/modules/fortios_web_proxy_forward_server.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "63eaa68d29aea4e25a9b50cbe3243b50d2ea4e2e436d3eefd256ae67abfe42fb", + "chksum_sha256": "2b4ce5e774ddc58bcfaff1515622852cf06403044e0eddbf7e200bd6a5af0bdf", "format": 1 }, { "name": "plugins/modules/fortios_system_ipip_tunnel.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "377a2ec480fd6b315536c3ab70cb4b8fc45e5bd7a2098c20d94edbf7e3f46226", + "chksum_sha256": "a6347914c112092ffdc052240d2329694d7dccbcc6fad8993bb473f645d83a8a", "format": 1 }, { "name": "plugins/modules/fortios_system_geneve.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9b733e960815524fe15ecd9cc9aa69f5bc1497448624364bf24b6f248cb5bea0", + "chksum_sha256": "e3178db928d48a330df8444a86cf7a0cf6801012790618823b4d17cb51cf570d", "format": 1 }, { "name": "plugins/modules/fortios_dnsfilter_profile.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "dfddd11239472156435ffdbc5cee850fa853e66e35d5947bb29b79c1b4d3d507", + "chksum_sha256": "a477b8707b3773d19d7ef1bc0fe0a6ede6dc1724bb38fe696f20cf379208cb67", "format": 1 }, { "name": "plugins/modules/fortios_wireless_controller_inter_controller.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "36add1a597f71905659a9e77c2ffcdbdf73ff7b2975c994c1eb6f9dde51a9707", + "chksum_sha256": "b28b02c9130eafacbd0cdc7508700bda051ce4403e5efd2c0185171c42d73945", "format": 1 }, { "name": "plugins/modules/fortios_dpdk_cpus.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e77eda04d82df4f85a7ff361da311de00740d96e2a3d9eaf7bde9c283701b304", + "chksum_sha256": "0b68233d25a64e2b71eaa7f0200ac6d6b2fc67c61f539d03ff8408378efcdae0", "format": 1 }, { "name": "plugins/modules/fortios_icap_server.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "cb8d5431a8c795f83fdc2b5eddda09f7653bf60868fa0c3ca058185bdf89c8d9", + "chksum_sha256": "d1d980263dfcb035d07f9adf315918176bf7aeb85aad593eaf6a2d14cb7ad726", "format": 1 }, { "name": "plugins/modules/fortios_log_disk_filter.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "17cba6643e9cc06ec7e1ebab0f5bc84b8c3f9eb630b59722fc8e9b2b12897aad", + "chksum_sha256": "e3d63de1d1e2cc9d77ac868453942bb7b64639d02f8a7589a7d1af7722f7d283", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_vlan.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "710b9030c1f04a47e852f1d654430525594ebf65e9e50205e92f62f9846e7828", + "chksum_sha256": "8aebce3cc77393e87a9fde311b51981cc53305f3eedc6b68b5b01ca0dcc37d52", "format": 1 }, { "name": "plugins/modules/fortios_firewall_ipv6_eh_filter.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "7cfe0ea64bb7c42127e7f99642ca4967925e74263b469b0e0559f465c8e57666", + "chksum_sha256": "4729a7b3bda8651c7e9360536dd825eec049d0e46cb6438a1b73374e64ce4436", "format": 1 }, { "name": "plugins/modules/fortios_system_geoip_override.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "46ca8e6e7da454dfac0790c508a13313da18c586f9bd22ee4f981f402e5e0cf7", + "chksum_sha256": "f098f0ad04727c939e25d8536f00a7aea10698a653da5cf8bb684dd2ec0dd307", "format": 1 }, { "name": "plugins/modules/fortios_system_replacemsg_mms.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "151589469fac412fa116ed330986165acf6fcb254a4ffd5af399620b8e136a97", + "chksum_sha256": "f777cbb56c93a0335abd5dbfb4253bcaa7571cf6c73536e1f63cfdd25bc56780", "format": 1 }, { "name": "plugins/modules/fortios_router_extcommunity_list.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a4e7e77d228aaf300fa718360ec80a96ab6a37f4ad78884b855633158db4d20b", + "chksum_sha256": "699dcd3964336ff20d51a0a1a7361d63538ff9473fd23b39a8866bd36726109b", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_lldp_profile.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "5a717b33b8e04479cd52d40955a6f1cb4397825bd9f1f08cda7de2e806cf5ac2", + "chksum_sha256": "74428341c5a699cc9c5a342f812c4bc5ed0f5633d00a8879c0ffe96d85a6b935", "format": 1 }, { "name": "plugins/modules/fortios_wireless_controller_mpsk_profile.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "88643f635212cf4c222ebc9a013d582acef2d00999ec41ca38914447244ef1d0", + "chksum_sha256": "1feca1fbf44c2c3334caadc52b3c31de07cac12c7e5611c3d5dfd70c3528ae62", "format": 1 }, { "name": "plugins/modules/fortios_firewall_auth_portal.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "06b1fcb3ebdecb93f6bb34adc96aae3210df54545cbea60328d5daadbb8e2d52", + "chksum_sha256": "2459661b5f1422c07a49bdf17b7d1a29d2ef40ea0f29c2a4e62d391abc2f3aac", "format": 1 }, { "name": "plugins/modules/fortios_system_ipam.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ee810529dd01c3a4014ecfa653f1795f1658fbf888ca138b6b89161a3b0580e3", + "chksum_sha256": "0335375f75319521c490404bce8c49bff5ed9b7755199366adf6a76b83f302e7", "format": 1 }, { "name": "plugins/modules/fortios_vpn_ipsec_phase1.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ed819ae6c7cb5d0c5593bf6eadd9775a6189e9ed98b02f92efe10c1227da4a2b", + "chksum_sha256": "eed4f908f3f0ed78385a4fbf2eacc3a16dfa0690fcbedc6e26288ff573f0ef42", "format": 1 }, { "name": "plugins/modules/fortios_webfilter_content_header.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "44d6ed09dd247266d6365bcf7d9e6b739c5a462d05feb0cfcee0b5034b417abb", + "chksum_sha256": "8d8b16ce6022261dc7ea967af15dec8d9ae91fb41445d72d04ad6699b3082867", "format": 1 }, { "name": "plugins/modules/fortios_dlp_sensor.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c6e5b4c7bf4e894d4e125f05c03de3bc3a0fb5f12088cc2c3d6379600c6606c8", + "chksum_sha256": "b1559e932964eb3ea70037f3e83b00e618bdc03381039a2d72aa018c5e7dfd73", "format": 1 }, { "name": "plugins/modules/fortios_gtp_apn_shaper.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d691bbe89d81b45178af60ea53f05449300c0470bb599abd853b60a8bb8e034d", + "chksum_sha256": "cdbee99573b608551d15852d8e78a7317f175025e0c4b77e51b4052eab7faf7c", "format": 1 }, { "name": "plugins/modules/fortios_sctp_filter_profile.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "204360fada1efc486b094416967fb44f23955309c0a107e0215db4d2a4b76537", + "chksum_sha256": "9bae1fa8e6e600a7e86e8ca81d8faca59ac4877cc7c99f02fec3034513e252c2", "format": 1 }, { "name": "plugins/modules/fortios_system_replacemsg_alertmail.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d0cdd3b29da6ee8f2ce4b64f62b31a9c49e5cac0a2377994996acd6592c2af0b", + "chksum_sha256": "a7663bd69187719cebef069757407d513ebaac73bcd2f1939fafeb87ed9b5fb2", "format": 1 }, { "name": "plugins/modules/fortios_wireless_controller_arrp_profile.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "6cb46f577272efd29b0b7dd602e2dbe2da513b1ab3bd60a8f8acd6d3a7fa9ba7", + "chksum_sha256": "db4962b2799142db25ef0c360301f4c0c696d5c2e36abdedb24fc84896de8cf8", "format": 1 }, { "name": "plugins/modules/fortios_wireless_controller_hotspot20_hs_profile.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "86babdb059891e23e66a8c2c4a9150e9be7c7fea69a8b127ddca88ad43b382ec", + "chksum_sha256": "07407d86bcfdfc95dc4a98bfdf3eb3499e60257f2612a0b84e4f3d300c9f1480", "format": 1 }, { "name": "plugins/modules/fortios_system_replacemsg_device_detection_portal.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "295e85f128d6a10cf5a2fff65ca0454433ebf86372232dbaa011f6d0853ff308", + "chksum_sha256": "4c75035d6bf9c18ae6d85f21ab9a9389aa9a742978634af24bcffc337ab37b2a", "format": 1 }, { "name": "plugins/modules/fortios_router_route_map.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9f175fd2472701939e6c4756105333b2a8c47650e2e2da039011dafaee3af526", + "chksum_sha256": "2cf0c99469a8e3c5a9f3c6d4d014e493d0bb932583a352c739db48159f94f748", "format": 1 }, { "name": "plugins/modules/fortios_ips_decoder.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "0300046bc90864d6debbba284907eb89d2ba78dfe55ed132d8009eaa50f639ac", + "chksum_sha256": "e7e13eeb452384b0d01806eb401e55b8ce4456e9aaf33369ee71b41dcc9cc96e", "format": 1 }, { "name": "plugins/modules/fortios_log_syslogd3_override_setting.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c7951d3e86caef295358336546d6dce0bae2656e5a3a4c95f9d589867457eef5", + "chksum_sha256": "ddfa9e5e845b919144b7e33b7bc824e92ac59cd6663fa64fc9be8b188529830d", "format": 1 }, { "name": "plugins/modules/fortios_system_virtual_wan_link.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "226753943cb758c2e915b0796dba194e5fb9ded9d3c9fb8b896c274f43c9ab80", + "chksum_sha256": "0f4ce79ead4a3801a331673fbe1a8dc6d878f58d46e1112c5b1664a652e9cb70", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_dynamic_port_policy.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "6e595bb10bad8a0c0a3c71577138989d372f00f164aa38c1cf6f65c3fdeb9c5b", + "chksum_sha256": "5a7ce327a5dd51d3bd1ff82e856e0eefedc3fae9a1255f8ae1eb4d27237840d7", "format": 1 }, { "name": "plugins/modules/fortios_spamfilter_bword.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "10a4c008887c9fd64e0f5744165341f21f279cea04eae5a10ca626a14730bae6", + "chksum_sha256": "005f07d50d7f2894dd084d0e165dd9b7929cb7210256227e8d5973a37437ac3a", "format": 1 }, { "name": "plugins/modules/fortios_nsxt_service_chain.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "2fc37326c994d6856a97db6c2465156f8b6616d1a7a9a284eaa016434ec2a328", + "chksum_sha256": "9022483a3997900262d2014ea4ce242d232e67dcfd96ada5a5ce5b1ca144921e", "format": 1 }, { "name": "plugins/modules/fortios_firewall_traffic_class.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "2cd5631bd359bd9457a745b36ecf087f4a96d50a2fa201c5dc86d053ba2828b3", + "chksum_sha256": "6961a2eefebcdf0b0dc56813a5760bcac362af100080e800f5b7a6971e3cdcdf", "format": 1 }, { "name": "plugins/modules/fortios_extension_controller_extender.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ea2ed96c7e747f545549672f9c028be9b199ca0f57ff8c8e07db7827705ad2be", + "chksum_sha256": "03d7839a45f47093175f04ac45cb02b654cc842be24896900a8c5866e364b252", "format": 1 }, { "name": "plugins/modules/fortios_firewall_network_service_dynamic.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "7d581f8549fb02a0893631d60f501cf5fff41dc17c4833f3ed15ab73a8222bd8", + "chksum_sha256": "0035019e241b278177a2747750fe6effe506e45e80810685e6e5608c4df15ea2", "format": 1 }, { "name": "plugins/modules/fortios_log_fortianalyzer3_override_filter.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "bd78a3ea1032540848dc3d2a723b239c482a5ae590919c282a885318a5a3b357", + "chksum_sha256": "16cc561a6a735e7e2945e7bba3dff4e86ac3e09210572b503316ceec080e7e20", "format": 1 }, { "name": "plugins/modules/fortios_log_disk_setting.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "5ce70adcbc97c84ac655b33fab673f7c85ab591a60e4e05b12922ce75e12de29", + "chksum_sha256": "082f31e040171b1cf5b6c154964db7493c5490b4d2532a16bfede894e71db319", "format": 1 }, { "name": "plugins/modules/fortios_log_syslogd3_setting.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "5550163df712d50a5bfcdd8d77bf99eff8e9616eca29c18d9d3ce0ae2872fb7b", + "chksum_sha256": "e57501c28ebabf0bb484d3fcf7b9607a9f461893ccef7adddce8afc8cbc7b16d", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_initial_config_template.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "b39ba7cba6db48b173592b7f4c0dcd5548de4d463f3521366382ce9f2ced3691", + "chksum_sha256": "33905c808907330075479c2c0deca707e70c8d93650b01b2f9f7a7c62ece7877", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_custom_command.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "0792028cfa29a5022f3dfebb8147e1e81baf27887031eb5ee21ba8dbb8697c1c", + "chksum_sha256": "e3a5f6faf01e1f855c11e72a3771fd7465be72f6492bf1d783dd0b12c56b98a3", "format": 1 }, { "name": "plugins/modules/fortios_system_fortisandbox.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ea3a296319c341addac9353de912c8d4bd8294217a04061057b17a06f8b827f6", + "chksum_sha256": "34ab6a97502e6190124b6c8faf61a64cc621da6f4f4a25fb25492ee951a7d738", "format": 1 }, { "name": "plugins/modules/fortios_report_setting.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d8171d215918f7b4f6a83e2f467fc34306dbbaffbe50e1cdbb341288db50a6c5", + "chksum_sha256": "016aaaa28bd6485a80df93ca8c62a4c5d03e23914ce4617cc2b7f2e9749012c7", "format": 1 }, { "name": "plugins/modules/fortios_system_performance_top.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "b6304487479cdde57f6c37831f5956820409aebea61effdfc2527002be091804", + "chksum_sha256": "cdbb838bf2cc82137765b49292e800d3cedf41300ff3bc70939412e6bdd03e9a", "format": 1 }, { "name": "plugins/modules/fortios_system_network_visibility.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ebc1f584cf9a6d75199fe0c605985705672d455a0db74b1a8baf8b5ce1e01b47", + "chksum_sha256": "ffbf2307e811c676ed8cdb76c26d830c629d836511fb15fb73dc186fb200bc62", "format": 1 }, { "name": "plugins/modules/fortios_router_multicast_flow.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "01adb9080ad7710b8dd360fa2cc60f7b20f7fcef0e4b4a51fa321bd07dde0286", + "chksum_sha256": "dcf0f693883102a7f8ffff0f9136e457c84186e61518e0a0a6b03fdc587b3067", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_snmp_trap_threshold.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "384783d2589e4d8be91e43653373340dcd81b175755066d61147401ea4e3bf8a", + "chksum_sha256": "37d661e0620580ac08aa062634cf7e2da7a386cbf8f3a01c8c1061f74a858a2a", "format": 1 }, { "name": "plugins/modules/fortios_casb_user_activity.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "6fb6997820803f397133b774244cc1a8cc4a768dfadcd074fa04d1d7bdf3cb6f", + "chksum_sha256": "ad1fd99a28c2f7e9acf80f4f0ce3fc97ee3567fe5d765562c2a2c441870db2f5", "format": 1 }, { "name": "plugins/modules/fortios_firewall_access_proxy6.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "6f690964f878c0ccdb3834313bd2dec30ac3b58504b275a0611b2aa821b67448", + "chksum_sha256": "cb8146e6e3b41f142824f0381446e81fa93cdbf099298281c8739d56aa09f9f6", "format": 1 }, { "name": "plugins/modules/fortios_system_autoupdate_tunneling.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c524635762434d497f8bd29627dd8f899b40a7fd67a34d035519c6deaf63be62", + "chksum_sha256": "7cfaa41b2a8a715ac6b11f62131faae85514af3da017b3a125a1b51e8f1c360c", "format": 1 }, { "name": "plugins/modules/fortios_dlp_profile.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "477f6d652fc419a859cc58512970e1029eb55d5a63e1c8aa2fcd28925c7331c3", + "chksum_sha256": "486e9decede451afba97469fb3a625d2ad4199e10c29d79b0995bd3e80769005", "format": 1 }, { "name": "plugins/modules/fortios_emailfilter_mheader.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e46123db274fd5f1d3c0df3e085ebdc8f4e8c5e10aa5dcca18cdbcd91699ef13", + "chksum_sha256": "c30ccafdb544157bd8d064bd2213f6d72a36b748c4de571c50580261d585e941", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_lldp_settings.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "1091d76873450a9ba13eb3c6110d089e7a0837865a9b69cf7cccbfec4c59af41", + "chksum_sha256": "6bee98bd17d188840a9d71a34e1824e005b96fc1073c776f45f745c56cc969fc", "format": 1 }, { "name": "plugins/modules/fortios_router_static.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a0fdcbd7d642fd365da3ab29eddff29cc8802335ef95a872c21a135bb497805c", + "chksum_sha256": "f3b01402f65d04c8d6f694fc5eb78b37f9d5946175249677764ea0a772a68eb3", "format": 1 }, { "name": "plugins/modules/fortios_wanopt_profile.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c60689237a47f590e4b3fc940c4d24411e9f5d8b474c41c0e5b0f59c8a867c3d", + "chksum_sha256": "3605348e85ea638e1d08df0e6c01e6a3b8f0fe6a949260d00cf585cb7f75a035", "format": 1 }, { "name": "plugins/modules/fortios_system_replacemsg_mm3.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "5c5ff6cacfdb3aa533f40eee30f2cc8ad32931a071194e6e48df2a1fca986165", + "chksum_sha256": "5d1d81a0a5acf623d986c6ae43c97746289dba26436257fc0a5cd85a07de2d6a", "format": 1 }, { "name": "plugins/modules/fortios_firewall_schedule_recurring.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d147f8206f5f3f70e06eed27d8563578e2d055040e1f5875742d00df54bd8e74", + "chksum_sha256": "f587e588a63c58364473cb65a52407a136da0c27e8f15981b95cbd585efc1806", "format": 1 }, { "name": "plugins/modules/fortios_vpn_certificate_ocsp_server.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "817a803b7217ed0bab4b856a3dd4a84e2dfc23671505038bf9c33b89152e8c0b", + "chksum_sha256": "534d23049e57834bd16a7d4b2bca4d41e1cd0c7edaf95ac7c7d5545595858dca", "format": 1 }, { "name": "plugins/modules/fortios_system_sms_server.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c6b60ca1eae5c7ff84c90cd2094885a7a5423d401fb00a1161cbcde4439fb4c3", + "chksum_sha256": "dc65419ec91f10b6acffdd0a44259aa46b1078db7a401071dbea07b80c313c65", "format": 1 }, { "name": "plugins/modules/fortios_log_syslogd3_override_filter.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "4526c61a17b596697ff70889b82ac6103c04aa1e101ff264d793306fecd3317f", + "chksum_sha256": "6667cd8a23cfc3b21bde77fb0b4cc0d7beafa81ef28528e4dfcf77e6a40fb6a3", "format": 1 }, { "name": "plugins/modules/fortios_log_syslogd2_filter.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "47f46cde60b98c3e972a20eea0a8cc03cb2a6a57af6f08f866365ac5e4c5cfb1", + "chksum_sha256": "80efc6ae694eb8170125789eee6dd0a4e287e97f13aaf953849cf2eb10b167f2", "format": 1 }, { "name": "plugins/modules/fortios_extender_controller_dataplan.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "b6acadf460c76f3c0dc53fe2c884375cc762c1ea8b1476fe056eeef55ff82f76", + "chksum_sha256": "9441a170dab13ebf08b8eb2a9fa6cd7f082a48f2a6fb29d46b23e4c07586cec7", "format": 1 }, { "name": "plugins/modules/fortios_dlp_dictionary.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "b3f00c62be831e3b354363e4d8c6e9a0fc51451785b744d4ba49f851b2074f2b", + "chksum_sha256": "3265d4231eb4699d1db5aac11c7ae195cf7cc0deac1af2f4ae58c99a026cb057", "format": 1 }, { "name": "plugins/modules/fortios_user_adgrp.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "81fb4ef83553cf685d1b1f7112631f8a505d45518cfa6279f8e2dc492f9f2ef8", + "chksum_sha256": "86f06e3d8c5439b7a4d7c81306dae1dce23755999ce46e9224d9c72818ce0979", "format": 1 }, { "name": "plugins/modules/fortios_emailfilter_bword.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "fb3e7c2ff4c0fd2844ed0e0263b19675dfeebc9cea5956b65cc3d13d4e6e7ab2", + "chksum_sha256": "c19aa8948a828986d04cc655659fb07c94646c6f9e058fc982f22c9b8b9fb996", "format": 1 }, { "name": "plugins/modules/fortios_system_alarm.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "8fd82b101bfd771282c959d30caf4ffac4f3dc0b3f56d2329254dc3d13058ee8", + "chksum_sha256": "21a49baeaf98d57765b95d4b3ff9de9e261bd935b6e6dccca4749020d2e214b9", "format": 1 }, { "name": "plugins/modules/fortios_wireless_controller_wtp.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a80179af7713d1a486406fb8a0cc98ca71b7fdc068fe6df73094d3d09179080e", + "chksum_sha256": "3400f66cc2d5aa1a043f3cc8ed52842fd975452ec14d4311e1b371fb8b655248", "format": 1 }, { "name": "plugins/modules/fortios_firewall_interface_policy.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "756b7db30e3daffdb1ae8035a4c340fe802585996676913290de537103f82745", + "chksum_sha256": "2b1d72ce7e4a3515e4b200ae82db5f5ffde2a1a4213fee349ff2c2f9f1b782ef", "format": 1 }, { "name": "plugins/modules/fortios_emailfilter_iptrust.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a3dc0809edb93778544803675119cfeb0b7514ffc3be5326485bab5682fe555c", + "chksum_sha256": "fb6d5402bb5bdbf354fec14d02281063ef79d4da93d324eab0f2068fecec650a", "format": 1 }, { "name": "plugins/modules/fortios_extender_controller_extender_profile.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ab12c9f5fb51b4e930f58e2e2eb5a8cb348cba4ade153611fb0961e14b94214e", + "chksum_sha256": "783087d36f02f935b649410a28ab388cab02d6253879fd44ec47add3498f7231", "format": 1 }, { "name": "plugins/modules/fortios_system_replacemsg_utm.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "795d0c03e25d5de0f2e6e8642597d7947deaa3802482a6de4a1ddc10eac2d149", + "chksum_sha256": "1c49c24e1c3aadbf5893af3632bf512f65b4d6618e1a068fae3b8c8c2956be4d", "format": 1 }, { "name": "plugins/modules/fortios_system_global.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9f754a8019254ac41f541713ef3f34de1f849182577b160fa27275057fe3ff5a", + "chksum_sha256": "c4fae5a0e401f0ee61010f49dbeb0e46a20dc72472b0db86c55a769ef7312fb2", "format": 1 }, { "name": "plugins/modules/fortios_system_mem_mgr.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "6227715f425cbdad80c73e26d04b7e166a8d18281f96674e55cfc17b2556e809", + "chksum_sha256": "babfc2cab08fbbf7a3171a470ba7888cf818a0de2dfff47f1334e0c16f85273c", "format": 1 }, { "name": "plugins/modules/fortios_system_speed_test_server.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d0b52d4fcae132e6b1a1f1fa9ac0f9e7d040bdd80c21e59251bf9f8f3d5805d3", + "chksum_sha256": "28726eeea8350fb9bf9d6520e5935d24e7987dbd2912439a92b0bc8b845d8be8", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_global.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "aff4c38368ded8797e83bcb85d522215fa1174d7f5bff62221ae074e6d5de92b", + "chksum_sha256": "cdf0a511522751ef4b3fd2eb056aea136a8d61e5714634e18135c3518e9d05cf", "format": 1 }, { "name": "plugins/modules/fortios_firewall_internet_service_list.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "45662ce9349fb8749623cfcd8f7585d5a9c165bab2434ced066a4ab16d8e0601", + "chksum_sha256": "022942b9829ca99ab5e0ed8ff6afd6303043464363e83e0d58374d4699480bfb", "format": 1 }, { "name": "plugins/modules/fortios_system_standalone_cluster.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "7bfd809e8bee3ad090c54f6696c6496c1d3c5c3b230a9a9ae6bb86e35aa9a0c1", + "chksum_sha256": "8758e945e7e4948eaf0c43fa71238aff613abd0f6a2a9a1b967dd4c7658fb61a", "format": 1 }, { "name": "plugins/modules/fortios_cifs_domain_controller.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "83620821002fe44c3e3639a97a6a264650d99e3f25af673042d528d6c6428006", + "chksum_sha256": "b685a9c75c87bb33592bf4b3818cc61500eda54b8bc7bcbf3efe9f5e6f02df26", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_snmp_sysinfo.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "05b67bcdefbea2ce23f2eafa53e2c687dd5351945a3f27880fefc00be1f7bbf8", + "chksum_sha256": "ee9aa75cf81f168f1d373b8a8afd6e5641beb5671f84110d0eccff0782e5272f", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_switch_interface_tag.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d9d3e35eb1e0b33dd66c9e15a6985e9ee9c1760c78e6ee217c2e17582370f791", + "chksum_sha256": "3967e8164eeb5211286bfca300837617e8beac527b40a5235fe7b7d8ed3ce9ce", "format": 1 }, { "name": "plugins/modules/fortios_dlp_settings.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d05db447e58a528752da274713dc283a8bd68618f7b5a0233be01e4ed75f8c69", + "chksum_sha256": "f407c290ade3b53741a4745c0eddb8f5642c7672a4cd7e8c0596da75bc76b708", "format": 1 }, { "name": "plugins/modules/fortios_system_proxy_arp.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "53b39b12c5e49319985305ecbe588db225e1cf7c31d5564765e185130033de2a", + "chksum_sha256": "74c044892a993d624ddfac9657ad2fafa29e6d53cfac4dfed5e45adb2eabe7e1", "format": 1 }, { "name": "plugins/modules/fortios_hardware_npu_np6_session_stats.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "1893afeb29c0bbbe92c6ed1b4e51684c2ace9be27c2a2ae4d8a66d45d31e0441", + "chksum_sha256": "a279ab0110162e01a53534446647315eb979fcb83da4e0610d4f04d20a851178", "format": 1 }, { "name": "plugins/modules/fortios_system_cluster_sync.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "8761d5fd1c621160ac83e787d558121f61f46a5b7b31edd39129f5664e7b2c4a", + "chksum_sha256": "a54092553f7f1eaeb69a5ba02b43a68a824f459691eea1ee9225cb940cdb9bd2", "format": 1 }, { "name": "plugins/modules/fortios_wireless_controller_hotspot20_icon.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "840e7e7f81413f3547955c8841d8a39d5be84b0245e29157556cd4344de50094", + "chksum_sha256": "e94e9f288357be0291cfeb2d90f1404c1d61b15ca91851e59435cf69360ee759", "format": 1 }, { "name": "plugins/modules/fortios_log_custom_field.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "987ad568a193b43ef4f13c2e12b21a6785e70c5a5162851bdf2d72fcd6923dfc", + "chksum_sha256": "43f98e2739716abedbae314ec31805c42dbc7476217f8ed43138dbe08a75d4b3", "format": 1 }, { "name": "plugins/modules/fortios_firewall_vip46.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "7fbf9e4f4d6432aa7cecd34d71c5425ffe98223ec84cb2fae68f4dfe74d7739d", + "chksum_sha256": "457020644c6a7caa802e2ddbeccda840bd038dc7362a20153d99ffb6218cf0be", "format": 1 }, { "name": "plugins/modules/fortios_system_lte_modem.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a39dcd67cf3216f090d859592d0b6149c3b5f58df6d8e873f91aa41e13d5d48a", + "chksum_sha256": "9f657318d82c0f31fb25e267ff13d28274c253973188d215b758c475af88c07c", "format": 1 }, { "name": "plugins/modules/fortios_spamfilter_options.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "258f57b73bd8ffb82ba277d288958e977e8144ad80ff2ac5ee20bb1e5021ce5d", + "chksum_sha256": "30a317ba020e227a40f7eeadcafdf54b9f65357d7d297c16c34639271e729a64", "format": 1 }, { "name": "plugins/modules/fortios_log_fortianalyzer_cloud_override_filter.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "544b0b5eae231663c35ac1ba3374e02177383b670d8ea03bd491c442924d0824", + "chksum_sha256": "74261b6d79bb61672c81da05e56e9b1308f08c949ac55546ec04069a0721efa1", "format": 1 }, { "name": "plugins/modules/fortios_firewall_ippool6.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "58bff2c856becb1431c1841dd0c72eb4c06a24affa3987f33b39844a599ef8fa", + "chksum_sha256": "a2892f31ad202b30f272c5933fc23bf426c98a69d1c7490a112123b0493dc857", "format": 1 }, { "name": "plugins/modules/fortios_wireless_controller_utm_profile.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "b29025e5633a148ddd68c4a8e5aeebe2bee49dd4a538f1becb2ae9c29e3ea635", + "chksum_sha256": "4c4a196c7671d1086d332eb0779babc895ab1fe08707f74f8d235b1866b15744", "format": 1 }, { "name": "plugins/modules/fortios_router_setting.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "b6473df9c9b02b88387003a0482e14b35725e096af202e4d720e8bb4b309b6f0", + "chksum_sha256": "f3234d0ecebe5e53d9daf5a5211baf16218b3cd8da8cf7f8e6072b03febf99ee", "format": 1 }, { "name": "plugins/modules/fortios_system_sdwan.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "602caabd5ea36c582a402883dc61e5751053f2a7f015f3a1d9fa265a5c3f402f", + "chksum_sha256": "354f5ec70c2bcd5d65db28201c3e5558819153a1d4e7a43ed2967bcf4304e248", "format": 1 }, { "name": "plugins/modules/fortios_log_tacacsplusaccounting3_filter.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "55f5427bd43fb574eb66bca11e134647adc9b8c0a3fa2e64ff34879144afb673", + "chksum_sha256": "ac65a08d439961d85cc68eb9377065983e99275a4de476415a09306f62e07fca", "format": 1 }, { "name": "plugins/modules/fortios_antivirus_profile.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "837447f9cf28fb5ae74c4f13d4fa095874f50bd1baf146fe34bffa0e94b5d2a2", + "chksum_sha256": "70416b8a950df1320f841fbc80bb3ffb6f143adc715d1f74ed5caea5abc027c5", "format": 1 }, { "name": "plugins/modules/fortios_router_rip.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "80ec683af88a33d8a014939974354e96fe218c0bc91ed9501778bbfe7cf5bd68", + "chksum_sha256": "d4fe6a91daa360bdda34c30bea7e6367cc5bcfbaf32f4438a9bee4f100e54ca8", "format": 1 }, { "name": "plugins/modules/fortios_system_accprofile.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "852b969732abeb50e443d21e1f02e0c3d3da2306aa1293b2f7520c5e09a81fe1", + "chksum_sha256": "c2c6dfa00dfc28f2a4008108d8a0af67987c993982cc6207117746c7756795e6", "format": 1 }, { "name": "plugins/modules/fortios_antivirus_quarantine.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ba8f5b1abfee162c35742589aac2c3aa06cc607c7cc191fa233686890ecdae86", + "chksum_sha256": "0714c4ec8edb30f87ede4bdb7ebcb3cf207212ae6b5ca4b2bc7736eb7170248f", "format": 1 }, { "name": "plugins/modules/fortios_user_ldap.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "df77852213b4b73e7536032ee457f59fca527aaaeac1a046c75a3da11c827204", + "chksum_sha256": "40279379081c5adb677f0deb58d5a8627d3a3db22920abb590be6c7183fee3fc", "format": 1 }, { "name": "plugins/modules/fortios_endpoint_control_fctems_override.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "dba4c3f254c7be5d502aa204fc6795597146c075f5fb181118707b94baae7c22", + "chksum_sha256": "74042dcb716737a122b06c819279ff8bc6e6cacdafc2b40ed2df7432f4f8174b", "format": 1 }, { "name": "plugins/modules/fortios_firewall_access_proxy_ssh_client_cert.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "4a2189f23c62e1f57aeab0bf0cec4032c10f7e0bdf1f52ab9eedc501a94d524c", + "chksum_sha256": "1934a631997745307d0a4db2824c38a22dd679aa00ca0da476364b6ec40683f4", "format": 1 }, { "name": "plugins/modules/fortios_casb_saas_application.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "3fb76ab9bc1b8141d4b9c22ea2e811286ff719f3329e6a99ff32b4a43e631c53", + "chksum_sha256": "7dab4cdb1e3e10a664d7dd20c40eb78a490844f7cb7fc1d07e2df084cd2744ed", "format": 1 }, { "name": "plugins/modules/fortios_firewall_gtp.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "714c1a371f7cd7e3395b8b670bb9695c965dc021f9024e64061bff03a69c9c40", + "chksum_sha256": "bd9fde6c88fb22913b3cd3b2f7fc2e3e53c93e81e14995c77da2f89e0a138721", "format": 1 }, { "name": "plugins/modules/fortios_system_sso_fortigate_cloud_admin.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "4a9ce6a369d6efaad1e6e230334676daa31143424304ae1f48204daf50b712e9", + "chksum_sha256": "f39dfea0e92d3bc7b663d0a91c152543ed52ca769448206da3613c42cc443a49", "format": 1 }, { "name": "plugins/modules/fortios_wireless_controller_wids_profile.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "925f045d701201730ac3d78481c721cf0842839d93c94228679c8a490d88a405", + "chksum_sha256": "a441686402c32a27cb095bebb75e7d6a05e25c8dce5ff1ecc5f758ed26011857", "format": 1 }, { "name": "plugins/modules/fortios_system_sdn_connector.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a5f475be7f5c6bcf6fb0c370b1fe5c552f036062252f26348ace48f604e23146", + "chksum_sha256": "63a5aabf04d18a7956dd21970e08a08978b473c79f932b5d4d404dc1db27efe5", "format": 1 }, { "name": "plugins/modules/fortios_firewall_ipmacbinding_table.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "0a192cefb5a1df0a901471dc2b560acaac96b9007f76d555e8d098e57b4a2c00", + "chksum_sha256": "681c0620508c1d0f1ca08f294240426b834c3c947cf2f97964ce2ad6d311b6bd", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_qos_queue_policy.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "815a909af979d277dc64a9f394a930dec418d1ce24145de3ecb72c5e511d40b0", + "chksum_sha256": "4b2b2f99f247dfca9b47faded8709df77cd8ca3bfa5b44601330b6598d0ba498", "format": 1 }, { "name": "plugins/modules/fortios_webfilter_fortiguard.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "597bffb1e48fbd8ef87d55a9d691b47a2be56f049f6a35c787f161029e9d3e02", + "chksum_sha256": "0670d436ef080c2bf03623e3cc58a2a9564225ed990397434c46ff6aab4336cc", "format": 1 }, { "name": "plugins/modules/fortios_system_vdom_netflow.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "8e9245f1256c673fc2c87ddeeb30cb263bfd4b2f9574b26a6c0d8df683e66e9c", + "chksum_sha256": "a1eb931a87be1ac905cb81e508e1de0f674b41de27422b9312056010fc44333f", "format": 1 }, { "name": "plugins/modules/fortios_router_bgp.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "3cbc6b946ba05f25fc0f2466a1fc5ed7ce449220fe502d4f21c9eafcd229e871", + "chksum_sha256": "c32d9cd6a7f81e67d7043b2dfb72ad3ef9d8d39dbf1198fb45505d26f6ad7e03", "format": 1 }, { "name": "plugins/modules/fortios_user_certificate.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "835b8996fea1528948402095fa24f52fc30fa2cc5e7410df3cd22012da1ee11d", + "chksum_sha256": "cd7595fd28f279aae91f154658517f4a0cc1471960a8a35c8ec7d8cc4017094a", "format": 1 }, { "name": "plugins/modules/fortios_application_list.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e502494fed01c345c2420241a58dbb557a668839d773e6b5534746d2c41441bc", + "chksum_sha256": "d51ebbecc478ddcf854c5ea4b69bec6476805ef1fb6b26c681676f879defc5e6", "format": 1 }, { "name": "plugins/modules/fortios_wireless_controller_hotspot20_h2qp_osu_provider.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "8fbcdcde119f8874ff08a1e1a22484716f245f6f1cbac226746756dd7721a6e5", + "chksum_sha256": "ae46aeebd78561490a9fed40778aa994fa1ccb12e659c34c34d986f6ba4ae3a0", + "format": 1 + }, + { + "name": "plugins/modules/fortios_dlp_exact_data_match.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "0295672de5545770493a84442bfc8c69eae89c30a50d6fddda1947bfb49f0e27", "format": 1 }, { "name": "plugins/modules/fortios_firewall_vipgrp64.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "02c991f9870c7335fea9f1cf92234282908c70531fc17e899b2c3b56c239d98c", + "chksum_sha256": "65c5806d9cbb7a41021b2c0532bf830f84b1b529fa29f12d6a0ecad16bbba44f", "format": 1 }, { "name": "plugins/modules/fortios_automation_setting.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a2d694889ab79c8e9250bd2a3713aa4dcddf4e01d7a0d076d09a3f29d1691da1", + "chksum_sha256": "ffc8b6d8891a681f118080083302c62e2ac5a78f6716fe09c8b7cd10a8c7c574", "format": 1 }, { "name": "plugins/modules/fortios_router_ospf.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d497d6d58493d93ad6e577ef9f6f0e696649b09c086aa6e8c7a26f0b27fb48b7", + "chksum_sha256": "4c47735e542ffd6acb399c47e1af93c5cccced79d339d7f3c23d3dbfc6b73259", "format": 1 }, { "name": "plugins/modules/fortios_waf_signature.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "febbf42e2b5628e540454d328c2af1df6867231ecd84b500838762f0a726c21a", + "chksum_sha256": "8cf84850f9048b7e1c8494407baafd45d8a65b1964297f171b447bd3479d88f0", "format": 1 }, { "name": "plugins/modules/fortios_firewall_internet_service_custom_group.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "144317e515012afcfd47be286369bf0c9bb4bef67d471eb1c18b96e5d6a63750", + "chksum_sha256": "78088aa7b4d9a90cdf7d954e47794572c697c04964271f4ac96536ed725d7a67", "format": 1 }, { "name": "plugins/modules/fortios_firewall_security_policy.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "6b59b918089efecf15132a5ea6fb7baacf30a5fca917cb784133922d9f12efdd", + "chksum_sha256": "e6f549e17bf184dbff36ec8e9df5c29f1956dc1a5ae7273a2ac219795815995a", "format": 1 }, { "name": "plugins/modules/fortios_wireless_controller_hotspot20_qos_map.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "5002cd0f99ff5690d1822fc570a890e6a033d8aeb927185b5114f319ebbc2efe", + "chksum_sha256": "3e5f78a55b055acb62ae396396e874d74903f3cc69ce3726df9cb3ee4dab889c", "format": 1 }, { "name": "plugins/modules/fortios_firewall_proute.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9b729b684b85e65fb8a05a765c4cab17c923d3a359aaebcf8759df0fd62b6909", + "chksum_sha256": "41a5280943792d031a27bca395da39441153bab94a0554f506db52e15dc81347", "format": 1 }, { "name": "plugins/modules/fortios_system_sso_forticloud_admin.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "8c709aeef1c97fbcde83f20cfa2d0d404c46ac5b515e54f2f4aa1236794a775d", + "chksum_sha256": "0ca0f140d4794c4aff884569ffa59355dc2bff2d77a2bfb7c0edac465d13ac35", "format": 1 }, { "name": "plugins/modules/fortios_system_ips_urlfilter_dns.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a5e7a6405d8aecbb0727659792313fb9ff1716b18505ff3180d9c69ddd5af867", + "chksum_sha256": "10aa48a595023fa9090fe1446e89661ebb8a6a33f228e40bee3fe66847150bdb", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_vlan_policy.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c71e9cea23205c7e9d08233759b8123894410fda1b9700403cf31fd0bce26ca4", + "chksum_sha256": "0403e0f6243fb8f3768feebbeaeee2f9b03370e5433490b318008c9e636d88b3", "format": 1 }, { "name": "plugins/modules/fortios_firewall_shaper_traffic_shaper.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "5664670a65f099a36a012463c6b72a18a179d0e7afd42faa2c06a81ea3d2889d", + "chksum_sha256": "4b6fa11524277d52d3b18541b26888ba69033d229019603c6209a5d16b41fdab", "format": 1 }, { "name": "plugins/modules/fortios_spamfilter_mheader.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f382d2eb6e310307e8fe1a8c2a5d796408138eb66f7471c3f7ca4185f6717f26", + "chksum_sha256": "1bf805788f89088201a3acf124fa5cd4ce1fd941bd7e9d88273a405d98499d53", "format": 1 }, { "name": "plugins/modules/fortios_vpn_ssl_client.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "eb912b4efcba5c6a85c1084769d7fa00010ed2f77ac964df59553a05eec43262", + "chksum_sha256": "1d3e28c3b8dbbdead5a59444992aff6d5335f047131ab8c290ccb56771a5df5e", "format": 1 }, { "name": "plugins/modules/fortios_emailfilter_block_allow_list.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ad9737a0fff318117677c3cae31b934512219b7e0236c20163aa07d44f723bda", + "chksum_sha256": "8d4bbd8a821784f3f7f5af362cf248db17f117b13e1a283012b8b8a7fc973459", "format": 1 }, { "name": "plugins/modules/fortios_endpoint_control_fctems.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "b2ce433b011ef262b2a8d0bd0b6158cf610885821b44654e66d4d1430092ca3d", + "chksum_sha256": "2ed55a4b10bf581842d8fdc3aeb5d79be1005ada6f2d9b7a4adbba7fd071c242", "format": 1 }, { "name": "plugins/modules/fortios_firewall_shaping_profile.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "93fd4fe3d61b03475d14ea6aadbeb62c394cca0f87d37cc6a7520c1a63597780", + "chksum_sha256": "49de064756b6bcf6f7125b9d55096937252c5092ddba22ccfd5611c4456a1383", "format": 1 }, { "name": "plugins/modules/fortios_wireless_controller_hotspot20_anqp_venue_url.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "13abafd238cafd611fb8f3d00f481dc91748be409f59fc010a31831d42941660", + "chksum_sha256": "1219ae0688631765227d9687d074d1bf6f750ce4838b43adf6e284bb5d67b350", "format": 1 }, { "name": "plugins/modules/fortios_firewall_pfcp.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "2ad21784970f4910a843b8a78020fb4861676453821d0766210a6052ed2be412", + "chksum_sha256": "fd521f68965c540c6e709f0e81e3f3b1659c9e32ccb8032f9cda88bb20a79e19", "format": 1 }, { "name": "plugins/modules/fortios_system_dedicated_mgmt.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "bb9fa301118703791f6eab1a93076ae2bba91f4cde74638802fab2b23d6a6799", + "chksum_sha256": "239c7226b4f11da544a08429aeb1bf499521d0269387e962ab6cb37091926b0b", "format": 1 }, { "name": "plugins/modules/fortios_system_replacemsg_fortiguard_wf.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "2fbe05a0535ef3a8587b6753f5f82e0054b9350621079fb1397533403c8024ed", + "chksum_sha256": "bc74d24235b24928bf4d28216d718ab267bd8e2cf44feff5477e401f4708b67f", "format": 1 }, { "name": "plugins/modules/fortios_system_vdom.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "6dc9a3158a2817a0929a0dfcc3b199daee7a296ef0446ce8e012f9ae9954ccb5", + "chksum_sha256": "5812f94f922d4944a817b4986d522df50ad01e1f3635cd841e51da6b35f7a569", "format": 1 }, { "name": "plugins/modules/fortios_wireless_controller_bonjour_profile.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "db06f83c4b368f7a7790af04c1933f8b5924f5314dc1e723af387c51d4107a28", + "chksum_sha256": "3151e83a65bcda64e85b25559bccf9dbb9268f7784ecbde64901cfebb0941c41", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_flow_tracking.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "2956334a15f6493ee92676e32270841454e5cc835a739bfc61a588f824d5ff31", + "chksum_sha256": "179f1cdca889383963833b42b5a8edda248d66bf20d4bf6df2bf92b6758cc428", "format": 1 }, { "name": "plugins/modules/fortios_system_replacemsg_ftp.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "5ea0bb5572f7281b35a3f4cabac8e87eb374d2f55209ba0e76db12cae06bad73", + "chksum_sha256": "d1a6972a61365ec5db9c27b63f8e691ede8e6b80df488a846f18947618a70fe0", "format": 1 }, { "name": "plugins/modules/fortios_cifs_profile.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "23ee061f092ce38ee6a168bb452053956956e81d98e965f97c054b76bb1b335d", + "chksum_sha256": "abb91410b21ff7c00f2cdfc726ad609c96ab7898900a727daccac571ae040dc2", "format": 1 }, { "name": "plugins/modules/fortios_firewall_internet_service_name.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "530dd7adaddd4a171b252f83c3402ecb788aaee5578a8481f799d7357c0a10f2", + "chksum_sha256": "24f59de59b4e6b04c4408ce8d618a8c28339f2a94f5195dca7c634ddd23c842b", "format": 1 }, { "name": "plugins/modules/fortios_extension_controller_extender_profile.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "3cf85073596ece394b2db0ea948fdafefbf8eaf2876de894914b2466a95bba45", + "chksum_sha256": "b9769a39af141d454a344778d7f8459b2e6c449c6298a004314842cf6c8ab1cb", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_location.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "293c484aa04c2ada4996f79c27769a889930c5fa0ecbf4378a0f0ff3178f655e", + "chksum_sha256": "935f41e58568b9437532b487c6becde268f9bbf294dfd942b788ff532cc92bba", "format": 1 }, { "name": "plugins/modules/fortios_vpn_ipsec_phase1_interface.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "8a515014c070a72d27a191ac55b2aacdd845315a4d7e5226fcf8c130d2961ccf", + "chksum_sha256": "26272174f834bb2f1a76df8cfca4726cd07f8ff87a4774a3de88bb128373922d", "format": 1 }, { "name": "plugins/modules/fortios_log_webtrends_filter.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "04c0445d3ba4da0bca560e2f7a241d934f3b187d219cb5dd84041ead301c3564", + "chksum_sha256": "d2afb10b29018d6d9cddc348a7737bac542cdaef77950ee8f4e850debffdf5c5", "format": 1 }, { "name": "plugins/modules/fortios_log_fortianalyzer_override_filter.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a19b13a1bc2b2c400d9313ec6377d7e7efb53559e77c0929800c3f30dbcd0792", + "chksum_sha256": "95bfd26761efffd78ddefc7b67c8dfbe5307b836c4a3d593e68a132629f58a0d", "format": 1 }, { "name": "plugins/modules/fortios_system_ftm_push.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "7f72ea825665b5cfe860b28c788862bd9f99cd0803ec9e802cfee6eb22c24d70", + "chksum_sha256": "4b4d9657b8743f224797cf159c4383ff64b801eb8fc321a75dcc89b31461247c", "format": 1 }, { "name": "plugins/modules/fortios_antivirus_heuristic.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "aae041efc9354b9a9028ecc0e2288d50ad166df466d05b61f427de4c07f22d92", + "chksum_sha256": "65fc53f121c3f96887294b04d7e3ef8ab2130ccd06c0fa80ec336b103b11222f", "format": 1 }, { "name": "plugins/modules/fortios_extender_extender_info.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d3e70fde20d938b80a475d681a0580af7ae7a3ff83a81747fa511f050d23505a", + "chksum_sha256": "66234bde73d2c8764dc9b9ec9c5b73ac7c1a0e2a90585c3d9978e2c00515b08c", "format": 1 }, { "name": "plugins/modules/fortios_system_replacemsg_image.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "5298d96fddc67c2403f1ea2694fdf1413fd7fb3b104ec386ba46ef395e9f7cb3", + "chksum_sha256": "3902b0b0edb0c5f28a3ac3b69b7a24c771b9ccfc627b2727399d97455e200491", "format": 1 }, { "name": "plugins/modules/fortios_system_isf_queue_profile.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a0227fa5614fe29896af41a5821be2193e5372d306005957a011269bcb5d1df0", + "chksum_sha256": "247bca6a96b90a15601c131b681ae2a2281e3f9da224490a9815d4de727a812e", "format": 1 }, { "name": "plugins/modules/fortios_ips_sensor.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "116edadeda60169b26f2fc42b9182ac426cd70c1d28f48d5be86cf8017b87ed7", + "chksum_sha256": "c386fe225e14cbcd4634b2b8c1bc6acacf8e0a8013a11e933fab3a8c79493101", "format": 1 }, { "name": "plugins/modules/fortios_firewall_service_group.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e50e3dd52636d0a78a7cc29d27a819c1e274c1ca5f7a8dd3bac55e259c47e700", + "chksum_sha256": "482130b0617c41316e11ac4ee7165275867e7f3102d9dce4fb8299663b391986", "format": 1 }, { "name": "plugins/modules/fortios_firewall_local_in_policy.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d9fd837a9a6f758bc0aea8cdd96117b9984d65003b9bf90d868d9d55e9efbe51", + "chksum_sha256": "f0e63278c30839945ca41f7ffa58f1351f4127052ed99591c8cab0a3ef0f9cf7", "format": 1 }, { "name": "plugins/modules/fortios_system_acme.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "3403932b02e7eab3e33426e0cbcaa844074717ae46b6ff78dfd55ad85733bab9", + "chksum_sha256": "95362d9571280bd89b07292ca00eef86af4b08167f71f589123be35ccfebc50b", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_802_1x_settings.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f8b8124b017968c82dd7fb7907ba5e9d5385b7895449d0de47b844187476c78c", + "chksum_sha256": "6c3bf3dbd74b76dd735fdadea7ea3f7c46c2eb16d4b94651e3ce690f5e8c4420", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_stp_instance.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f3e84a2125053948ab0138c5ad4b129fbe08652070d0d526237537c29243b271", + "chksum_sha256": "2adce2179035a4a180d6194f242bcae2b30976abc71101c2f6899a6b22651b55", "format": 1 }, { "name": "plugins/modules/fortios_system_ipsec_aggregate.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "dc0248877b5269ff2ef75bf2777645af9705825d82473058110eef182f0f55a2", + "chksum_sha256": "6fd28b03db44a4597369189bfc941588a68b63c73a8505851aec2b6424c1adc8", "format": 1 }, { "name": "plugins/modules/fortios_firewall_address6.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "4e755128ff5fb8f2d713d8b281ab72e176ab2fd2d2604c8912437be68e0a3f44", + "chksum_sha256": "f9ac6629ae44bff931c899182f28e8a2b5959ebef8d7b57eafe94731f1207bbe", "format": 1 }, { "name": "plugins/modules/fortios_firewall_multicast_policy6.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "0dd390260d78d23ce9b537782dec076c3f7643aa4272d1f1d3e479a9eea4073c", + "chksum_sha256": "43d80e9883319a2f03c2b1634f10be389818dda3337020ed5ef03c8979000c39", "format": 1 }, { "name": "plugins/modules/fortios_vpn_ipsec_phase2.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "40fadcb1ce76a47dcf7d2a167d7f0fadc64d37a34f4ce2d3ab044b5472bbee0c", + "chksum_sha256": "577d8145bc3c4833c3c02bed48ef6c8e81049c8c8f70b4938dac920ccb8d3bd1", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_qos_qos_policy.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "471d28e240c6cfa4d053991aee9d42b2d3601c6f5d59b1425331cf572954b4f0", + "chksum_sha256": "c3cce8b42394d6f8b1f69fd24fd2e6171c60e54a9c4eb147000670d20f538de0", "format": 1 }, { "name": "plugins/modules/fortios_wireless_controller_status.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "5fdd9a81c34956636c2957ba855626a20f7df022227a29ae38da73214a22da92", + "chksum_sha256": "848aa8bfa2cda6829be95393767cd0b697bdcd8f3bf56228d22d3b9204260585", "format": 1 }, { "name": "plugins/modules/fortios_system_dns_database.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f733a78ea10e440aab86d08125d1fec9b796de2df0a9c4db9050fd0d154b888c", + "chksum_sha256": "63d8c4d9def68822d9198a8dcf05ead99b881a1e32d4da5d9a7aed4c64872153", "format": 1 }, { "name": "plugins/modules/fortios_firewall_internet_service.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "3b586ef869af41ad7261998a305ff4e60eb70d866de3e6624e8b2a2e231173f3", + "chksum_sha256": "db078f86b942735725959d54598f1626aa67804748f5b81a07f53aa2ccc10c1b", "format": 1 }, { @@ -2755,2135 +2783,2149 @@ "name": "plugins/modules/fortios_system_ddns.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f1fe2e92b683099483085e563c8d65280a2de55a391a96d48334ddadb079d7b8", + "chksum_sha256": "47da518d7509e856478af77d37202e485ffc4e4849e64e3a462fa367e90c97e4", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_virtual_port_pool.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9c4cb934405b2df6048a8600392d5a0030928d2346b0ea781e528848aa23ea2b", + "chksum_sha256": "a1cf526c3c2b93fab537066519d00e02804de8d1470404ba3cb4f74bd673048f", "format": 1 }, { "name": "plugins/modules/fortios_webfilter_profile.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "354db788457ae47c760d7558f036362b286b79503fbe9a8bf0c961418d0dbb25", + "chksum_sha256": "d7c8ac79dc579e58f3aedf89cf49322444649df2237a56d7d9b03098812f6018", "format": 1 }, { "name": "plugins/modules/fortios_system_replacemsg_group.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "b4e75050f8002f7f22b4630b0d9952a388e98c4a2ec0b815b63a4350dd1fae9a", + "chksum_sha256": "02d25f9806d2a0fb45a00c7918ad0996581aeca90d7e07784509602a768761e7", "format": 1 }, { "name": "plugins/modules/fortios_web_proxy_explicit.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "19fbe25181adcade03ff24791f6245aee928c47e29d97e4692ef0d685b7564ed", + "chksum_sha256": "24760d8c5c5c30d60ada113980f5606578716434fe206be80b1793a813c759dc", "format": 1 }, { "name": "plugins/modules/fortios_system_snmp_mib_view.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "6f5fec6ee248575f6cb9d9feb66a3ec11a4ff37d6da9d16da9ea5788d6e0aa78", + "chksum_sha256": "f255e3216ed73aae0be3f8b5996c307ea9673a01543cf292224b2b9e50ac3cc2", "format": 1 }, { "name": "plugins/modules/fortios_wanopt_cache_service.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "1cd5d7e3d1cd653fcc383f798e6fb8d00cc02b5a5b8d2a85bf0a5de209674356", + "chksum_sha256": "d1ab11d09be478b9378068adf3d993c20ed2110a3ab0b865b5e05d9abebef740", "format": 1 }, { "name": "plugins/modules/fortios_dnsfilter_domain_filter.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a18d542f53f262bf850e0b4081a2f45afd3a4b24d0da78cbf4712e5c104aad30", + "chksum_sha256": "1d5f1dde00503bef4031095bb853252a97e7eccd7de536c2cdcea76c53525577", "format": 1 }, { "name": "plugins/modules/fortios_vpn_certificate_remote.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "715d1571c0bc15d196d8388328d8bfc487fa187b99f89b3532c70f3f635f2c0f", + "chksum_sha256": "764d9323113a432dd1dd408b4ac905b33f0da27455739ae4dd3e13359538ffbf", "format": 1 }, { "name": "plugins/modules/fortios_web_proxy_fast_fallback.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "04d9541b334a21ea55229fcf71ee0c7a5503d5e268528503096adf61f7994b37", + "chksum_sha256": "db6e76b154cb0cf1deeed9f73b21b126a7092cbbf6019eddefacb5d43885e71e", "format": 1 }, { "name": "plugins/modules/fortios_user_pop3.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "198ce14d04848b79ebecc39e9dd1570b3bda465f15a9733551e9925c28b2490d", + "chksum_sha256": "8fd4bfa23696bccc26a3b04712e775f833bf2736db74ae4d47f3f56c59749ac9", "format": 1 }, { "name": "plugins/modules/fortios_vpn_ipsec_concentrator.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a893e9b71854c7646a460bb4885ff22fa65b63ded0334c891a2ef319bf348aad", + "chksum_sha256": "3a950a45e5dafaaaa657fd4383ee61e6f7acb9bd8a158298d39fd8c88527d561", "format": 1 }, { "name": "plugins/modules/fortios_web_proxy_debug_url.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "75a764aa7e78185476e0d98f0faedb181b9f918efb26404e7796b34db8edf043", + "chksum_sha256": "60c5d94bfdcb2e9e69510c4cfa6678bd4d86f199238091f1be3e000cf8bca7b5", "format": 1 }, { "name": "plugins/modules/fortios_router_multicast6.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "63a4e340ddf4c622e257977917e99a5f32842a3b1b15849adf32bac5f307703c", + "chksum_sha256": "3aa26ed91e3c07988f3a878980a58bb909b451ea2571fafa8d9674827a1bca87", "format": 1 }, { "name": "plugins/modules/fortios_ips_rule.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "cc27ed652274ae679e25782fd5553374056ddffa6b789e07bd38d5bd71776871", + "chksum_sha256": "fd641687ebc4f6191323f4b8b8a7b94fe87ec115bf5801c28f172e95e67d0881", "format": 1 }, { "name": "plugins/modules/fortios_system_fortimanager.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "7504c3c38976768cc3251ee8a976581fa88678a5dc87d8f06004c0f5503f4cc2", + "chksum_sha256": "b01c823437591d32dab8877bbae95c355ea99bb36ec1048d704ed34668370cbf", "format": 1 }, { "name": "plugins/modules/fortios_user_fortitoken.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f5fe9af61dd058348adf6af9df41afab85b4d21c1c222ced7bc4c67e356891b5", + "chksum_sha256": "db647968822d93d25eab65d28ebfa35bd727e783e646272804658295ecdbbd72", "format": 1 }, { "name": "plugins/modules/fortios_firewall_ldb_monitor.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c87b307b0eef862b86f2a3eaa5c09b70391563b7a1fb69043d5dabd0a2c50224", + "chksum_sha256": "c6e2c567e59800dc00645f4868a0c794c1baa27cafbbf66feea0885e0cb942e6", "format": 1 }, { "name": "plugins/modules/fortios_log_tacacsplusaccounting2_filter.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "1d7c5c38b604ff7b6e6b0a8bc8d1bd8d942722a66de72c52f2d0eb59fbbf8bde", + "chksum_sha256": "325b2a9e99c2189dede3c26a58e141ee11b3f210da37bfabea66916a8a6a87ca", "format": 1 }, { "name": "plugins/modules/fortios_emailfilter_fortishield.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ea1fd9d18c86d9715ae83b91aefa239a71d45f820ebedae90011fc0f05419f0b", + "chksum_sha256": "be2acefabef6237a4eb24a22c65ddf5a75c563aff18b877e54cee7b4e8f157d2", "format": 1 }, { "name": "plugins/modules/fortios_log_fortianalyzer3_override_setting.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "16a531d8fba59bdb5bacf23359b8bef92093bcf724abaa3adf0ccb56c8ae52c0", + "chksum_sha256": "0f7965817b6ea8983445a34823a9e5009fb1f8562012c2eb7b5eaa6847370a62", "format": 1 }, { "name": "plugins/modules/fortios_system_speed_test_schedule.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d043dc376d8166b8b145ace56e5d6f504bdc89bb06c567902557e27c75ecdad1", + "chksum_sha256": "66909aa0bd2818e4b601609d8122d0f885ad2d8534f26983d4cc249dcc6ade45", "format": 1 }, { "name": "plugins/modules/fortios_system_np6.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "163e6be7eedef6ff79466b4d93f7e4ff6d14727f37230676edb72c1feac16942", + "chksum_sha256": "f6a02ce26175b9ec648f303143478c4df69ca131193a745a06f316cbd3b1910d", "format": 1 }, { "name": "plugins/modules/fortios_firewall_internet_service_reputation.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d26e06f271c1c70d9ca34beb35f6621e694a1c4c50d02d1d4cfc50d55340e6e3", + "chksum_sha256": "070c1727f25545a510a7b14b6127ee3aa887f8735c8045957e0a3e4617970824", "format": 1 }, { "name": "plugins/modules/fortios_system_replacemsg_spam.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "b4e98acd799d7d909ad813279df43acc45bd15a32fb99fc892f747ac2436b10a", + "chksum_sha256": "4ff031f8dfcfe8d96be911004a8b1bb58f65caeaebc3735ca5c640f20e7f9417", "format": 1 }, { "name": "plugins/modules/fortios_dlp_data_type.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "dac6978dcf84244da9d3d4f297daffd51214d1e0220f665de0404a4602353d72", + "chksum_sha256": "18a1289060ea5234aaf49fae8ac29dec944da911627fef3cc7407265a9f3f875", "format": 1 }, { "name": "plugins/modules/fortios_system_resource_limits.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "4d5112b0b47261a8fcc2e37e62727880e49e6b9be8af6b40d96f43fde0dfa6cb", + "chksum_sha256": "697ccd314f86c4c061f5b7e99de0b65b66ad02cf08b515e9cf0c99cd4b768d1f", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_storm_control.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "5b48aa5e0e2c77ab292773bb8a20935807a6b82a2be2018ae4612d2253e51b28", + "chksum_sha256": "b5082869140b31395c0d1704e3d7f2072e8022e49c10e24da4bd22af862e6d1d", "format": 1 }, { "name": "plugins/modules/fortios_system_management_tunnel.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "5a4b2614aef9e2c6e19a5beb2c9a53e6c918d5dcf8085d4ccef926223acccfc2", + "chksum_sha256": "fb82d58cfe40e8e8ee9f086d1942227c3748d3e60bae002911d72be2a84247f2", "format": 1 }, { "name": "plugins/modules/fortios_firewall_internet_service_group.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "4ba251cee585d1988fa047b02dfdce9d4b0896be923301732914c7d33c65f647", + "chksum_sha256": "f8865b6bb57ba3099ff6f70b170e4d0ac663f5be0bfb76bdb5164613b5d9e446", "format": 1 }, { "name": "plugins/modules/fortios_system_lldp_network_policy.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d45f98d72de96022316074f447a2491ee1f58e331a16e4fc8f81b4edead9830d", + "chksum_sha256": "0184a9eec50e35c236ad38062fe2ad9906f0230be176b747592500b69f00a60d", "format": 1 }, { "name": "plugins/modules/fortios_system_stp.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "5f4b7fe589c43bd5dfa6d23fbe7ed20f727b3da3b1c70c87d48b68107f912bbb", + "chksum_sha256": "a10160b9edc743ab5e58e9d6f13397fad4cec11b58e2216a04c4645e9999aa83", "format": 1 }, { "name": "plugins/modules/fortios_log_syslogd_setting.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "673eab75a47a4065525764d4be417610f6b09c4f725204f9df17ed3c26e9dbea", + "chksum_sha256": "5a1af573da38183c6b53b3d946527583ce00490a97b30888bd985af5b889e9f1", "format": 1 }, { "name": "plugins/modules/fortios_system_fm.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "29ba73ef52b2b61e71c2453365ea430ccfd96907fab21f77a56110d423d5697a", + "chksum_sha256": "6a5efb3e43af5e013b078405e8fa7aefc69bbad4e89fef11ecb1cc58ecd5670c", "format": 1 }, { "name": "plugins/modules/fortios_firewall_iprope_list.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "2c9b7aa34365462ca852287ebf4d42bb4dc5e31f2f420b7b84dc39a0e4b79051", + "chksum_sha256": "9d1f8431f220a20c2d07dedc56d6d4bdf87fdecdc13a33767a4395c81fc0b0e7", "format": 1 }, { "name": "plugins/modules/fortios_firewall_carrier_endpoint_bwl.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "566c6444be9c3d38abae3edf6232f7edb3f394553e03081d22520fc1e68f0547", + "chksum_sha256": "80268b4d10e0859bd5c9524a320e2978c3b9af823e71ab2dabf6d394b1c417b7", "format": 1 }, { "name": "plugins/modules/fortios_system_vdom_dns.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "4744e0e96ea34b0c6bd9e427575c497014df797651c4d8398cb7f8c33fdc108b", + "chksum_sha256": "66c9c396e05d2157ee4155455154bd9c22a26b7addba39be0022ed058d3f2498", "format": 1 }, { "name": "plugins/modules/fortios_system_vdom_sflow.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "3c4de8a005af940c6d1175d93281b7da5b189e26f27697d59b3b18fc714c192d", + "chksum_sha256": "1d708cc619b53493298b649e6188630cef09666912fc00015c451a3404fa288a", "format": 1 }, { "name": "plugins/modules/fortios_system_replacemsg_admin.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "2011df55ff2e35bab9c54d0057f5c0b09311773ec5bcfd2187ac1f756d8e1e36", + "chksum_sha256": "5ef4991944c9cb241c8eeb4813e90d4d23c3218b6d376d98e375f37387b502f7", "format": 1 }, { "name": "plugins/modules/fortios_user_exchange.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "3cf4f54b9b03b3cdb3ff9bf04b3965372378eb1ccbf74eae1db5d585674e4aa1", + "chksum_sha256": "f27a43c389a89c45eaa99cfeffb7a146e5b144739cedd5596a0052075ffba645", "format": 1 }, { "name": "plugins/modules/fortios_firewall_acl.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "6476dad082b78969a2e888896e9395e380be6f7b1b50b5adbdb1f853100c0303", + "chksum_sha256": "7af8f1adcbaedc3ddfa810af88a57bda281d62916c4953fa086dbc3034e3840d", "format": 1 }, { "name": "plugins/modules/fortios_system_dscp_based_priority.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f3730700d2ecfba619103bdc32906d9bb4e185c21d1b0274c930147a8c78844b", + "chksum_sha256": "e7107e635bfc5304b3714e7cedc7ee1e8c2d494a4946682be241077b69013c1c", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_switch_group.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "639a645bce4591d5731c8caa2bb21608eeda2719cdd2a56682927c1d8a7a5968", + "chksum_sha256": "9729ef2e44bbd00317bb86c851f12f8374e9ed56de138b0c61e34f04d0129bce", "format": 1 }, { "name": "plugins/modules/fortios_log_memory_filter.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "90a734177202f3e8014a2aebebfcbce1338ae1f261d5eab4e588f4c2f22e1e61", + "chksum_sha256": "fe78a302d37354204f3022bf540e114963e6bb85c4a8c4588a7dfbbbdbb62c04", + "format": 1 + }, + { + "name": "plugins/modules/fortios_videofilter_keyword.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "d0f45b8117e8505d5cbdf035bacdb8ba5ed799b74fd69ba0935b6c43f8546290", "format": 1 }, { "name": "plugins/modules/fortios_firewall_country.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ff7ea110ca8c88550ee1e1b655af3f136ba7a6fc2dd34f8ce66929065ba0a996", + "chksum_sha256": "eac954a3f900a5babbb2ca4ee1f6c1f109fb5167051c0fb65aada134ef8c51c9", "format": 1 }, { "name": "plugins/modules/fortios_log_null_device_filter.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e3ba37bc51de1ec29f57a14b9bd6ee9d2115f47edbe550a55d7833e67c68bf94", + "chksum_sha256": "ccd47eb60d1519b29099f2f7f837c2a76caa44b43a09a6dd8b754a23f7dce936", "format": 1 }, { "name": "plugins/modules/fortios_user_radius.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "fd43659e6e142a876c4af5dc23af5afff7e8990d5906015fb109bee93a6a24aa", + "chksum_sha256": "7c930aa0df5de43642a02c61617c3ad6ae32eb8d97961e65d32b5b6f95f00850", "format": 1 }, { "name": "plugins/modules/fortios_web_proxy_url_match.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f97c384b4ba08e04a4b81c63f9bedb37142658c9f6ba034d2a05d76c1b9cf7fa", + "chksum_sha256": "464beb03390b727217da61fb6dd0ae5ffe54106fa9a81ab8b1da7498a68e7a56", "format": 1 }, { "name": "plugins/modules/fortios_log_fortianalyzer3_setting.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "cd5116103b52391b33f3b1fa2aee4e5136bd9d32ee685841234544a0b7060817", + "chksum_sha256": "dee355d45d859bff5f3ade1acd945278aa0dd7b05ff6b0506ff375b829ccc78c", "format": 1 }, { "name": "plugins/modules/fortios_extender_modem_status.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c1d5c8e14393fe3f4f168775d8beaf4e657d642b31237157a3ca8e9e5315cd90", + "chksum_sha256": "031a09279142d06518de18f57055b8b57a44e333870b7397dea3c32fab0f91cd", "format": 1 }, { "name": "plugins/modules/fortios_firewall_consolidated_policy.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c351f786d2fe05565d92d336508bbb28af87b419a56be9242ccc5ba7a3f94bbd", + "chksum_sha256": "b3b589e63bae41f58baaa478250b8ff9f477ee540f1797010fcd9480be2c8d94", "format": 1 }, { "name": "plugins/modules/fortios_firewall_dnstranslation.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "bfe4d573a434828bffe5842ed1f2c84e82ee558ce6513e9b209b7627d6e59371", + "chksum_sha256": "beda0015977ee54881504e271a67af6e598e34c4f538cc6849a0d3d312ca08c7", "format": 1 }, { "name": "plugins/modules/fortios_user_fsso.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "2bb6db8a8c6da84a2bb615ab3520148859fb0ac4c28e25d26511567eae92b341", + "chksum_sha256": "234d4d0f021b8219d7eb50632fbc1bae3b36e52b76012bb7b297380847123a1c", "format": 1 }, { "name": "plugins/modules/fortios_wanopt_auth_group.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "b7ee89ae74ae7966a8fe2c8eb0714ca4aa4a82e23acbcdf331636912d9ee19e3", + "chksum_sha256": "96adb2a7af60571f37373897ac42f86268d82f492a9555da5e7d2c1933f6a586", "format": 1 }, { "name": "plugins/modules/fortios_system_dns64.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "2dbc939900f77c244a5a8f1af4e895f6af9f36b8c592413d5018d33233824124", + "chksum_sha256": "9fd1d0ba1bb9d86bb49d5350012b5f589acbf2bf985a533b099c176b3f1453c5", "format": 1 }, { "name": "plugins/modules/fortios_system_fips_cc.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f00cf830da5c16f97533ed84bfacaf25f84bbc3090f23d768a9c8caa3bb92044", + "chksum_sha256": "af23929fdb78a201689f2fcbfe54c0b26def6da580d96296b4218ebb8160979f", "format": 1 }, { "name": "plugins/modules/fortios_wireless_controller_setting.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "6b3ed04ff6694e320bbbafc69ae55c43ae1ddedb57eef63ece859386e1ba9c03", + "chksum_sha256": "82e28898270ba8475e445a75717bb44f09ac036f33ff00a6dfb7600411611566", "format": 1 }, { "name": "plugins/modules/fortios_videofilter_profile.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ed9cea7726a8378ac9a3d99b66aa486a392da36849410a42dffca05a640fa6e3", + "chksum_sha256": "409cfaab42cc01711f6b43843c51b201163b6e62c4340a63d04814559224c941", "format": 1 }, { "name": "plugins/modules/fortios_endpoint_control_forticlient_ems.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e13b94de13b3d3eedccd145f56afd9dd4abdecac1407c28f7801da62329609e9", + "chksum_sha256": "7a267270e45200681b9f5a546bbf41143e2e53c7b2fd6626ed74032d57eeff77", "format": 1 }, { "name": "plugins/modules/fortios_system_admin.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "6621d797689467c93000424f605569c8afd05ca89076befc0bc2dce281871aeb", + "chksum_sha256": "f53e87ea5ef1d98205044bb3c147505560ce56b2aada11a25a5dab0755d54d48", "format": 1 }, { "name": "plugins/modules/fortios_system_ntp.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "514b3e4898c31184332234ae200fdf607537721a0449218d1812588f9e9316bc", + "chksum_sha256": "f03892f9dd9887274c33803c2c675cca885486942128ec58fa3833a84ef69bde", "format": 1 }, { "name": "plugins/modules/fortios_router_key_chain.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ab8d0ad3d2ea2132acf90007e0eb8f2ff4894b2f320dac135f982dfeb63fb041", + "chksum_sha256": "37f00825a1574a138aa1207a30210b4e404bea6cf3618a5542f09676fcd44875", "format": 1 }, { "name": "plugins/modules/fortios_log_fortiguard_setting.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "6a28855fed46a7aaa4774dc71d72cacc243e43ca44c326645f8d2a9d2c8332fb", + "chksum_sha256": "6432f837e69f07ec0877044d9e87fedd8853813e8ad08db294f50cbbf6aa42b3", "format": 1 }, { "name": "plugins/modules/fortios_system_replacemsg_mail.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "533e1673284365cbff528191d706b8b7a65fa7a0561ec40379cb6b8dc28f6a78", + "chksum_sha256": "05c730981a0390fc28e985f199bb4ef0c999574da4a0a61310edceb4736f0a1c", "format": 1 }, { "name": "plugins/modules/fortios_user_fsso_polling.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d0d053b6edb6b107733db7238e41abcb298046d8406653eaec8426aa0c014276", + "chksum_sha256": "d7a0b4df8521fc5d0fd9e53267310798e18347a906e0dfe60ab14c44b19c343e", "format": 1 }, { "name": "plugins/modules/fortios_vpn_certificate_setting.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9e2c445afcebeab333f6a0257b0f9fd22e737f01f246c6c04be00f78c0b1dbf2", + "chksum_sha256": "bd39153a3a9c32e4d83fe269f8c25c89025b7f0cbfa98e411da5036d39a2b53e", "format": 1 }, { "name": "plugins/modules/fortios_log_syslogd4_override_filter.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e6ee86341a2c41ca1301e72a7682d3ab03a1cc776e42b3a5922a2632e613dd9c", + "chksum_sha256": "0144d48dd317f1a5218f1e6a619f84d2d876a56324e695a5a3a57377fb792feb", "format": 1 }, { "name": "plugins/modules/fortios_export_config_playbook.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d2b870ed88764af648dd5df585781fda2233b70e717588ebc6b07c0b76b06518", + "chksum_sha256": "9fce1486841a9eb4ff5c7627b5347003937beb42e0529b2538493b6bfca33de5", "format": 1 }, { "name": "plugins/modules/fortios_wireless_controller_addrgrp.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "176c96fe3017f02aa642d56b29009acc7e055266b9a727deba21b1b10d3fb777", + "chksum_sha256": "7aff802ce22cb370a6802b19cfbadf05e7c90f0cf29d18411dc32a30911a84f0", "format": 1 }, { "name": "plugins/modules/fortios_wireless_controller_wtp_profile.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ec5bee39ba477b3b73c6df82a656bb16f685746411e2ae9f24948a62cda61b86", + "chksum_sha256": "c0f17bc09c09710a0b1b7325ede9454354b930b94d15ff4fabf3fffb570e55aa", "format": 1 }, { "name": "plugins/modules/fortios_firewall_multicast_address6.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "b48b666eeb91efea142cf18b03fa6cca67979af1afa194737a2fab17073db27f", + "chksum_sha256": "8e5e87e8855c43a518b2cca14f15fabbecf1cd555115352759b36424f14d3840", "format": 1 }, { "name": "plugins/modules/fortios_wireless_controller_snmp.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ec3e0cbc9d28642810645cf6452cfad14a32ed2e5382336a0cb4eaf9936d15cf", + "chksum_sha256": "5997f7ad0debb296389f2315052fc261cc347ddca6aa5dd5a3807d17ee11e431", "format": 1 }, { "name": "plugins/modules/fortios_wireless_controller_hotspot20_h2qp_osu_provider_nai.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "0efd63e53d34d63f832eaa122bbb42981d8d14b0203dba8db45f2b389f4cf683", + "chksum_sha256": "dd0e38e056459337a276337f9093ca1969cd1f096166a5dbbf1ad95f17f6b11e", "format": 1 }, { "name": "plugins/modules/fortios_firewall_ssl_server.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "526d15940d4325ea53297320ea802f892bfc64445158d21cd8ccc1b9ed9bb800", + "chksum_sha256": "03ad59b0cbf39a9dab577663ca8863abc05884658187a47588a3dd6bf1b58859", "format": 1 }, { "name": "plugins/modules/fortios_firewall_internet_service_sld.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "969a2d896f96aea663419132d863c83c491c459f2f0bae27c3289a70bb6c4cf1", + "chksum_sha256": "cbc3ebf48f35c5bcf6f05a5e6431866834d72491a50ab8f3f72126c3606d096d", "format": 1 }, { "name": "plugins/modules/fortios_system_link_monitor.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "5801a660bd13e43b326728af4b21530ad9f78bbe6e45a9b724810029bbdfa1aa", + "chksum_sha256": "79826cfee5335cf98ab22f40a13079b466206aed0e9e8a03ce3cfb8ebe669c18", "format": 1 }, { "name": "plugins/modules/fortios_firewall_dos_policy6.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e2f35d585c9df5455a41cf7a3ff56ba137447fa8c7977da821e7944f05df7b86", + "chksum_sha256": "c727b6a55183693b190f614af9391ec49e2aeb56345d17afc263e69ea82389e5", "format": 1 }, { "name": "plugins/modules/fortios_log_fortianalyzer_override_setting.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "10d322b3989e4e31be726e4137fe065c969044bfd1d4b4832ef0f0f493a85ff4", + "chksum_sha256": "ddad02af393cf52a21ddaf2d63408c51dd5fd0f7f956ca929674b8e9e4ee6fd6", "format": 1 }, { "name": "plugins/modules/fortios_system_snmp_community.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "4ab5bcd583f7b1fe7b069d560fb44ae80ef6e999eb8c15e7975d544eeb07c78a", + "chksum_sha256": "80913d526b878ca4cb0d9ce6df16246bc2b8795573692a6e5c83fe311f07df42", "format": 1 }, { "name": "plugins/modules/fortios_emailfilter_profile.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "167cc4e4c8ddaea9b58a87643e4e322cd55a6025e623c629f36c85ee500da37c", + "chksum_sha256": "1ba3e9036276fa8c02b4303a04eb0afb03149245fdc2bb7fa9a10d3bc50dfef3", "format": 1 }, { "name": "plugins/modules/fortios_report_theme.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e67b8b9d0fe43142162d07397504998bd3e8d429c10fb1ff9a3966888678ee94", + "chksum_sha256": "6f9c87c1f3a77702019a1678a841ebec6ef4903b707fe9eddfead28976ec336c", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_acl_group.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "b8854df333461728aaabcb8f57c6815aea4e68157faf6dd639bb82fbf5834fd4", + "chksum_sha256": "cff615d167909d288afed03a27652552f39a6185b7c103ce73335bf5de730270", "format": 1 }, { "name": "plugins/modules/fortios_vpn_l2tp.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "12deb78f39ef02e2e50c0762b58d094790f9e68233989f213e3b8321feb12332", + "chksum_sha256": "3edec3021824dda50ac12131070044704e17832a3a732a8e8d44fac809e1e0d4", "format": 1 }, { "name": "plugins/modules/fortios_vpn_ssl_web_host_check_software.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "1c06bdb29d43dc8b4f4b4224c477e8dc9c08559634075b2e51c7bfefbde62f6d", + "chksum_sha256": "b3ccf374a30d49527b075ec4fa59fc954f46c4da506fb4e0532b516fb6b792ad", "format": 1 }, { "name": "plugins/modules/fortios_log_syslogd3_filter.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "4f1a689bff1ed9fca8b9da3328e2905cf287c7992aa0dfb47f48ff2352c5f85b", + "chksum_sha256": "2fb2f01626eff8611b660b7c4c5ccd440e21ac83e1a79cad82769670378ce6de", "format": 1 }, { "name": "plugins/modules/fortios_system_fortindr.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "07406f448b4cb4fece5d5d870fb6f70e3aabf67dec9e851b5bdc04f120596850", + "chksum_sha256": "09a093d59635f8a086ff2ddb335fc8f1b283fa3ae52986984ed5d02e166d1f67", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_initial_config_vlans.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "635717190c9fae1ec169754ac97abba297379431bdb4294eecd4ffa0ea067265", + "chksum_sha256": "114847adbefd773d40c4a6b1df021608edc32d2093aea8edfb622afd37a463c9", "format": 1 }, { "name": "plugins/modules/fortios_system_replacemsg_sslvpn.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "6e727311da29129be6ddf032ed0104e78fd638b392800528c27e0b1593ddb1e9", + "chksum_sha256": "6f9c19d8b6050a33b68a3ef02e1a1ad684d89f9b7b60358fbe32a0c47e96be7b", "format": 1 }, { "name": "plugins/modules/fortios_firewall_proxy_address.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f59ed2cd48da8f415b5293affecdd7c885ad4bdc054533cfba69775675ea7b12", + "chksum_sha256": "93f61f68817f2104f17976b41dbedc6d042dcea6d1017fd128a917210bd5a4d7", "format": 1 }, { "name": "plugins/modules/fortios_router_aspath_list.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "4266ecd03cb4ce2b960faa83ba19563bea4fcdcd7ff22db31b4ac627961feeed", + "chksum_sha256": "3ffe37c0e663d39f02d70b3c62b31620eb345cca4229c4caa47eaab9fb05cf0f", "format": 1 }, { "name": "plugins/modules/fortios_router_auth_path.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ca017c642fecb66587a89e284d88de89af6c148bc2abaf936964310f101af03b", + "chksum_sha256": "8037b2859f42ac266f16efd00ebc088dd6edc3596783f97f57cb292014742d6b", "format": 1 }, { "name": "plugins/modules/fortios_log_webtrends_setting.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "badc9da3217358c182730d769ec645a44e99dffa1d19ac604377905304abe322", + "chksum_sha256": "80b778889bde1200d060481439ed01b8c1506e86202543d5a79d76d526dec8c9", "format": 1 }, { "name": "plugins/modules/fortios_authentication_setting.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "5f8d3e8d74b6b50f0b7c558d8f269c2d4273e43d242f2dc2b3da51803ccb0d42", + "chksum_sha256": "3620232694d6920b7b8be11358f731eb0dcb924b4e49258a53d951d821f9e236", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_ptp_interface_policy.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f7fafb3120158b60d2a2e6a85b5b725058eda69e7957ca7d29e20c89b8bb37e8", + "chksum_sha256": "a242b54a356bd374fa630504288a151c627b1c81b0b0762cf331690180b9b604", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_security_policy_local_access.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c73121f046166451a35bad69050cc6b034fdcf314d5fc151720df110479ecb87", + "chksum_sha256": "fc35bce04d5dfb0e5f10a5370f2f5f2bae8250ba8c862ef386c12b70eb0a73fa", "format": 1 }, { "name": "plugins/modules/fortios_wireless_controller_access_control_list.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "30ca50447d0166e3b07e58c17d72656cc16b74d2d4c22418ea3a4545294a5856", + "chksum_sha256": "36c31b03dfcade9faee8ecbd21a9c157577e73abc64c680d39f223e2ed35f666", "format": 1 }, { "name": "plugins/modules/fortios_videofilter_youtube_key.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e8c39b5e39712c98dce8cc2a70adf56bfd09bcf30b2de937b566d0bc4ad7bd42", + "chksum_sha256": "a33c2c14f34ede12c0d84f7176fd2e7936e3008a46c790f3749a414e37d378ae", "format": 1 }, { "name": "plugins/modules/fortios_endpoint_control_profile.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "238a7b4f2fa3b5528103afea8cf35d22157a4553cb55306bfcd174906c3227f2", + "chksum_sha256": "c138f96d0f9c3f8f580c1d1c7c1a2f790abfbc5ac3d643a7fb57d2c86b51282b", "format": 1 }, { "name": "plugins/modules/fortios_certificate_ca.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "38e7b51038970873c402605585e964d4e5059596d27074db2c7584dc0747a35d", + "chksum_sha256": "e5da5b4f820122dee73791ce573915bb7da2fb0d13f17b1914087be9e1202263", "format": 1 }, { "name": "plugins/modules/fortios_log_tacacsplusaccounting3_setting.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "83434b818b5cb1eacd3544031479890b9533eeadf4827561c8529dbe864d3497", + "chksum_sha256": "c56a6985b4b57db5098404e8fccddfdba190c6fe82cbe5b3290b11ee442c3c5c", "format": 1 }, { "name": "plugins/modules/fortios_firewall_service_category.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "185f1a432f42a7752e52924cb5878a1a9ddce516b6aa9dd6cd6cd1be6554582b", + "chksum_sha256": "b67a4858782a4ed83a4df5993259a677bd874d4420c81db77a58f7fb9b2eae59", "format": 1 }, { "name": "plugins/modules/fortios_icap_server_group.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "bace9a373c607f46719c1f5b0c32815a0c09f68e0c304df3a6dff217f6c1625c", + "chksum_sha256": "190e5c5d258fc17f09360b32256577a1889b5c416829b73d8c19329ef34619a0", "format": 1 }, { "name": "plugins/modules/fortios_firewall_internet_service_owner.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d1ef78594f8fc6af313b5a83be8258bae5443b8a470c17fbee513086c7581bb8", + "chksum_sha256": "4db3cda9d262891ff3164969286e349baab7faef3adea54c664f251b37295e03", "format": 1 }, { "name": "plugins/modules/fortios_log_fortianalyzer_cloud_override_setting.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "4170db1359b0d6cfb3822d1af23b947d0e8ab50277b16e1a906d8024aaafc746", + "chksum_sha256": "0071d3009924dd05f1ddb1cf6c545a266145c5bc2306a16e87a9e3819bfab176", "format": 1 }, { "name": "plugins/modules/fortios_system_mac_address_table.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "5b05774654afafbe05a90e8612202d573b49fa7086dceb70b2cc10957e62d9b1", + "chksum_sha256": "2ac65722f7780d47443481e584942416ff27a4bd430c383fe780fd300e371008", "format": 1 }, { "name": "plugins/modules/fortios_log_syslogd2_override_filter.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "213345ee7c8d1f6c5e21ce7423350ce3bf8f15029c30acbe2fd0f5515dd909c8", + "chksum_sha256": "1b5289a92de54e5c22c6a3d9418c9988f0edb540da31233964f361522a72cf28", "format": 1 }, { "name": "plugins/modules/fortios_system_replacemsg_webproxy.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9f76911d8d1aab9f5a9de3237b0ec9c75682d5d95c077a92bf521df32e904f07", + "chksum_sha256": "78063f730ae2b34dfcfdeba58f00c884b8d93a8cf25b11787caa49cd12c7afbd", "format": 1 }, { "name": "plugins/modules/fortios_voip_profile.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "52452a8eee6cd8afccd8269ab3c1b1ebd493a7c7c197ccbd260f6d3ecdb91a40", + "chksum_sha256": "f9f595f6a3cf06296e497d034b28b8fe032b7a6eaefa1697d1eb6df802b57a36", "format": 1 }, { "name": "plugins/modules/fortios_wireless_controller_wtp_group.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "3b8cf153f7a47cb2063632bb3f11ed478f5a59077025a292fcf8c60cc8778407", + "chksum_sha256": "8b328a387139665c84d026de8c322b1177df1b2bd1b2a87ffdb63946f62eecca", "format": 1 }, { "name": "plugins/modules/fortios_firewall_internet_service_extension.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "505d5b79b347dbc695f76ca17066d7b5dda294f59e2fcd7d8f852e7507451e1e", + "chksum_sha256": "16b7a1c792ab9cd539162274d3a730c32037141eb0e805cf39e848d624991342", "format": 1 }, { "name": "plugins/modules/fortios_system_ipv6_neighbor_cache.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a82fccab2f509f5182f49c5978073c5ac6dc8567907074e4789ed4ff06813696", + "chksum_sha256": "737d8fa3e57b606e43e36a08fe412f9a9bf95794b9313231c9e19286bfca72c9", "format": 1 }, { "name": "plugins/modules/fortios_wireless_controller_qos_profile.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "06899ff5ff510cf2c0d92bff78394d7b13722d3337795203aea3a9e317a84bff", + "chksum_sha256": "97a1c62ccbebf4d7ca8733fc0cadd03a418d682c8f72e02c9e654c8538747897", "format": 1 }, { "name": "plugins/modules/fortios_user_device_group.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "de9e815f48f1d82d976134291ad2cd0410da1d43f9dc35eef8c8a04df7ca3253", + "chksum_sha256": "c684d13b1a92f9e460e53d9410687a0e01da566fe4f9cf5150a6dce9e6c97f35", "format": 1 }, { "name": "plugins/modules/fortios_system_pppoe_interface.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "81691a01a65b4f845a0adb6cba43d3ea5148da3aca4e1a9fefe8c3d03949825d", + "chksum_sha256": "7f0281a11354568e9abb12ed9595070657c9135cfadae3d468ef9033c33f7b30", "format": 1 }, { "name": "plugins/modules/fortios_wireless_controller_global.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "506f060d014b77d39dee1d77f4995d57e4c13ce0d8cfc127b5c5a03c3d3c267e", + "chksum_sha256": "fd2aaea08af1dd13fbdffc8145ef7f70f731c5d341a7e7f666750c7acd681de6", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_mac_sync_settings.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "b67be92cdf6402a1b93d201df20f7e016ec370e7b687de8a3aa8469db0b62760", + "chksum_sha256": "c86d9cad1b1ecc22ae5b0cd856264f09b6ff131a33cb2d4c56abc2fe208b0d44", "format": 1 }, { "name": "plugins/modules/fortios_firewall_shaping_policy.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "865df51ac805924fc4640ee555abc6ecc275764bf7768c34f4781084a23f7cd8", + "chksum_sha256": "b576d94c15ff19261ff2e17a121d7825b836afd69db039d7407644d7f1daed11", "format": 1 }, { "name": "plugins/modules/fortios_system_autoupdate_push_update.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f9b5d1899263fc7ce427d77bebb83c46d2a9c2577d2ac4a679a4c5398deb4c16", + "chksum_sha256": "de30f3a657fc57e77575dd43905e7a418ef84531ca8dca65fb9f8c4f65876d57", "format": 1 }, { "name": "plugins/modules/fortios_log_fortianalyzer_filter.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "60d198f45df9572690b40c4ee6d601b1c1cd7c8541798e33391b0195244f986f", + "chksum_sha256": "11ed868126eddbc4cf5317a78ce8dc6f86b388c88f4e501b0b961f40a500001a", "format": 1 }, { "name": "plugins/modules/fortios_authentication_rule.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ade52e88a50d5fe51a29f7b2b665eaa309827c31125e52da676c16c4dcd7c2a6", + "chksum_sha256": "2a4c9f45ce6008ad71f746bbf08e674a685f80b4e131c020c225ae557da77a6f", "format": 1 }, { "name": "plugins/modules/fortios_endpoint_control_settings.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "bf87cfa32925218e60bb073c8615fc9e1fcc4c378c675bc0cd92e7e3edd1d73b", + "chksum_sha256": "f27f656b981fe0dd93b7a40e9404c32cc981275731b9d500ef38b2c85003049a", "format": 1 }, { "name": "plugins/modules/fortios_system_sdn_proxy.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9303d906f87ac398f7eb66b0e488a89ae2d93b64d428ce74dce367e725167ef9", + "chksum_sha256": "0ce6d311bd22520b669428035a33dafed0025af2503863643a13ee72789eea93", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_ptp_policy.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "382f3121f2209ff8c298e3b2f9f2046fd930a856d826ba29eb63d0fe0de240be", + "chksum_sha256": "58d8538fbd298f4fe76559cdfe5c562f688ce8880526b7947c428e6c85d4d4df", "format": 1 }, { "name": "plugins/modules/fortios_system_snmp_user.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "7df7e4d02f2179cae1d88ad7a3ea1d6dc23e1ce9db94d12d3b435df8e6262b13", + "chksum_sha256": "49bfceb418a55fe6caaa80f41ded3fcd7f761566887af50ff3e4322fa83e110e", "format": 1 }, { "name": "plugins/modules/fortios_application_custom.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d5b190e4d53f35a3c66b6bd1a18fdc6c142e86d547710a8f2b97014dcc8d1951", + "chksum_sha256": "ce11eed2bfbcffb0ff0369aea3424fd3edd4fb01af8e7bfd085d207b870c9c5b", "format": 1 }, { "name": "plugins/modules/fortios_system_nat64.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f688bd8ef2e8496f944bb2b8354bf33f9ae4a83f956e2e5866feabd928b85094", + "chksum_sha256": "4f14c286efcbbfdb745ddc13083e3ef43a13dc40373e7ca8733339e42429369b", "format": 1 }, { "name": "plugins/modules/fortios_system_console.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "5370d7ae8dbe195e38e6082665851b1e2c40776348efb7d20b935160825f58d2", + "chksum_sha256": "147d2f5c1dc45f47fd2f027dbb745a890ccf9995c294d0f8b036bb7820df8b0d", "format": 1 }, { "name": "plugins/modules/fortios_wireless_controller_hotspot20_anqp_3gpp_cellular.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9792d41971bdaad555c24da61dd3cc87cbf5de414fadbacfc0fac5521c85d294", + "chksum_sha256": "71b273160a09ac25815a401c19b82fdec5e652cdbf587d7d2ab153c94403e138", "format": 1 }, { "name": "plugins/modules/fortios_system_ike.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "82674db4afb4efef189bebffd500c761132409ed62d4e341a2762325f369d71d", + "chksum_sha256": "95d7fa189db68ca6cbc83f7fac5d7daabba13e9c7e04fe9ebba90292172deb00", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_remote_log.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "63632e3c85349b9d1f3b79a2d1ea0a8d81501d6b20ff2b4560405fd0a953357c", + "chksum_sha256": "8bc5ceac4d0b05d244326e69911ff691552d1211b2c754dc65b9ccacc39dfe47", "format": 1 }, { "name": "plugins/modules/fortios_system_sso_admin.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "756a79f8aa196b83d555f303ca8f35dfaf326ce1c4cd594aae423df803eef57e", + "chksum_sha256": "a4e52d037ffad2866514599aad14feefe8872b815babb6a248818456261bf5ac", "format": 1 }, { "name": "plugins/modules/fortios_log_fortianalyzer_cloud_filter.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "4e7105b4b99016d324db3acd990e575b31afeafd0cdd44e98407364e2016e7c7", + "chksum_sha256": "d17deba17dab7aa75091544193f47a2f3f01e7cae4218222659c9fa05170dadf", "format": 1 }, { "name": "plugins/modules/fortios_extension_controller_dataplan.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "b0915c8bbdd233f71b673e6e5c4898251ef192dd0f34ef30baa5088b0aae95e0", + "chksum_sha256": "aa772e05118c2f8e28b0d26d3c7b04e1ec8ac4ce468da06b4c357d5c784f39e1", "format": 1 }, { "name": "plugins/modules/fortios_webfilter_ips_urlfilter_cache_setting.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ece4a7028079e787dcfd46223bb6093877cc85c6c47bc27af9ed1637cb139526", + "chksum_sha256": "31cb1bec90725f36df2d72d49c4849c53af8cd161957af71c480c49f5da9b5cd", "format": 1 }, { "name": "plugins/modules/fortios_system_session_ttl.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f35eb05b71fc2ef1fbed6050d3e4762eaf61a03a43091b0395c8feebd243588a", + "chksum_sha256": "99a48b8f8153aebc541faed50fb76566f50a0e6ae3b181aca9d03a0462d64b78", "format": 1 }, { "name": "plugins/modules/fortios_firewall_profile_group.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "239c1d583e52ff7dc5ec1090c686532995223958234d1eb67ad3d31952fde340", + "chksum_sha256": "8f100de645e3673df29e81391b5fccaa46402c49b6c4520281ac5d0d8116d9ef", "format": 1 }, { "name": "plugins/modules/fortios_vpn_pptp.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "968c7f79696769cd3f4069556fddee47557d2eee13d17b644c295437441268a6", + "chksum_sha256": "b08a5d42e5dd6d12f469c687ef5177fa4e61b33f2b898be5b80f7046812c2865", "format": 1 }, { "name": "plugins/modules/fortios_waf_sub_class.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "de9461a3f79f60f773c6f33b25c61a79fd16528774d1fdbe08a0c7858520625a", + "chksum_sha256": "7054826aa2b66a2c8f6b42b42d2849ba736f3cefa8f09d01d1ba56c6f48c2703", "format": 1 }, { "name": "plugins/modules/fortios_spamfilter_profile.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c37e5b11d4ec225227656168e016b15170d0c7aa5b158cb917e0d1c65b344d9a", + "chksum_sha256": "82921760f5b2c80e9cd614d990dde2d42c2c8ed0d8b5b5957330432d6a509407", "format": 1 }, { "name": "plugins/modules/fortios_user_saml.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "7268240b9ed2903929490ded7bdab43c567c5c7be07558debaa4458c61c49f38", + "chksum_sha256": "9b475ae9db4fb85440918b2b9aed17afa58e0096a48d1a34830418286b1d99e8", "format": 1 }, { "name": "plugins/modules/fortios_system_fsso_polling.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f37fae0bdb3c728d03482fd976867bf7bfc6d08a6bc6897c0335064809125e75", + "chksum_sha256": "ef34f4df535943386cf6b9ed1fb123f719f994c5c08212b3fe565fa557331ca4", "format": 1 }, { "name": "plugins/modules/fortios_firewall_decrypted_traffic_mirror.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ffe958f2e339ff4c5c9272bf0d94427030251962d30d30fc75083e6b6e3e5c9b", + "chksum_sha256": "b4a1605c2383987fe17fedcd6653862ba1a98db15a2ee2dc2469ac433fc6b7b5", "format": 1 }, { "name": "plugins/modules/fortios_endpoint_control_forticlient_registration_sync.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a660387d0c8d817b050857ef56947e7698c130586378ee5e2dd719918fd6acc7", + "chksum_sha256": "4bdcb4b709aedfc9492ec4a9c9741ba034073a39a8209fe65f1d0a28a2157bd4", "format": 1 }, { "name": "plugins/modules/fortios_firewall_ssl_ssh_profile.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "1c177e30801af03caab31532a8f9741db1508281fd681df6c1bde5054f30a7fa", + "chksum_sha256": "86676252444f5e24412aed3b57428f8ab3822e8fbd0427aa3d4728b4fd7223ea", "format": 1 }, { "name": "plugins/modules/fortios_system_fortiai.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "13dc87a033f5f1b6d8ff9c997d5bd5422a0a1749745aac8cff3d7a0f0106a6e3", + "chksum_sha256": "cf4e0bbd27bc149414e12f5a1c5774cb570926a75346d13a7147fa08e44d924d", "format": 1 }, { "name": "plugins/modules/fortios_system_sit_tunnel.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d9efb4e09da2be095ef246a8ddab22117d0d569023baada26eaf8edc5f6db7a4", + "chksum_sha256": "c9f97f34bccde0c7a934b0a5001381d92d7a33ebe3f4e9c8b350af9497f1040a", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_mac_policy.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "005fb6ae3508245f1fe7e6be083c39929280a6196c689edf61c57f684925343e", + "chksum_sha256": "301778c9b45ba650f965c7427ec22b15216009d87bed320cf84ea2841044c71d", "format": 1 }, { "name": "plugins/modules/fortios_router_prefix_list.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "b92ddcb7d9d7a1a84207ec1bf2c8fe9763b5602c1d9917d2e3cdbdd6bd871696", + "chksum_sha256": "8e093dcdd7a74f719078f797d0fd8dc0b4418d82a6256be3f2fef51dd3925677", "format": 1 }, { "name": "plugins/modules/fortios_system_virtual_wire_pair.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "95223f0e02a1621052a47d05532e128dfebdb7082830fe714e67a015668b951d", + "chksum_sha256": "cb35520f5c7a17559f675d6185ccb38cf4408cbf09f64d79751085ede4e58658", "format": 1 }, { "name": "plugins/modules/fortios_system_external_resource.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "fad798c37b2c9c7df63de7bf8fdf4e71a9ca9dd3cc947500b34b8d2dc51b2eda", + "chksum_sha256": "09bfa9508c6e9be9e66c8999d646a9641f803a05424ece113944bb32b6c9cbbd", "format": 1 }, { "name": "plugins/modules/fortios_report_chart.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "55947c04a3edd7982f4949790a8e43399d18f01d77130d4e7d32f4833aef927e", + "chksum_sha256": "53ca68c7eab24758b427bd8689138c1b658bfb0676447f4ced2f100bad521586", "format": 1 }, { "name": "plugins/modules/fortios_firewall_sniffer.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "19d21d3bed22ccfd9b49f2524da61cb6dfc66818eade825238ad338418989671", + "chksum_sha256": "14b16d8f131978350886902725ff6e0e38d7fea5355352021e4338e96035a9ec", "format": 1 }, { "name": "plugins/modules/fortios_user_domain_controller.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "62debb8f8c6c7ef784026e904b131c5bca9d8358db89ef020822284c3df0898e", + "chksum_sha256": "6cd1eb0772efb5ec67d8c9cc7e6847d2f541da0c0623c01bb31838bbc09fc2a3", "format": 1 }, { "name": "plugins/modules/fortios_web_proxy_profile.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "50a40a9143780fd5026c82daf7d6093e4fbef196cbbe58c42306c6264bdddbfe", + "chksum_sha256": "14b1b6791f68c387cc7975fe20733012ac2697431fdead15c28dd9aa54954bfa", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_auto_config_custom.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e9a7d7f9d366df4eef5a6e76a473548860531131a77fdd1e17f5aa99192101e1", + "chksum_sha256": "f89786e6ede9eabc05ad3d2c7ccf2ae8a9a4617c3f7d20c8ee4486b19eedec18", "format": 1 }, { "name": "plugins/modules/fortios_webfilter_ftgd_local_cat.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "33772d1ea115401a1a0963f9f5b7ff5faa9e73f06adf6b4f17e2561bdbb62702", + "chksum_sha256": "d883f3aea10a275f38a3b1c1e62ef2a4acb2b4bdbea1a00273addf932332ed0c", "format": 1 }, { "name": "plugins/modules/fortios_vpn_ipsec_forticlient.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "bb48d550f347bb3bc2de87f85a3b28e48a5ee3687e046e0cf09aae5048ca15be", + "chksum_sha256": "8649fe0096de75d18ee716774a49c989c89f0e9030ff08c68a461b5abb70e511", "format": 1 }, { "name": "plugins/modules/fortios_system_dhcp_server.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ffe8734286ab3465c1152cb000dbce82f975264e614929993e047beb4278368b", + "chksum_sha256": "628c6c63fd7213c3c0d7f7fe68b748be76ea4596912fe10b7d972f5daa0fc5a0", "format": 1 }, { "name": "plugins/modules/fortios_firewall_internet_service_ipbl_vendor.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "332ab95ad0a53d6e2036846063ecb42c005af3339e9e3ad6297505f0e76f58d8", + "chksum_sha256": "eba2fa5cfac8d52e7710e97069156c9aca52716e8640c7162f13566354eb6c1e", "format": 1 }, { "name": "plugins/modules/fortios_wireless_controller_spectral_info.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "7b2a55925976f048152df9ff7a71a2cbf672cfd0490fda1a32c19d6d8d8b6def", + "chksum_sha256": "5eb8607e4304e447f00f68850d3ffb25ca4c06ffe2b883bfadaa0812eb9874e7", "format": 1 }, { "name": "plugins/modules/fortios_vpn_ipsec_manualkey.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "6544b7f72dc1b4f94aa4451699ffc189bfb7b02b89084d57f0bbcc1caf5f485c", + "chksum_sha256": "f2c77883821d074a017ae11da493470aba09634b464c2b2c696cf666d2bf3822", "format": 1 }, { "name": "plugins/modules/fortios_router_access_list.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "2510be1990b63845b59067b47b1647f7cc3fa922921be35d213af6e39324bdb1", + "chksum_sha256": "79692477e82f8ef19bc7140cafb147a1503634be630ff64ae50e7b4520ffdba6", "format": 1 }, { "name": "plugins/modules/fortios_log_fortiguard_filter.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "50f2b051d0eb0282455092b4f716d6abf32390245c941f88505ba2e7ec8759e9", + "chksum_sha256": "830f7cfd9068759b3ec4b8393755eb3e56a2dcf872217fae702127f451e29749", "format": 1 }, { "name": "plugins/modules/fortios_firewall_policy64.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9c0ab4fdae5f102e4e8897a8afa87f1c8f54596d3932e0ff6c854045bc3af4c4", + "chksum_sha256": "fc6cd3fa8618db232b0fc09a70c52f68cb33fd9e70e01fc8f17e474964e7e58f", "format": 1 }, { "name": "plugins/modules/fortios_system_wccp.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "aeec58f51326b9840f78b26cf740ec059b20320170119ebc4acc5078805d933e", + "chksum_sha256": "aa821421f8a947d09073817be94972c4ccbdfc01f38bc703e79e37537352249f", "format": 1 }, { "name": "plugins/modules/fortios_user_tacacsplus.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f580cb53509739c0b46722c44ecf5fd9048b5df298b3b7fab1f1ab84c0267420", + "chksum_sha256": "8defe2be81d5256276ba48c87e955420e6d005e2b4ad9d5c6dd952ff50c1c266", "format": 1 }, { "name": "plugins/modules/fortios_user_device_category.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ba2722d13dc98234290367920463372761d6203680f303f1d6c330e8628cbba1", + "chksum_sha256": "473adb25deb32a193fc08db7bb93a384f94d6f73107147da3592d77f0ba6c05b", "format": 1 }, { "name": "plugins/modules/fortios_certificate_remote.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f6714f3f0ea06ff07f56b2fd3d91c3bdc2e26c2e2a730ec9e505a165505d441e", + "chksum_sha256": "d25e487b486e037701accb51c08d9855b9e42875f0847694f559813a0abcb793", "format": 1 }, { "name": "plugins/modules/fortios_gtp_apngrp.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "6f0e7589a9f557764cfb1f68bf32002dd3672b2a146b402a812bacf378fb8479", + "chksum_sha256": "2d14de8b9dba7c04d914eecbadb634a168f2ce58e374b0dd17e5c88e3a0f9de0", "format": 1 }, { "name": "plugins/modules/fortios_wanopt_peer.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "cd0522e73e094837e855274fe29d2b18cea70d41559bb3e5f4c69004e5438095", + "chksum_sha256": "72eadbc0c61f63c9c306f2b4dad1856b38d566a292d7959117aa827fb85e1dea", "format": 1 }, { "name": "plugins/modules/fortios_log_fortianalyzer_cloud_setting.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "7422af87068536b891be7e57780be2f8d05ccef28944d712c1be27ef1755a137", + "chksum_sha256": "c832b0f53a187128bae6fc3fdae2937964913fdcc9f76c96b116f45a17763d46", "format": 1 }, { "name": "plugins/modules/fortios_system_vxlan.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "79a46657b533624c64b5833811190901da79d41e56289b3e343b0bac6fd20d2f", + "chksum_sha256": "93f5725e685e783990662504135109c974e6ad3341c1a2f4c8e991efb72f94e8", "format": 1 }, { "name": "plugins/modules/fortios_system_arp_table.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "cd24bd17f130c815bc25b37d7a444ca150f22fedf417ccc0bf5c3570fd87dee6", + "chksum_sha256": "4a7f1abde06cfd69378fa0a6692536952f7a8f9edcead8f9fd63ac6a8c1672f5", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_stp_settings.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "13b8d79d98ca18f9ca34a3b2abf0a0a06882a1f20222a2ec408622db85967c07", + "chksum_sha256": "6d53ab3085205a0ebc2e1ce2c2b0512ff615d6140df4bf2679f9261bfb69ff40", "format": 1 }, { "name": "plugins/modules/fortios_authentication_scheme.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "2542148029835ba0d3fe9058dafa214820374cb17ab47ed5d18ebd99b27b81df", + "chksum_sha256": "d56764ccf723c49e751d5fbec3e7a327458722da1d4dcbe024590250753c1430", "format": 1 }, { "name": "plugins/modules/fortios_system_automation_stitch.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "01fc4e72285e3f6283d78b6c1b129b8300a86d6d3e9ab018bc40ab671c6e91e3", + "chksum_sha256": "fa03758d7198f9f3f6940c6432ce0e2b6e982a97478c70a9eba4d7b573b94a62", + "format": 1 + }, + { + "name": "plugins/modules/fortios_user_external_identity_provider.py", + "ftype": "file", + "chksum_type": "sha256", + "chksum_sha256": "981b507467b10821f16d340dda5b432cc2ab8af6803582e96a3ebc96a41a224c", "format": 1 }, { "name": "plugins/modules/fortios_log_syslogd_override_filter.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "67a23f944010357534b7cd61da6b4862e7c30840f2329b7d179a148defb1e5f1", + "chksum_sha256": "e106188ca37a5f44f0756f42d1fcb70ccabd9b992e3e946dcce1f20dc20b6b11", "format": 1 }, { "name": "plugins/modules/fortios_system_snmp_sysinfo.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "50b97f6b304eb4740606c7a766c18c0208a6c0076683288f964aaa3540040918", + "chksum_sha256": "0944c15e4abb2d67086ab878329064f4216aec7a2f5afeb7e5c0e7653f65fdf1", "format": 1 }, { "name": "plugins/modules/fortios_icap_profile.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "17c3171c524f729befc33e3f8d6cd0ee964e5bed524638e044b61323366f67ce", + "chksum_sha256": "193a52ae8dd992c61a7510379be2feb23f740474bc186c45aa7b18e764c06cce", "format": 1 }, { "name": "plugins/modules/fortios_log_syslogd_override_setting.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "7781bc6f6da65987f20403dff73f941760dee7927c414311a842d874928a1175", + "chksum_sha256": "305d515f7ca74878366a63216ef150f17cb101ef1db7522261e56b7c1a3230de", "format": 1 }, { "name": "plugins/modules/fortios_system_switch_interface.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "8375e85ff21ffdaeb40ab946fac356c3d72198bdd5e6b5fdc5055786b9ae4de8", + "chksum_sha256": "b9f1c051f97d45275fb25aac296da390843198fdc1b0351f1ecbe66ba73d07ca", "format": 1 }, { "name": "plugins/modules/fortios_firewall_internet_service_botnet.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ecccb65606e0360e710b6f14688a28df53ca04868cd73d0cf3dcef2cb5cdc28a", + "chksum_sha256": "1a620cbf6d9ebe00b47582c47c12df20dea61f0daa695870782b4c8be7cbdd78", "format": 1 }, { "name": "plugins/modules/fortios_firewall_schedule_group.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "18e9de702254919bbfec379afd29c76d5828030ccf8427d9b27f62bfa0354831", + "chksum_sha256": "557587de6a188a43426171a5eadbf4fedd80bb42554ee18ddea815bb9936382d", "format": 1 }, { "name": "plugins/modules/fortios_log_memory_setting.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d60fa2c66ae0413b81954254808c452b89a6c18be1bb0fbbf96d1d78f953b4ed", + "chksum_sha256": "e94747536b87db63996dfb8c3f61a29ed623fbd93aa697467fb9109e20a0237d", "format": 1 }, { "name": "plugins/modules/fortios_router_access_list6.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "1bc388dbc87575e6957d68a0342e69777f29a5d3072caac3120eb06dbda01876", + "chksum_sha256": "2337bd546a39048fe65ba0110df1fab07723a00634663e40287e5ec12d92ce18", "format": 1 }, { "name": "plugins/modules/fortios_firewall_ssh_local_ca.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "20fa8c5105b7ac8477f4175f3189dd2eca6dbc39cdae62c9bcc5a534c00d2b6a", + "chksum_sha256": "3325d748644f4296588c325574a669e20b3a06441836a5e96849b62433cf20ca", "format": 1 }, { "name": "plugins/modules/fortios_ssh_filter_profile.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "600dc8b94a49962015e55104b7206e6f0a82b9c98f4ebd0e71c5dad6c2441b01", + "chksum_sha256": "0c31799a19218972b82e7a2bd1c8a484ed0b3db1e20fb23e171c7367966b86fc", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_igmp_snooping.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "6f8fa42466a615a85afe9275a2f7d9a7b00c00bb8a75288b06867e3e6533e152", + "chksum_sha256": "39b85b3e58b724627de7b052378bdaafe4706e0a8ec125f0c578e5f65dbf149a", "format": 1 }, { "name": "plugins/modules/fortios_system_email_server.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "cbd62846407a11bbd231f4e2d6289d3d9a9197b877996159b299eb5ef403c9c6", + "chksum_sha256": "0e6726d870eb46dd1582e6ddb7f85a40d72809538ea5fb17accd87137be4c84a", "format": 1 }, { "name": "plugins/modules/fortios_system_sflow.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "8693fd65623c6dadac560ef93a856b04d6244c93d877eaff33c471ef1bc6b3de", + "chksum_sha256": "3bfb73e002f64f4a2927c5976ea638f6207caa55914229ba42f299ba64765124", "format": 1 }, { "name": "plugins/modules/fortios_web_proxy_wisp.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "298f9bb4e2882377a913f03b7a6fd03b406a883065bc60f262fd31e3311edd78", + "chksum_sha256": "1b789739b70a76ea14858fee70d61bdfd8cd7ad4854cbb70d9785085f0e1afa0", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_storm_control_policy.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "753a231d2a95c2e30e26f366fb0b68ea3d17f4234fb40cfbd32686ea3b1b212d", + "chksum_sha256": "9976a6bdcff56d894c8dd8db0926d24943ee9163538e870b9ae8151349fa377d", "format": 1 }, { "name": "plugins/modules/fortios_vpn_ocvpn.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "3c6dfa383bd60d351462d5f81aab0a32d3163c4789f9dda8186e98a806175781", + "chksum_sha256": "7693a349fbd44a4dd4c2a1bef45db434f41122ae0a4ae64fb2b18dbc425542a0", "format": 1 }, { "name": "plugins/modules/fortios_dlp_sensitivity.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9abfe5060e300a17112e92f41a1593ca41c42750e1c9c6d6ccd7231c1be75e67", + "chksum_sha256": "1f1e27f050d17fc3e15f0570b46f03eacfd5b11d24f4ed7a819934b6bac824cd", "format": 1 }, { "name": "plugins/modules/fortios_wireless_controller_hotspot20_h2qp_wan_metric.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a4130fc343df074bcf05a5cfc0eaaf06a8f0c8a74c335b303db0b1c58e447c89", + "chksum_sha256": "969ed421422d4839562bac9c7b0be2f72bed5a557d6962e71be158a1396b0f4e", "format": 1 }, { "name": "plugins/modules/fortios_system_replacemsg_automation.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "3a8fafbbce8663ac5a37a80cdb9a86fa801b2f2f9761b7f18d72b48ca25e1607", + "chksum_sha256": "1d91713fef39815cb164ac41fb78d175cc7de1171a374f18ba61186fe4815f99", "format": 1 }, { "name": "plugins/modules/fortios_wireless_controller_hotspot20_h2qp_operator_name.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "44939fd46615be759ad432b8ecdfb7972ca7c440b67936899c922f67126eb61b", + "chksum_sha256": "49a4b72d24cf8abcd43a55e0a686a09bed82907505fe0562ed513974826f8f0b", "format": 1 }, { "name": "plugins/modules/fortios_firewall_proxy_addrgrp.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "2750cee24c670a124f33ad02c81b17aa02ca41804e3fb619f1ae46e14ac6d2bd", + "chksum_sha256": "9de1269f1da9bdd020e1d0f736f90a0bc30890087bb67eb7dec19b8bbc7b6f50", "format": 1 }, { "name": "plugins/modules/fortios_log_syslogd4_filter.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "4e312e0d14fd8022931a114eb8b6cac829fd7dcc7122aa452d03f5ee472d8b21", + "chksum_sha256": "7a0156880072038b57b2d0e16bdcf34221458e90b0921e8e2c4eb02cc6b036b0", "format": 1 }, { "name": "plugins/modules/fortios_firewall_global.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "13fe55d6cb06a4ed375252eb5e92755000fa72787b49d1c77857b1f163c3a545", + "chksum_sha256": "10f9be3ef9c82fb9d952daf66e90226be75114b07407bb8f20aeee47548e84dc", "format": 1 }, { "name": "plugins/modules/fortios_system_dns.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "29eb46d990f8527772c66cce8d90f9b837c782b8a136a24899318c120b3adaff", + "chksum_sha256": "503a7093fa6c4b9d104bd59d5e5e31435db9d69f0bd34b0e27756fdda984ab55", "format": 1 }, { "name": "plugins/modules/fortios_web_proxy_global.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "27cddccccddc91b86a8b48ec8a1f986e215880d11682794d02ad94fe44e3b4b2", + "chksum_sha256": "e66dfa975f1c6bbf07dd75fe49965d6a91a78cc66121d4511fb7ae12358714f8", "format": 1 }, { "name": "plugins/modules/fortios_wireless_controller_hotspot20_anqp_venue_name.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a71ef801e6233471907780df9eac93fc2bb23d71136f3ac9b2e25d139cdaaa84", + "chksum_sha256": "6c4076cdf4139e0136bf9d7cb3689ac912bc7fdf3da56bee80391478f1fe006e", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_port_policy.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "7319100568bd3bdd0c7e7aff09b98c20e193393e590c1140477144642167ddbe", + "chksum_sha256": "410d50c51ae33f37579d1c1ce1facccd69d2e8f1ca4218d332f1d1debbf95e25", "format": 1 }, { "name": "plugins/modules/fortios_firewall_interface_policy6.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "7a58c94964e25279c12e378781862e8cc58dd99bd3ee1d60051565d7405c5352", + "chksum_sha256": "5d0f101b6ce6fa488432344971ce76d2c9c487a766dfbe401e131bac4222d7b6", "format": 1 }, { "name": "plugins/modules/fortios_wireless_controller_syslog_profile.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ef02c568b46f8ba309764982bc3a5c49f950f52e4410b635a447e4a0026bca15", + "chksum_sha256": "3802ab708735465cab88f953f1e04af7cf75e22071424c6d6eb387f952721a06", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_ptp_settings.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "3fef645d46f3f75a6eae3bbb8240ac83ac24a451023606958a9191393de24f80", + "chksum_sha256": "e9895005265d87decb72ee8538ef416dca549d12dc9eda1e7cdbc97871b43c60", "format": 1 }, { "name": "plugins/modules/fortios_firewall_schedule_onetime.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f968c67bbcb511de1896ad17e049aa58fa804e01125df15366e3c7bc0d6945f2", + "chksum_sha256": "782f2b0fe3a1cc463d66a60ed3c730b45080a77659544502a9c462aa189a5ccf", "format": 1 }, { "name": "plugins/modules/fortios_webfilter_status.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "13fc8a21f5f821211071051155f49f807eb1cd8c5237181d4d7b8d2b67397a4a", + "chksum_sha256": "cb7ccb369f0dbd2e2fb959b3db792fc86c359559e01827a70d56fe7141290eae", "format": 1 }, { "name": "plugins/modules/fortios_ips_rule_settings.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c01b1fa34f244b9c36166d10f55d8cfe32ca0585630f2ddfc0c99aafbf1cc0f1", + "chksum_sha256": "3e6548e2ef5565f6c6aaefe431e121dcea13edd3cce460e045e7cd4fbf23ac7d", "format": 1 }, { "name": "plugins/modules/fortios_firewall_vendor_mac.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "fad67956844f1ba23ad1c0d3d9d4332f5b6cdabbbfc9d302383a6d2fb5d91927", + "chksum_sha256": "9487e0453fc519b129b210be1484c86c5dc0f3edc224f3ad8f56dd0415626384", "format": 1 }, { "name": "plugins/modules/fortios_firewall_ip_translation.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "96d34a5f0251c8e25ee29a3bb219d72ca5749bc13e6259fc889ef6cf6262600c", + "chksum_sha256": "4b5768b7bd69b6842d0af91e4423969e42ad25cf6d6a4c89028f2f3685ec8e02", "format": 1 }, { "name": "plugins/modules/fortios_router_community_list.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "b1b9237cfb352517dea28dc28d4bfd8ae902ea903a1376d5f5954f3902c43060", + "chksum_sha256": "9d92d9b360757e1330b746d43b95bde66efa4b12eda930d3d0f2bc8d3bcd7f58", "format": 1 }, { "name": "plugins/modules/fortios_gtp_rat_timeout_profile.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "6960c995e2441d00b84b1e48b568b8b9982fdf8c2679c4c864d889386652467c", + "chksum_sha256": "b9edbfaa9beb121e33d9d431e1cac155a8c69a7d729ef79aca2e2b737cb77828", "format": 1 }, { "name": "plugins/modules/fortios_user_device.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9a063c020236ba58ba5c7cd39460e44cafb786f60f7df57f3d129860fcb16fa8", + "chksum_sha256": "2ac90b74d4284189bff4e665ba636acae3d7b3602cceacf804fb0ba82bf22c57", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_qos_ip_dscp_map.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "fbcf1c59b70d9e73b9b23c988433c041aa113f50afb26c8404c5685b3bd53616", + "chksum_sha256": "4bee38cbbdb972007cafaa6fe4053c905026665ecd11d1e69b5a8af0e827c01d", "format": 1 }, { "name": "plugins/modules/fortios_log_fortianalyzer2_setting.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "1a55a10dce4ce75b8b1e6d17fa4f39330d23414a34df72343feb7ec46418a53a", + "chksum_sha256": "b69883f4a74cb31e5ea70d1a5b24d7d1960ba59ec9971d62b4638871de10d87c", "format": 1 }, { "name": "plugins/modules/fortios_wireless_controller_nac_profile.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c1997c98282535565cfa70bb7934c2ad7a65b7ec3e91756a368c4c4bd0c4058d", + "chksum_sha256": "949ec70189066fa1e4f8e0f8fb09b034f46e52400cfdab058533a1863ea4ab55", "format": 1 }, { "name": "plugins/modules/fortios_firewall_dos_policy.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "73ffa93222f9122fe45dd2c1905ce60b45bb353d4f369e4443f653986720e8c9", + "chksum_sha256": "a04b9a221326b56a63e9c44c83657dab76ba5ee9859ed8ed656cd17714bfbcee", "format": 1 }, { "name": "plugins/modules/fortios_nsxt_setting.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "b010d3e41a14b981f2c5ecce3fa0811f64eb440e36324f8c8b0e9e09db6a3176", + "chksum_sha256": "8059afea74728aa5a505ae1a0f53005d3467362bc99afb3f4262a98303056fd2", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_snmp_user.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c0f68dbb3c21ba27928f064a5a87ec9eff86a2be90aa277e00b16f4f44467849", + "chksum_sha256": "3b0bb50ab2b0eb055684cb8c101cfe1bdc47034e3a2037b2e86bd6b0f43f15c8", "format": 1 }, { "name": "plugins/modules/fortios_system_ips_urlfilter_dns6.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "41904c7559048fcba46f5aff5496f47c75b8d3d1809f680b3b914d71bf020cea", + "chksum_sha256": "62fb916eb75c11596a858ae2781ab408436b6a84e12314bc74a1ae93b4aabc1a", "format": 1 }, { "name": "plugins/modules/fortios_system_ipv6_tunnel.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "67734032ddb071928d73c155c107c6f1a50c2bd6a0478f0bbe9402ec3f0ec02b", + "chksum_sha256": "38bc49d578aeb00b57b9106a2684162649e59650d070ddbcb9b6d4f3721f0405", "format": 1 }, { "name": "plugins/modules/fortios_application_rule_settings.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "3ddb7614efee15d6c8906464b7a3f65f54eefced8a7f75fc475318f727f04f6e", + "chksum_sha256": "07328278f10d7bb8f7e3c50818fb689e826723ddb48006fdb2fe0bbe1ae29e99", "format": 1 }, { "name": "plugins/modules/fortios_report_dataset.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "cc47f0cd86466862b460bd68f98ac96f16b1ce35c1615be010940e7868e8692d", + "chksum_sha256": "fdce9de8c50d5b331d8f32c1b2a92e4ed600e1395bfa5ec44cdfa02f141ce124", "format": 1 }, { "name": "plugins/modules/fortios_firewall_internet_service_definition.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9688bbc373dcba4e330a5df25aa364b9e19da19d287481bc8678cea71b3e0ae2", + "chksum_sha256": "0c35924f33074c0fb8494a69f46f00f37e60ea99325b59e34aaa5b513dbf0251", "format": 1 }, { "name": "plugins/modules/fortios_system_gi_gk.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a36ba9ef7721584e2d97407c3a2d8e70d907723dce908b5a60f4643c028c0c3a", + "chksum_sha256": "8e5a96eafea4f01dbc7cfaab9f5fabe2b3cae7acdc091c5f2c16a97c4759272f", "format": 1 }, { "name": "plugins/modules/fortios_user_krb_keytab.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "840ef444fbdf8be8a9d29c52422e59240b33e638824ee8594f1f5a96511cd193", + "chksum_sha256": "a796865ec83b7530ac8a5d3c67867d38bc8977834d6a1f28b5543e8f4840b6f1", "format": 1 }, { "name": "plugins/modules/fortios_wanopt_remote_storage.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a5e2e1e71acc0ee86eee9ba6d77e7ac9fe505fb963ca7a95d36a2837c7c3931f", + "chksum_sha256": "cf94e88b28b8916d12ddf01fc3aca85a38c38bb6adede94a744039afe971f8bd", "format": 1 }, { "name": "plugins/modules/fortios_log_tacacsplusaccounting2_setting.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "2bfbe79b7de8607cf7a671b37afb87320d5a0933bf4723b2ab2474dd6a70a353", + "chksum_sha256": "1a61d422c420bacd8c2f16513e874996e957883e693012268b4ed6db04c5c072", "format": 1 }, { "name": "plugins/modules/fortios_system_interface.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "74222b3e00fda535680341c79f0bdc7f5c325222e110a7f2b3a570ff3787774d", + "chksum_sha256": "b006c886d7847b9c9f148cab2ce6582971cb5dd2bbb9750eea1986f2dcfe70f0", "format": 1 }, { "name": "plugins/modules/fortios_system_gre_tunnel.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "35c6f8bfc32542cfd6a82a9284cfbf4d824d8dd9e6fd47fce01b82993b790959", + "chksum_sha256": "5b5554d577cc014e1fa36742bc30f6c7bf17dfb4459dc3ef234071b417d1b185", "format": 1 }, { "name": "plugins/modules/fortios_system_vdom_radius_server.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "da67c8290d3a22dd0053f6838011285c1e5af059b8a1815b5861ed0b1e9cc211", + "chksum_sha256": "688ddfd071ffd264c4f0658090d523c60136ca3e3c23920a0b3214a16b4059d6", "format": 1 }, { "name": "plugins/modules/fortios_firewall_internet_service_custom.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "7d6f0fccfb15c9f99e78bfc37fa977c306de4233ef049c40de77df936080d206", + "chksum_sha256": "3e60d05e75848f7a151bc16659affc119230949ccbe2d3b52fd995bfc8dab64a", "format": 1 }, { "name": "plugins/modules/fortios_extender_lte_carrier_by_mcc_mnc.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "90ddf43b0a1bc2a4200e6131682f491d542dabda610bd212e090798108984ca1", + "chksum_sha256": "0fb98b531a38eb67a5e725e26c8fad82bddfb4425f6da2699f2c37a69cf8eb9b", "format": 1 }, { "name": "plugins/modules/fortios_hardware_npu_np6_sse_stats.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "2c7cf27a998e914a8e913be50144319563db01d38c51bd578251b01cb0dee3a6", + "chksum_sha256": "438c99b33fbbc115529fb0a90cbe5bac24b60ecc062af72fa45624eb66084bca", "format": 1 }, { "name": "plugins/modules/fortios_system_affinity_interrupt.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "644597b17606a11a2db75a9887de4a16d07e1e75caf803dca4bf6b6ad6a8c94a", + "chksum_sha256": "7c01e0ab63ca856af0ecfc13869ba6ae28ec72494ef822161a737f19784706ca", "format": 1 }, { "name": "plugins/modules/fortios_system_mobile_tunnel.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "dbdf71f3846226c7bdf64225198354623ab16fe13d4cda5e8a8437f3e6b4fe90", + "chksum_sha256": "72e634c05614f040588bd2056ca399fd39f56a55629b6da7649f6d6a3af3bec4", "format": 1 }, { "name": "plugins/modules/fortios_extension_controller_fortigate.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "052125dbeb10f43831caee6eba03f77da137cd28230c9ab38bd4eb0739c67f34", + "chksum_sha256": "2cb9806c0db1b77dfbf8f2ea814474306f1d876b809f84bf1efb242c1b16ac9f", "format": 1 }, { "name": "plugins/modules/fortios_log_syslogd_filter.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "7cf79e087bf5f1c5b41e06d5fb03a3cbf15cf4ee137540ec897980e49e243276", + "chksum_sha256": "7b0c71cc9cc2b232ae42817adbc366cbf3300661c1527f94e6800dc557a9fb09", "format": 1 }, { "name": "plugins/modules/fortios_system_virtual_switch.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "2ee4ccd37d52bd14e10ced8ab818e0eab11623a2124fc05332b456759e6ee46b", + "chksum_sha256": "440b290a9f7b815f114f8951626f8db735eae3866f0d287a02c8020e9f0014a9", "format": 1 }, { "name": "plugins/modules/fortios_log_fortianalyzer2_override_filter.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "450a96fbc4a84ee154a4a804486a527493d030f4fb34cc63b0a00aab4b8a54af", + "chksum_sha256": "afcc09ed85e7b02b3cc186c7938d76deeeb46fd84a8f0be4e4acfb804ddcb326", "format": 1 }, { "name": "plugins/modules/fortios_wireless_controller_log.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "2e7c7bf5458122fc5906df489c83494f73d51044ccb781216e6b7eb4be8a8e22", + "chksum_sha256": "e5ca5021378ad59972e82ef411b884b8e1789ed6121748068a56c9f319228386", "format": 1 }, { "name": "plugins/modules/fortios_log_fortianalyzer2_filter.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e788c097c67f4eef3be507e1e5492b73cc72822231eaff8009d2cf80f3ecbfdf", + "chksum_sha256": "a8e053c24b32d182be32f2c89aa78111bcc4645c4f1c9bddeed200e042b83c9f", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_nac_settings.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "60b1016d962e2c95f4cf47085074431bc09a0d813a0cc2dc60a8f4a3e0e43513", + "chksum_sha256": "e29d559d21d905969f694e52e60162cf280a2f01da9b3c74820222356d3ff610", "format": 1 }, { "name": "plugins/modules/fortios_firewall_vipgrp6.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "43096053344c3d866370ea997aa2f48cb4edf807ed4529674ba3db9293c2f53a", + "chksum_sha256": "29dd6b27e7bf2f5985ae9a7ca59cd38a128c3f3fc8222c212e5637e7ff516017", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_quarantine.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "78bd766db409f021bb05c266caf16c7619c4f14b514372242ef7e04df6b2080e", + "chksum_sha256": "0791f186a7e1d27b63dbfb8695e01136038f65bcdbd185f441cbebb5327fb615", "format": 1 }, { "name": "plugins/modules/fortios_vpn_certificate_local.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "7dba051a7d826daa4ecc61af49a633b6e3a07807884321f2931cc5b5f56c7469", + "chksum_sha256": "95ef267abc58a8a4895428c99f48c85d62410b85edbf9214599d7c803e32710d", "format": 1 }, { "name": "plugins/modules/fortios_log_fortiguard_override_filter.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "8bd4b532dd6420ebcd778bedd43787e2f80ed4f771f46b62b8b295f98ccf5ace", + "chksum_sha256": "91b66642dd90037840c270da35a16d66f384f2390a2abdd98d8ad1a5fcd1bf2d", "format": 1 }, { "name": "plugins/modules/fortios_log_syslogd4_setting.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a088e71b5b700703e6c9ab5f9f2ffe758394b365ef6fd79530d2f8b1f3da7252", + "chksum_sha256": "2705ea6d7b40753a30948eee8f474890ade01b2c3b98a0972d4b721e7c04171d", "format": 1 }, { "name": "plugins/modules/fortios_wireless_controller_ssid_policy.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f206e3531cd3239a84990608eedb6b2ef39bda8315ce0119394172eae8809b16", + "chksum_sha256": "7940b71bdd99edb2c35ecf8f9671a723c156cd44a8d26f67c7b74891044837e7", "format": 1 }, { "name": "plugins/modules/fortios_configuration_fact.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "797586a4bd774400e183e615ba4a7bdfb83695e5dbf81f5b71f74c0940f89007", + "chksum_sha256": "aa78218110c71eea3a4f37dd8cb5d3b36b6ff178b3533c594f41fe807fe09f0c", "format": 1 }, { "name": "plugins/modules/fortios_dlp_fp_doc_source.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "41b7a8a63fa0b250f6be4015da0b9f985b3992f523d5212820508a12d8adfc51", + "chksum_sha256": "e2c2cc49689c240a9c52fe856d5ca28f9f8c47c2da0c9845d502ed7098c3925c", "format": 1 }, { "name": "plugins/modules/fortios_system_pcp_server.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "958cbdc6bdf604083982a037b03a802b8e5ab90eae7abb8e3a9e6211efef0f80", + "chksum_sha256": "d8cc3c1febefd79aaa7379cfe714cc0ffd9948c887047ac42963d027fbb6ad41", "format": 1 }, { "name": "plugins/modules/fortios_firewall_policy46.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "2fb1814f7af95032e4c891bca4f9eb3c7190fb7f8dc0e26c69644e7f760a23d4", + "chksum_sha256": "6547dd5d4594d248d8a5df9b6c1fde66279301c2fd8ae575ad9f5de8ffff1a37", "format": 1 }, { "name": "plugins/modules/fortios_system_npu.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "68dbdc9317d022a6c4fd27d50350feee7bebbe669310dd9b287ec22e125269da", + "chksum_sha256": "4e80bd96258773164129f7ab376b64a6aee598d9efab405695fa70d0b6852554", "format": 1 }, { "name": "plugins/modules/fortios_firewall_vip64.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "32efd409a8b9710a96b45abc5021ef2512bbc8ed822c206930f21da97c942dd5", + "chksum_sha256": "18448bc13ef5986057617d48e57fefc6e2c0f64aa713638e1b1c2374ecc639c4", "format": 1 }, { "name": "plugins/modules/fortios_dlp_filepattern.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "61939c240fe308f257f6719d8545700ea5545ff0f193190a7fdd2d87eb66379b", + "chksum_sha256": "a584eccdd6a33d6b071edb24d34f0d77c3efcd753e63cfd76d71c8d965f244ea", "format": 1 }, { "name": "plugins/modules/fortios_certificate_local.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "a29875c7ee05db409ef072ebb206f850f9ba1e7dd877cce0ac1bf1c4b23eb28e", + "chksum_sha256": "cd169f025137fea96824eeb381f2133f810f82d2e5eb6b1cad2c2c18898a0f50", "format": 1 }, { "name": "plugins/modules/fortios_wireless_controller_hotspot20_anqp_network_auth_type.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9ca65da46b764eb2215a59f0a53158f67b5533ae1f7545423bc23d0e7b7317a5", + "chksum_sha256": "fc0bf7039c084857dfd3d80ceb8a1f91160ae6a1f42ca6dadd6051715d56ff21", "format": 1 }, { "name": "plugins/modules/fortios_router_policy6.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f3e55bee9a2f825994ca027067f3d68e5111eaaa9ef60c899c4c41ea8989b9a7", + "chksum_sha256": "d4a09dae63ee0ef8c76b878503f9d9255b1e79404fbb9b5cdda5400fbab11bf1", "format": 1 }, { "name": "plugins/modules/fortios_vpn_kmip_server.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e47632103e78340985d645e8c6ac1a7d179248c43d026c81c55a9ba20f4633a9", + "chksum_sha256": "397f780a5d45a51ba4778d51480976f8ec10debc878436505f23c18769a879a4", "format": 1 }, { "name": "plugins/modules/fortios_endpoint_control_registered_forticlient.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "1fedbc3528b43338de2a525622f1e74496e59c24b9eec71f04e4f9467aa835c6", + "chksum_sha256": "3aecdff3c238f2e3140aeaabb0bc4a14c6faf7ed703cee5048339149a1502e7a", "format": 1 }, { "name": "plugins/modules/fortios_router_policy.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "4b41034470cff0dd007c64789f99453f1e25041a4407cfe9c842434523e64e01", + "chksum_sha256": "1129541afc18484c022f465bab719fc926d3efbb31fca10b452401cfcf134d8c", "format": 1 }, { "name": "plugins/modules/fortios_log_fortianalyzer3_filter.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "670928c39e5309f390496b698be70f4aeaa799f02134628182bd8efedc12f090", + "chksum_sha256": "b1a33f10d74f68c652e9336bde587558acb431b12dc113036df751a344d39d62", "format": 1 }, { "name": "plugins/modules/fortios_system_physical_switch.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "5bc65a55985d91f812ff7cf29530cf0c45c9a7fd2f201696a54501170caf8b25", + "chksum_sha256": "5c5ac63b5a1cc52e0b6ad51bcd8a5077cab5bccf7693c2546c0688f0a67fb328", "format": 1 }, { "name": "plugins/modules/fortios_user_quarantine.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ae85b3c3532a6f85bc9ce18947cabffcc7e39fb54c124509801c1cf8ce95496a", + "chksum_sha256": "f139f3ce711b2cdd911ac1fc3eb58fb2a165e5079f6f5f3d75ef756171b7e216", "format": 1 }, { "name": "plugins/modules/fortios_system_vne_tunnel.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "be6fb6ed37d81b9d26fead07cb6824becea2ccfad251b94e84bc4ab3233d9f47", + "chksum_sha256": "45c462da062a74ac3837d9da4e3bbd157d85c161946ce911dde5286b50994629", "format": 1 }, { "name": "plugins/modules/fortios_webfilter_ips_urlfilter_setting.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "d7538dbd8968b12291eb061c7baa96d230443b80e0c88cfd1a5e8fdf4844024e", + "chksum_sha256": "b76edd07a0c73b7ed312fdff14f3140d539971110f1868a8c32d03103d5719da", "format": 1 }, { "name": "plugins/modules/fortios_wireless_controller_vap.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "489316a6310004b0808dd8db557aae7ceff33efa268a4846dfdef797299a5bbf", + "chksum_sha256": "6c9ac828798945cda96c8b97cd35d6576bc90061f4f0bb958becc444fb0ed0fa", "format": 1 }, { "name": "plugins/modules/fortios_gtp_message_filter_v2.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "c58e30636a089a7bacef2ead3043a450f8853515e163955d7ba67c78f1829b0b", + "chksum_sha256": "db3407ae678f32089d273c10ee009c4dcd695c75fe372788936dbb17beb99b75", "format": 1 }, { "name": "plugins/modules/fortios_firewall_policy6.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "5f4db3a94c92760b107eb6f783c90914638fe41cc9691bb46948934a461e04f4", + "chksum_sha256": "9dbf030ca8712f05b724f9581cb05ee7f9ece44d858759f2f786e3aa40a35799", "format": 1 }, { "name": "plugins/modules/fortios_system_replacemsg_traffic_quota.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f8485dbcda2ccd223aa31333717fdf107791f83024327339806b27be78b05085", + "chksum_sha256": "430ddd14307f00328fe208f7e2ed685817c2452f9be2a8ccd344c0fae6ba5fc2", "format": 1 }, { "name": "plugins/modules/fortios_system_fabric_vpn.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "131da021cba1d8d6cb296894bd364a0efaa0c1b8f16a2584e93cd137aa68179e", + "chksum_sha256": "ed5d36ca6a7d557e6986cb2d59fc73952b671b45c84666995ed2fdbc65cecbe7", "format": 1 }, { "name": "plugins/modules/fortios_vpn_certificate_ca.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "1fc9e338ce598639838d8c788630f107341eb35b6b7174941dc35e1fbd022e78", + "chksum_sha256": "d2f1171903eda9108b3be8656d845b404bf1b189b3f4290bdfb494fa50653331", "format": 1 }, { "name": "plugins/modules/fortios_user_peer.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "0d4f49c02874cfc4182883fd6bb060cdcdd41074d70045792bbfdcfb285a64c5", + "chksum_sha256": "b182ff9657893f25084813f57265532cbeef0e37530267439d3c557fc264a10d", "format": 1 }, { "name": "plugins/modules/fortios_system_settings.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f8a70abad07a6d03e0d52e653c91b6cbd0b0e978e40d36fe5b5f20c026cb9860", + "chksum_sha256": "60733e4235557cd8f810757105522542556c8d53a18d4de8f6c7f025dd7c64fb", "format": 1 }, { "name": "plugins/modules/fortios_wireless_controller_apcfg_profile.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "bb80073aa15e40fb1dc455cf60a11117dd97b0b3dfdb7041cbed6a526e1a296c", + "chksum_sha256": "86d5fac05f7582f808c3dbd640caf8c061ecc89f8c9d2490c2c499767f0fa2e1", "format": 1 }, { "name": "plugins/modules/fortios_firewall_acl6.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "93864fc97a5e17efcff80c10b06159195b833d9a0fb82771c149999a978f160d", + "chksum_sha256": "e51cd74e05b69e95beefb3c05e59672a6d7565a004c077da78ee6ce219143b20", "format": 1 }, { "name": "plugins/modules/fortios_extender_sys_info.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "128ce50983de1ebafc1962096a8c3ca4bd2501a9cb084ebf27d8cabe5a7117c3", + "chksum_sha256": "d5f10fc83a63b9c54fc35dc86570964aa3d178075faf120ebbd62de624fc9c5a", "format": 1 }, { "name": "plugins/modules/fortios_firewall_central_snat_map.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "046753c8608f33f89cce8bd56eff4203fcd90295bed200816fb06985bf9d569c", + "chksum_sha256": "90b034ef241e94aad82589d619ee963860384350de65c734373d48fefed5c49d", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_ptp_profile.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "11af45630e31fd69c188c712403c1a50712a20c3c8f8c5d30fc64c90e143bf28", + "chksum_sha256": "94f11d624063aebe6b0460e972fd612ea600e8beb34c2dad6d4db4e8c2f93576", "format": 1 }, { "name": "plugins/modules/fortios_system_ha.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ad78bd7f77f2eb340819a3a0bdc85c7d10ddb7ef01ab66a6c98372f4ec4f5e26", + "chksum_sha256": "06b3d8e84707c260ebba61c88f76f4cb3523ab573888184683f43cd1e71cef6a", "format": 1 }, { "name": "plugins/modules/fortios_firewall_multicast_address.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "0dabdb36ace812763fe010482603cdd34ca0a263aa7c1264fc5951d8afa624f3", + "chksum_sha256": "b449c77b1b5046947bc0fe244d761c0df88606e95dddef69ffcab568dcf2af9e", "format": 1 }, { "name": "plugins/modules/fortios_gtp_apn.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "59978e7c42918dd6e530de1c1378ce68556e3bed31b113e6b3bb317ce2dd5deb", + "chksum_sha256": "9aab3505385188b9d20dd1f66b4a977671629977d7ebb15c92d295f3d512ea52", "format": 1 }, { "name": "plugins/modules/fortios_system_replacemsg_http.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ab1b61796942452a914c340c12d2de93025d5f9670f543e8eb2b84828eeb7e8f", + "chksum_sha256": "299e2108315a7fe2899598b5f34c08cf40248e393d1392e88f4fc40ea6d3749f", "format": 1 }, { "name": "plugins/modules/fortios_system_tos_based_priority.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "2abccd85d2ad3a69506674521b7d6968809cd20a32df88b097426519a679bab3", + "chksum_sha256": "823113c7d50d815c2fccacf20b7a896846427c24b88d690766d9ae6f476aa55d", "format": 1 }, { "name": "plugins/modules/fortios_system_replacemsg_mm4.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "4e703995f119bd579e80d83496c4122f688498ae91566fcd1da0b86a27eb2705", + "chksum_sha256": "867e4d8806239a486cf5b80b91df7456188932748bc8d06d26c29e9166fb3efd", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_switch_log.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "bdd876d232cb66a48467ca97170447ef18af452a39ce3db701a7c25ade030d5e", + "chksum_sha256": "fae764cf943e4bdc3d1fc062b413a0e5ff52ea708b501cd441c882de78286263", "format": 1 }, { "name": "plugins/modules/fortios_log_fortiguard_override_setting.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "55806df3589080054b984d1d68f5cedeb43832bec0222406635eebdd778812a9", + "chksum_sha256": "d79a860f190d59deeb0a64acb8d32c9a5b3cd7f9af4edb86e4fa063dd6918e07", "format": 1 }, { "name": "plugins/modules/fortios_system_replacemsg_nntp.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "69fbbb1ab8807391496d028922d0fbaa7c2e9d6fd3159c01aeccd5cfc4dc8974", + "chksum_sha256": "38e6da0e70fda164fbaa6d2336031a95f69f0ddfa78661337892982a1067aed8", "format": 1 }, { "name": "plugins/modules/fortios_waf_profile.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "021ed74542a15e1c583f9b54bb5bd4c0af1a53a89f16bdea709cf170c9f7539a", + "chksum_sha256": "0c439f369a0308d5c4381aa3046970dfd7f9c017b7c4f3288fb110acd0272536", "format": 1 }, { "name": "plugins/modules/fortios_log_null_device_setting.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "b195bc9a29fa1d88459708d07f41706929e11bf5a8cadb14a72889ec9f6d8b2c", + "chksum_sha256": "44da9a29d0fd0435d739255638ff84dea64488f84b3dfc0bb739c179199091eb", "format": 1 }, { "name": "plugins/modules/fortios_log_tacacsplusaccounting_setting.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "710dbb74ee20d260fb8299ab67a0f4ce778e51a19965dee21b873ced15ce47af", + "chksum_sha256": "c2db619a1c025aeccbd47ca5ef8672cc8d40b28ca833591b984216153086b919", "format": 1 }, { "name": "plugins/modules/fortios_spamfilter_fortishield.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "81aeab1d426ce3544154b5e91c28c14443e9fa190488a949c18e55ac75d574f4", + "chksum_sha256": "bbb615bfe965e2a2c4d9061456b0c36a32e5f1b30732d3d641c6102808094481", "format": 1 }, { "name": "plugins/modules/fortios_spamfilter_dnsbl.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ab7343037821403d37e224719b343f0d37da307d8a2e96eea6d70d74633ad0ec", + "chksum_sha256": "b392df29f24a2b737941573d0a4c3600e8d35ed64be15bdcbba90d89d02dd236", "format": 1 }, { "name": "plugins/modules/fortios_ips_view_map.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "00ba13fec73ac8b6dab9e0e24eb56c70987ed2ac82fb9f9fcef6380cd05f7129", + "chksum_sha256": "e48fbce28b7b475a1f3dc31dd97804791b9ebbf0bddd60e88729c1d38c0e1ad8", "format": 1 }, { "name": "plugins/modules/fortios_ftp_proxy_explicit.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f6bd978826094722487eb13dba860a9bb6976ec56a8544f1530d8f409c1e6667", + "chksum_sha256": "c436b0ad53d5a87a7d9b753957bc19b140755c3cb1c518cfa9cffe64cb765d8c", "format": 1 }, { "name": "plugins/modules/fortios_hardware_npu_np6_dce.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "529d5ed44246e1a64970db66425a4a7e1d4caae8965014f57a59625993985b6e", + "chksum_sha256": "a3688a30ad9829a105931e92a9b8ec662ae38262adf4ec5d0298cf17c47965a7", "format": 1 }, { "name": "plugins/modules/fortios_wireless_controller_region.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "f0a9ad7523823c7f06cfb3fb80079e837c2b31115bf223c04a0fc06182994613", + "chksum_sha256": "118ddc535f4aa3956fa1cad7d4386fa6b8fa27c4b3c3b90b7604f9eb8a756f57", "format": 1 }, { "name": "plugins/modules/fortios_firewall_addrgrp.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "28133e8c83869fa085e55652ca6fb36f5694b003cf4e20e88a01b71d71040362", + "chksum_sha256": "d3673c47c663f9ea35217809b7eed138ea72ccb88b34ad27f6e8696d5b2adc70", "format": 1 }, { "name": "plugins/modules/fortios_wireless_controller_vap_group.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "e33eda10b07ac07993babac49b15c4507238c6c97a07a7fcb2f6794f8d618e35", + "chksum_sha256": "7742883a5b0706e7e1801d6be703ed98922be18e03f82d1898fea830e6c05c9c", "format": 1 }, { "name": "plugins/modules/fortios_firewall_vipgrp.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "0a02cba060b5b3463845f781867e590dc8cd90221abe84112dd6c0463f7fb3d2", + "chksum_sha256": "72754fb0cafeef3ecc09cc2a50256c15fe1ea9aa5ec4a01bca8340a891da5040", "format": 1 }, { "name": "plugins/modules/fortios_firewall_internet_service_append.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "9bf04f16bc29775a8a7d4e4d34cac127b6da95d3233242a5e9967a915e45e4c0", + "chksum_sha256": "631b9d90064d6613f46d9d5c8a98c4827f4081cbf6d617c25b4b29a3b6e49f3c", "format": 1 }, { "name": "plugins/modules/fortios_switch_controller_snmp_community.py", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "7416fc6e84495a4bcdf48c8cdd0bf967ccd9a977cbecca03afc39d64e94e12a3", + "chksum_sha256": "d1eb41b45ab82d4a0a3ed183859be301fe3266b1311cd8ef1b84af7612105717", "format": 1 }, { @@ -4925,7 +4967,7 @@ "name": "meta/runtime.yml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "4833e2900333e7a035d7e0f63f6d55777c2697476ee0a2f9bfcf250167c7571d", + "chksum_sha256": "16fee19238e61fab14a7974fd79800cd659367bbc8b052d9f0b190108f6a2c53", "format": 1 }, { @@ -4953,28 +4995,28 @@ "name": "changelogs/changelog.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "304508b2188848abfde7f52aaca442040d33cf2934ad2c7ec74b66e155d8c27f", + "chksum_sha256": "63375e63757114267a9b0cb88bff7e982bf7d72ae9dcb95764e3d8131dc5eedb", "format": 1 }, { "name": "changelogs/.plugin-cache.yaml", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "7a5de4e5e1abdf8efcfa25d4786b700eaafa2903feb65393632a02c941e9f5f1", + "chksum_sha256": "23fc019ada15f1677c0a0f7c2fb7f1626783a935e40404b394d9924df06c61ef", "format": 1 }, { "name": "README.md", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "ff4c923c42bd810ee674767665a3db00dabe1468b4e6e4273f79495339995933", + "chksum_sha256": "12d5512587e0c8dd386124b96b0f25663ea0087ddb2c29a0a9c820989fa58006", "format": 1 }, { "name": "CHANGELOG.rst", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "798045ce36adaccce819db885d577fa12d1b173d7f85a68454b1963651a98b2c", + "chksum_sha256": "1ced7febb3f8e030e0f1b29165bc8d8e33ed6d6f57f376dbd2cc64408e935ab7", "format": 1 } ], diff --git a/ansible_collections/fortinet/fortios/MANIFEST.json b/ansible_collections/fortinet/fortios/MANIFEST.json index f233a486f..28af7e1ae 100644 --- a/ansible_collections/fortinet/fortios/MANIFEST.json +++ b/ansible_collections/fortinet/fortios/MANIFEST.json @@ -2,7 +2,7 @@ "collection_info": { "namespace": "fortinet", "name": "fortios", - "version": "2.3.5", + "version": "2.3.6", "authors": [ "Frank Shen (@frankshen01)", "Hongbin Lu (@fgtdev-hblu)", @@ -36,7 +36,7 @@ "name": "FILES.json", "ftype": "file", "chksum_type": "sha256", - "chksum_sha256": "df922021f51c884a96d2aed15957a1d8d97b15c40d7c543e4df4cb07df31bc0d", + "chksum_sha256": "d160b2068fe402a1b4c497afa2a977ee1f9971eaa6564099649d19c5a8384f43", "format": 1 }, "format": 1 diff --git a/ansible_collections/fortinet/fortios/README.md b/ansible_collections/fortinet/fortios/README.md index 48ad9348c..c2c9ff1ae 100644 --- a/ansible_collections/fortinet/fortios/README.md +++ b/ansible_collections/fortinet/fortios/README.md @@ -9,7 +9,7 @@ The collection is the FortiOS Ansible Automation project. It includes the module This collection is distributed via [ansible-galaxy](https://galaxy.ansible.com/), the installation steps are as follows: 1. Install or upgrade to Ansible 2.14+ -2. Download this collection from galaxy: `ansible-galaxy collection install fortinet.fortios:2.3.5` +2. Download this collection from galaxy: `ansible-galaxy collection install fortinet.fortios:2.3.6` ## Requirements * Ansible 2.14+ is required to support the newer Ansible Collections format @@ -17,7 +17,7 @@ This collection is distributed via [ansible-galaxy](https://galaxy.ansible.com/) ## Supported FortiOS Versions From `v2.0.0` on, FortiOS galaxy collections are unified, and cover FortiOS 6.0, 6.2, 6.4, 7.0, 7.2 versions. There is only one sequential collection at any moment. users who install these collections are expected to find the version compatibility information for each module and its parameters. -The latest version is 2.3.5, path to install: `ansible-galaxy collection install fortinet.fortios:2.3.5` +The latest version is 2.3.6, path to install: `ansible-galaxy collection install fortinet.fortios:2.3.6` Prior to FortiOS collection `v2.0.0`, FortiOS Galaxy collections were built over three FOS major versions, i.e. `v6.0`, `v6.2` and `v6.4`, thus, users are expected to install the collection according to the following table to avoid potential compatibility issues. @@ -72,8 +72,10 @@ The collection provides the following modules: * `fortios_cifs_profile` Configure CIFS profile in Fortinet's FortiOS and FortiGate. * `fortios_configuration_fact` Retrieve Facts of FortiOS Configurable Objects. * `fortios_credential_store_domain_controller` Define known domain controller servers in Fortinet's FortiOS and FortiGate. +* `fortios_diameter_filter_profile` Configure Diameter filter profiles in Fortinet's FortiOS and FortiGate. * `fortios_dlp_data_type` Configure predefined data type used by DLP blocking in Fortinet's FortiOS and FortiGate. * `fortios_dlp_dictionary` Configure dictionaries used by DLP blocking in Fortinet's FortiOS and FortiGate. +* `fortios_dlp_exact_data_match` Configure exact-data-match template used by DLP scan in Fortinet's FortiOS and FortiGate. * `fortios_dlp_filepattern` Configure file patterns used by DLP blocking in Fortinet's FortiOS and FortiGate. * `fortios_dlp_fp_doc_source` Create a DLP fingerprint database by allowing the FortiGate to access a file server containing files from which to create fingerprints in Fortinet's FortiOS and FortiGate. * `fortios_dlp_fp_sensitivity` Create self-explanatory DLP sensitivity levels to be used when setting sensitivity under config fp-doc-source in Fortinet's FortiOS and FortiGate. @@ -487,6 +489,7 @@ The collection provides the following modules: * `fortios_system_netflow` Configure NetFlow in Fortinet's FortiOS and FortiGate. * `fortios_system_network_visibility` Configure network visibility settings in Fortinet's FortiOS and FortiGate. * `fortios_system_np6` Configure NP6 attributes in Fortinet's FortiOS and FortiGate. +* `fortios_system_npu_vlink` Configure NPU VDOM link in Fortinet's FortiOS and FortiGate. * `fortios_system_npu` Configure NPU attributes in Fortinet's FortiOS and FortiGate. * `fortios_system_ntp` Configure system NTP information in Fortinet's FortiOS and FortiGate. * `fortios_system_object_tagging` Configure object tagging in Fortinet's FortiOS and FortiGate. @@ -574,6 +577,7 @@ The collection provides the following modules: * `fortios_user_device` Configure devices in Fortinet's FortiOS and FortiGate. * `fortios_user_domain_controller` Configure domain controller entries in Fortinet's FortiOS and FortiGate. * `fortios_user_exchange` Configure MS Exchange server entries in Fortinet's FortiOS and FortiGate. +* `fortios_user_external_identity_provider` Configure external identity provider in Fortinet's FortiOS and FortiGate. * `fortios_user_fortitoken` Configure FortiToken in Fortinet's FortiOS and FortiGate. * `fortios_user_fsso_polling` Configure FSSO active directory servers for polling mode in Fortinet's FortiOS and FortiGate. * `fortios_user_fsso` Configure Fortinet Single Sign On (FSSO) agents in Fortinet's FortiOS and FortiGate. @@ -592,6 +596,7 @@ The collection provides the following modules: * `fortios_user_security_exempt_list` Configure security exemption list in Fortinet's FortiOS and FortiGate. * `fortios_user_setting` Configure user authentication setting in Fortinet's FortiOS and FortiGate. * `fortios_user_tacacsplus` Configure TACACS+ server entries in Fortinet's FortiOS and FortiGate. +* `fortios_videofilter_keyword` Configure video filter keywords in Fortinet's FortiOS and FortiGate. * `fortios_videofilter_profile` Configure VideoFilter profile in Fortinet's FortiOS and FortiGate. * `fortios_videofilter_youtube_channel_filter` Configure YouTube channel filter in Fortinet's FortiOS and FortiGate. * `fortios_videofilter_youtube_key` Configure YouTube API keys in Fortinet's FortiOS and FortiGate. @@ -617,6 +622,7 @@ The collection provides the following modules: * `fortios_vpn_l2tp` Configure L2TP in Fortinet's FortiOS and FortiGate. * `fortios_vpn_ocvpn` Configure Overlay Controller VPN settings in Fortinet's FortiOS and FortiGate. * `fortios_vpn_pptp` Configure PPTP in Fortinet's FortiOS and FortiGate. +* `fortios_vpn_qkd` Configure Quantum Key Distribution server in Fortinet's FortiOS and FortiGate. * `fortios_vpn_ssl_client` Client in Fortinet's FortiOS and FortiGate. * `fortios_vpn_ssl_settings` Configure SSL-VPN in Fortinet's FortiOS and FortiGate. * `fortios_vpn_ssl_web_host_check_software` SSL-VPN host check software in Fortinet's FortiOS and FortiGate. diff --git a/ansible_collections/fortinet/fortios/changelogs/.plugin-cache.yaml b/ansible_collections/fortinet/fortios/changelogs/.plugin-cache.yaml index 7ff0ccb3f..b083d6257 100644 --- a/ansible_collections/fortinet/fortios/changelogs/.plugin-cache.yaml +++ b/ansible_collections/fortinet/fortios/changelogs/.plugin-cache.yaml @@ -25,4 +25,4 @@ plugins: strategy: {} test: {} vars: {} -version: 2.3.5 +version: 2.3.6 diff --git a/ansible_collections/fortinet/fortios/changelogs/changelog.yaml b/ansible_collections/fortinet/fortios/changelogs/changelog.yaml index e18766b3f..f2b637108 100644 --- a/ansible_collections/fortinet/fortios/changelogs/changelog.yaml +++ b/ansible_collections/fortinet/fortios/changelogs/changelog.yaml @@ -279,3 +279,27 @@ releases: fragments: - 2.3.5_release.yml release_date: "2024-02-06" + 2.3.6: + changes: + bugfixes: + - Fix the issue that ssl-certificate cannot be set in `fortios_firewall_vip` + and `fortios_firewall_vip6`. + - Github issue + - Github issue + - Github issue + - Github issue + - Github issue + - Github issue + - mantis issue + major_changes: + - Add notes for backup modules in the documentation in both monitor and monitor_fact + modules. + - Supported new FOS versions 7.4.2 and 7.4.3, and support data type mac_address + in the collection. + - Update the documentation for the supported versions from latest to a fix version + number. + - Update the required ansible version to 2.15. + release_summary: patch release of 2.3.6 + fragments: + - 2.3.6_relase.yml + release_date: "2024-04-03" diff --git a/ansible_collections/fortinet/fortios/meta/runtime.yml b/ansible_collections/fortinet/fortios/meta/runtime.yml index be99ccf4b..898ad8ff5 100644 --- a/ansible_collections/fortinet/fortios/meta/runtime.yml +++ b/ansible_collections/fortinet/fortios/meta/runtime.yml @@ -1,2 +1,2 @@ --- -requires_ansible: '>=2.14.0' +requires_ansible: '>=2.15.0' diff --git a/ansible_collections/fortinet/fortios/plugins/module_utils/fortios/comparison.py b/ansible_collections/fortinet/fortios/plugins/module_utils/fortios/comparison.py index 0ed53cffb..2accf3ed5 100644 --- a/ansible_collections/fortinet/fortios/plugins/module_utils/fortios/comparison.py +++ b/ansible_collections/fortinet/fortios/plugins/module_utils/fortios/comparison.py @@ -121,7 +121,7 @@ def serialize(data): else: return sorted(data) - if isinstance(data[0], dict): + if isinstance(data, dict): result = {} for key, value in data.items(): result[key] = serialize(value) diff --git a/ansible_collections/fortinet/fortios/plugins/module_utils/fortios/secret_field.py b/ansible_collections/fortinet/fortios/plugins/module_utils/fortios/secret_field.py index 597efeb04..9bf291e43 100644 --- a/ansible_collections/fortinet/fortios/plugins/module_utils/fortios/secret_field.py +++ b/ansible_collections/fortinet/fortios/plugins/module_utils/fortios/secret_field.py @@ -25,7 +25,9 @@ secret_fields = [ "ddns_keyname", "eap_password", "n_mhae_key", "passwd1", "passwd2", "passwd3", "http_password", "password_attr", "passwd_policy", "passwd_time", "rsso_secret", "secondary_secret", "secret", "sso_attribute_key", "secondary_key", "tertiary_key", "sae_private_key", "tertiary_secret", "search_key", "est_http_password", "est_srp_password", - "fortitoken_cloud_sync_interval", "mfa_password", "default_user_password_policy", "polestar_server_token" + "fortitoken_cloud_sync_interval", "mfa_password", "default_user_password_policy", "polestar_server_token", + "ssh_hostkey", "ssh_hostkey_password", "keyword", "sam_private_key", "sam_private_key_password", + "videofilter_keyword" ] diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_alertemail_setting.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_alertemail_setting.py index b4b2ab226..c7ee4fe64 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_alertemail_setting.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_alertemail_setting.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -483,11 +483,10 @@ def underscore_to_hyphen(data): def alertemail_setting(data, fos): vdom = data["vdom"] alertemail_setting_data = data["alertemail_setting"] - filtered_data = underscore_to_hyphen( - filter_alertemail_setting_data(alertemail_setting_data) - ) + filtered_data = filter_alertemail_setting_data(alertemail_setting_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("alertemail", "setting", data=filtered_data, vdom=vdom) + return fos.set("alertemail", "setting", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_antivirus_exempt_list.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_antivirus_exempt_list.py index 675bfae2e..ec2e3d8ff 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_antivirus_exempt_list.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_antivirus_exempt_list.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -243,12 +243,11 @@ def antivirus_exempt_list(data, fos): state = data["state"] antivirus_exempt_list_data = data["antivirus_exempt_list"] - filtered_data = underscore_to_hyphen( - filter_antivirus_exempt_list_data(antivirus_exempt_list_data) - ) + filtered_data = filter_antivirus_exempt_list_data(antivirus_exempt_list_data) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: - return fos.set("antivirus", "exempt-list", data=filtered_data, vdom=vdom) + return fos.set("antivirus", "exempt-list", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_antivirus_heuristic.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_antivirus_heuristic.py index 3b7bfd769..89952e9a7 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_antivirus_heuristic.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_antivirus_heuristic.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -206,11 +206,10 @@ def underscore_to_hyphen(data): def antivirus_heuristic(data, fos): vdom = data["vdom"] antivirus_heuristic_data = data["antivirus_heuristic"] - filtered_data = underscore_to_hyphen( - filter_antivirus_heuristic_data(antivirus_heuristic_data) - ) + filtered_data = filter_antivirus_heuristic_data(antivirus_heuristic_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("antivirus", "heuristic", data=filtered_data, vdom=vdom) + return fos.set("antivirus", "heuristic", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_antivirus_mms_checksum.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_antivirus_mms_checksum.py index f68cfc0b0..522df04bb 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_antivirus_mms_checksum.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_antivirus_mms_checksum.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -264,9 +264,8 @@ def antivirus_mms_checksum(data, fos, check_mode=False): state = data["state"] antivirus_mms_checksum_data = data["antivirus_mms_checksum"] - filtered_data = underscore_to_hyphen( - filter_antivirus_mms_checksum_data(antivirus_mms_checksum_data) - ) + filtered_data = filter_antivirus_mms_checksum_data(antivirus_mms_checksum_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -330,7 +329,7 @@ def antivirus_mms_checksum(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("antivirus", "mms-checksum", data=filtered_data, vdom=vdom) + return fos.set("antivirus", "mms-checksum", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_antivirus_notification.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_antivirus_notification.py index 02bf6577f..952a75f1c 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_antivirus_notification.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_antivirus_notification.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -267,9 +267,8 @@ def antivirus_notification(data, fos, check_mode=False): state = data["state"] antivirus_notification_data = data["antivirus_notification"] - filtered_data = underscore_to_hyphen( - filter_antivirus_notification_data(antivirus_notification_data) - ) + filtered_data = filter_antivirus_notification_data(antivirus_notification_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -333,7 +332,7 @@ def antivirus_notification(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("antivirus", "notification", data=filtered_data, vdom=vdom) + return fos.set("antivirus", "notification", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_antivirus_profile.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_antivirus_profile.py index 4afe858b4..e0ea03688 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_antivirus_profile.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_antivirus_profile.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -470,7 +470,7 @@ options: - 'ignore' fortisandbox_max_upload: description: - - Maximum size of files that can be uploaded to FortiSandbox. + - Maximum size of files that can be uploaded to FortiSandbox in Mbytes. type: int fortisandbox_mode: description: @@ -1973,12 +1973,11 @@ def antivirus_profile(data, fos): antivirus_profile_data = data["antivirus_profile"] antivirus_profile_data = flatten_multilists_attributes(antivirus_profile_data) - filtered_data = underscore_to_hyphen( - filter_antivirus_profile_data(antivirus_profile_data) - ) + filtered_data = filter_antivirus_profile_data(antivirus_profile_data) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: - return fos.set("antivirus", "profile", data=filtered_data, vdom=vdom) + return fos.set("antivirus", "profile", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("antivirus", "profile", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_antivirus_quarantine.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_antivirus_quarantine.py index 2f52d03e3..ef8e41946 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_antivirus_quarantine.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_antivirus_quarantine.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -522,11 +522,10 @@ def antivirus_quarantine(data, fos): vdom = data["vdom"] antivirus_quarantine_data = data["antivirus_quarantine"] antivirus_quarantine_data = flatten_multilists_attributes(antivirus_quarantine_data) - filtered_data = underscore_to_hyphen( - filter_antivirus_quarantine_data(antivirus_quarantine_data) - ) + filtered_data = filter_antivirus_quarantine_data(antivirus_quarantine_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("antivirus", "quarantine", data=filtered_data, vdom=vdom) + return fos.set("antivirus", "quarantine", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_antivirus_settings.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_antivirus_settings.py index a1df0ea8c..9e811f979 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_antivirus_settings.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_antivirus_settings.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -261,11 +261,10 @@ def underscore_to_hyphen(data): def antivirus_settings(data, fos): vdom = data["vdom"] antivirus_settings_data = data["antivirus_settings"] - filtered_data = underscore_to_hyphen( - filter_antivirus_settings_data(antivirus_settings_data) - ) + filtered_data = filter_antivirus_settings_data(antivirus_settings_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("antivirus", "settings", data=filtered_data, vdom=vdom) + return fos.set("antivirus", "settings", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_application_custom.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_application_custom.py index a6894a1ac..f7ab53a2b 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_application_custom.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_application_custom.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -281,9 +281,8 @@ def application_custom(data, fos, check_mode=False): state = data["state"] application_custom_data = data["application_custom"] - filtered_data = underscore_to_hyphen( - filter_application_custom_data(application_custom_data) - ) + filtered_data = filter_application_custom_data(application_custom_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -347,7 +346,7 @@ def application_custom(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("application", "custom", data=filtered_data, vdom=vdom) + return fos.set("application", "custom", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("application", "custom", mkey=filtered_data["tag"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_application_group.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_application_group.py index 9cd734797..40cb1ef17 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_application_group.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_application_group.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -364,9 +364,8 @@ def application_group(data, fos, check_mode=False): application_group_data = data["application_group"] application_group_data = flatten_multilists_attributes(application_group_data) - filtered_data = underscore_to_hyphen( - filter_application_group_data(application_group_data) - ) + filtered_data = filter_application_group_data(application_group_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -430,7 +429,7 @@ def application_group(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("application", "group", data=filtered_data, vdom=vdom) + return fos.set("application", "group", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("application", "group", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_application_list.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_application_list.py index 4a203f5d5..358fea9fe 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_application_list.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_application_list.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -709,9 +709,8 @@ def application_list(data, fos, check_mode=False): application_list_data = data["application_list"] application_list_data = flatten_multilists_attributes(application_list_data) - filtered_data = underscore_to_hyphen( - filter_application_list_data(application_list_data) - ) + filtered_data = filter_application_list_data(application_list_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -775,7 +774,7 @@ def application_list(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("application", "list", data=filtered_data, vdom=vdom) + return fos.set("application", "list", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("application", "list", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_application_name.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_application_name.py index 88df2a230..3389f546c 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_application_name.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_application_name.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -333,9 +333,9 @@ def underscore_to_hyphen(data): def valid_attr_to_invalid_attr(data): - specillist = {"default value": "default_value"} + speciallist = {"default value": "default_value"} - for k, v in specillist.items(): + for k, v in speciallist.items(): if v == data: return k @@ -344,8 +344,11 @@ def valid_attr_to_invalid_attr(data): def valid_attr_to_invalid_attrs(data): if isinstance(data, list): + new_data = [] for elem in data: elem = valid_attr_to_invalid_attrs(elem) + new_data.append(elem) + data = new_data elif isinstance(data, dict): new_data = {} for k, v in data.items(): @@ -361,10 +364,8 @@ def application_name(data, fos, check_mode=False): state = data["state"] application_name_data = data["application_name"] - filtered_data = underscore_to_hyphen( - filter_application_name_data(application_name_data) - ) - converted_data = valid_attr_to_invalid_attrs(filtered_data) + filtered_data = filter_application_name_data(application_name_data) + converted_data = underscore_to_hyphen(valid_attr_to_invalid_attrs(filtered_data)) # check_mode starts from here if check_mode: diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_application_rule_settings.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_application_rule_settings.py index 0ece60975..5521d63ea 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_application_rule_settings.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_application_rule_settings.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -227,9 +227,10 @@ def application_rule_settings(data, fos, check_mode=False): state = data["state"] application_rule_settings_data = data["application_rule_settings"] - filtered_data = underscore_to_hyphen( - filter_application_rule_settings_data(application_rule_settings_data) + filtered_data = filter_application_rule_settings_data( + application_rule_settings_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -293,7 +294,7 @@ def application_rule_settings(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("application", "rule-settings", data=filtered_data, vdom=vdom) + return fos.set("application", "rule-settings", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_authentication_rule.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_authentication_rule.py index 1691002b8..c3d00da44 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_authentication_rule.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_authentication_rule.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -395,9 +395,8 @@ def authentication_rule(data, fos, check_mode=False): state = data["state"] authentication_rule_data = data["authentication_rule"] - filtered_data = underscore_to_hyphen( - filter_authentication_rule_data(authentication_rule_data) - ) + filtered_data = filter_authentication_rule_data(authentication_rule_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -461,7 +460,7 @@ def authentication_rule(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("authentication", "rule", data=filtered_data, vdom=vdom) + return fos.set("authentication", "rule", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_authentication_scheme.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_authentication_scheme.py index b48908fb5..937120032 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_authentication_scheme.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_authentication_scheme.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -373,9 +373,8 @@ def authentication_scheme(data, fos, check_mode=False): authentication_scheme_data = flatten_multilists_attributes( authentication_scheme_data ) - filtered_data = underscore_to_hyphen( - filter_authentication_scheme_data(authentication_scheme_data) - ) + filtered_data = filter_authentication_scheme_data(authentication_scheme_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -439,7 +438,7 @@ def authentication_scheme(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("authentication", "scheme", data=filtered_data, vdom=vdom) + return fos.set("authentication", "scheme", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_authentication_setting.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_authentication_setting.py index bff03f6c2..595a3df27 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_authentication_setting.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_authentication_setting.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -190,7 +190,7 @@ options: suboptions: name: description: - - CA certificate list. Source vpn.certificate.ca.name. + - CA certificate list. Source vpn.certificate.ca.name vpn.certificate.local.name. required: true type: str """ @@ -224,7 +224,7 @@ EXAMPLES = """ update_time: "<your_own_value>" user_cert_ca: - - name: "default_name_25 (source vpn.certificate.ca.name)" + name: "default_name_25 (source vpn.certificate.ca.name vpn.certificate.local.name)" """ RETURN = """ @@ -357,11 +357,10 @@ def underscore_to_hyphen(data): def authentication_setting(data, fos): vdom = data["vdom"] authentication_setting_data = data["authentication_setting"] - filtered_data = underscore_to_hyphen( - filter_authentication_setting_data(authentication_setting_data) - ) + filtered_data = filter_authentication_setting_data(authentication_setting_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("authentication", "setting", data=filtered_data, vdom=vdom) + return fos.set("authentication", "setting", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_automation_setting.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_automation_setting.py index 3a4f75391..bd7c31503 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_automation_setting.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_automation_setting.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -210,11 +210,10 @@ def underscore_to_hyphen(data): def automation_setting(data, fos): vdom = data["vdom"] automation_setting_data = data["automation_setting"] - filtered_data = underscore_to_hyphen( - filter_automation_setting_data(automation_setting_data) - ) + filtered_data = filter_automation_setting_data(automation_setting_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("automation", "setting", data=filtered_data, vdom=vdom) + return fos.set("automation", "setting", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_casb_profile.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_casb_profile.py index 27ea05cff..98cb82fd1 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_casb_profile.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_casb_profile.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -210,6 +210,13 @@ options: - Safe search control name. required: true type: str + status: + description: + - Enable/disable setting. + type: str + choices: + - 'enable' + - 'disable' tenant_control: description: - Enable/disable tenant control. @@ -264,10 +271,11 @@ EXAMPLES = """ safe_search_control: - name: "default_name_22" + status: "enable" tenant_control: "enable" tenant_control_tenants: - - name: "default_name_25" + name: "default_name_26" """ RETURN = """ @@ -411,10 +419,11 @@ def casb_profile(data, fos): casb_profile_data = data["casb_profile"] casb_profile_data = flatten_multilists_attributes(casb_profile_data) - filtered_data = underscore_to_hyphen(filter_casb_profile_data(casb_profile_data)) + filtered_data = filter_casb_profile_data(casb_profile_data) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: - return fos.set("casb", "profile", data=filtered_data, vdom=vdom) + return fos.set("casb", "profile", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("casb", "profile", mkey=filtered_data["name"], vdom=vdom) @@ -464,6 +473,11 @@ versioned_schema = { "type": "string", "required": True, }, + "status": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "safe_search": { "v_range": [["v7.4.1", ""]], "type": "string", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_casb_saas_application.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_casb_saas_application.py index 92e2f79d9..832e9e74e 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_casb_saas_application.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_casb_saas_application.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -112,6 +112,13 @@ options: - SaaS application name. required: true type: str + status: + description: + - Enable/disable setting. + type: str + choices: + - 'enable' + - 'disable' type: description: - SaaS application type. @@ -138,6 +145,7 @@ EXAMPLES = """ - domain: "<your_own_value>" name: "default_name_7" + status: "enable" type: "built-in" uuid: "<your_own_value>" """ @@ -222,7 +230,15 @@ from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.data_post def filter_casb_saas_application_data(json): - option_list = ["casb_name", "description", "domains", "name", "type", "uuid"] + option_list = [ + "casb_name", + "description", + "domains", + "name", + "status", + "type", + "uuid", + ] json = remove_invalid_fields(json) dictionary = {} @@ -253,12 +269,11 @@ def casb_saas_application(data, fos): state = data["state"] casb_saas_application_data = data["casb_saas_application"] - filtered_data = underscore_to_hyphen( - filter_casb_saas_application_data(casb_saas_application_data) - ) + filtered_data = filter_casb_saas_application_data(casb_saas_application_data) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: - return fos.set("casb", "saas-application", data=filtered_data, vdom=vdom) + return fos.set("casb", "saas-application", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( @@ -302,6 +317,11 @@ versioned_schema = { "children": { "name": {"v_range": [["v7.4.1", ""]], "type": "string", "required": True}, "uuid": {"v_range": [["v7.4.1", ""]], "type": "string"}, + "status": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "type": { "v_range": [["v7.4.1", ""]], "type": "string", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_casb_user_activity.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_casb_user_activity.py index c5d53b97a..d233061d3 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_casb_user_activity.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_casb_user_activity.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -193,6 +193,13 @@ options: - Operation value. required: true type: str + status: + description: + - CASB control option status. + type: str + choices: + - 'enable' + - 'disable' description: description: - CASB user activity description. @@ -301,6 +308,13 @@ options: - CASB user activity name. required: true type: str + status: + description: + - CASB user activity status. + type: str + choices: + - 'enable' + - 'disable' type: description: - CASB user activity type. @@ -341,10 +355,11 @@ EXAMPLES = """ values: - value: "<your_own_value>" + status: "enable" description: "<your_own_value>" match: - - id: "22" + id: "23" rules: - case_sensitive: "enable" @@ -352,7 +367,7 @@ EXAMPLES = """ - domain: "<your_own_value>" header_name: "<your_own_value>" - id: "28" + id: "29" match_pattern: "simple" match_value: "<your_own_value>" methods: @@ -362,7 +377,8 @@ EXAMPLES = """ type: "domains" strategy: "and" match_strategy: "and" - name: "default_name_37" + name: "default_name_38" + status: "enable" type: "built-in" uuid: "<your_own_value>" """ @@ -456,6 +472,7 @@ def filter_casb_user_activity_data(json): "match", "match_strategy", "name", + "status", "type", "uuid", ] @@ -489,12 +506,11 @@ def casb_user_activity(data, fos): state = data["state"] casb_user_activity_data = data["casb_user_activity"] - filtered_data = underscore_to_hyphen( - filter_casb_user_activity_data(casb_user_activity_data) - ) + filtered_data = filter_casb_user_activity_data(casb_user_activity_data) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: - return fos.set("casb", "user-activity", data=filtered_data, vdom=vdom) + return fos.set("casb", "user-activity", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( @@ -538,6 +554,11 @@ versioned_schema = { "children": { "name": {"v_range": [["v7.4.1", ""]], "type": "string", "required": True}, "uuid": {"v_range": [["v7.4.1", ""]], "type": "string"}, + "status": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "description": {"v_range": [["v7.4.1", ""]], "type": "string"}, "type": { "v_range": [["v7.4.1", ""]], @@ -657,6 +678,11 @@ versioned_schema = { "type": "string", "required": True, }, + "status": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "operations": { "type": "list", "elements": "dict", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_certificate_ca.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_certificate_ca.py index 09e7cefa7..c33ee103b 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_certificate_ca.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_certificate_ca.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -321,9 +321,8 @@ def certificate_ca(data, fos, check_mode=False): state = data["state"] certificate_ca_data = data["certificate_ca"] - filtered_data = underscore_to_hyphen( - filter_certificate_ca_data(certificate_ca_data) - ) + filtered_data = filter_certificate_ca_data(certificate_ca_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -387,7 +386,7 @@ def certificate_ca(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("certificate", "ca", data=filtered_data, vdom=vdom) + return fos.set("certificate", "ca", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("certificate", "ca", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_certificate_crl.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_certificate_crl.py index 10478a682..301aea9e0 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_certificate_crl.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_certificate_crl.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -312,9 +312,8 @@ def certificate_crl(data, fos, check_mode=False): state = data["state"] certificate_crl_data = data["certificate_crl"] - filtered_data = underscore_to_hyphen( - filter_certificate_crl_data(certificate_crl_data) - ) + filtered_data = filter_certificate_crl_data(certificate_crl_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -378,7 +377,7 @@ def certificate_crl(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("certificate", "crl", data=filtered_data, vdom=vdom) + return fos.set("certificate", "crl", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("certificate", "crl", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_certificate_local.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_certificate_local.py index cdfbc0ee2..8c79352c1 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_certificate_local.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_certificate_local.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -474,9 +474,8 @@ def certificate_local(data, fos, check_mode=False): state = data["state"] certificate_local_data = data["certificate_local"] - filtered_data = underscore_to_hyphen( - filter_certificate_local_data(certificate_local_data) - ) + filtered_data = filter_certificate_local_data(certificate_local_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -540,7 +539,7 @@ def certificate_local(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("certificate", "local", data=filtered_data, vdom=vdom) + return fos.set("certificate", "local", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("certificate", "local", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_certificate_remote.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_certificate_remote.py index b2d1eb470..c0e3b688d 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_certificate_remote.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_certificate_remote.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -247,9 +247,8 @@ def certificate_remote(data, fos, check_mode=False): state = data["state"] certificate_remote_data = data["certificate_remote"] - filtered_data = underscore_to_hyphen( - filter_certificate_remote_data(certificate_remote_data) - ) + filtered_data = filter_certificate_remote_data(certificate_remote_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -313,7 +312,7 @@ def certificate_remote(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("certificate", "remote", data=filtered_data, vdom=vdom) + return fos.set("certificate", "remote", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_cifs_domain_controller.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_cifs_domain_controller.py index b3722ed1b..1e8eb09f8 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_cifs_domain_controller.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_cifs_domain_controller.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -263,9 +263,8 @@ def cifs_domain_controller(data, fos, check_mode=False): state = data["state"] cifs_domain_controller_data = data["cifs_domain_controller"] - filtered_data = underscore_to_hyphen( - filter_cifs_domain_controller_data(cifs_domain_controller_data) - ) + filtered_data = filter_cifs_domain_controller_data(cifs_domain_controller_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -329,7 +328,7 @@ def cifs_domain_controller(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("cifs", "domain-controller", data=filtered_data, vdom=vdom) + return fos.set("cifs", "domain-controller", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_cifs_profile.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_cifs_profile.py index 0a39b3308..c8a6dec21 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_cifs_profile.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_cifs_profile.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -379,7 +379,8 @@ def cifs_profile(data, fos, check_mode=False): cifs_profile_data = data["cifs_profile"] cifs_profile_data = flatten_multilists_attributes(cifs_profile_data) - filtered_data = underscore_to_hyphen(filter_cifs_profile_data(cifs_profile_data)) + filtered_data = filter_cifs_profile_data(cifs_profile_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -443,7 +444,7 @@ def cifs_profile(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("cifs", "profile", data=filtered_data, vdom=vdom) + return fos.set("cifs", "profile", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("cifs", "profile", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_configuration_fact.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_configuration_fact.py index 2c1d96e9f..14117cf4a 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_configuration_fact.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_configuration_fact.py @@ -414,6 +414,7 @@ options: - 'vpn.certificate_crl' - 'vpn.certificate_ocsp-server' - 'vpn.certificate_setting' + - 'vpn_qkd' - 'vpn.ssl.web_realm' - 'vpn.ssl.web_host-check-software' - 'vpn.ssl.web_portal' @@ -421,16 +422,16 @@ options: - 'vpn.ssl.web_user-bookmark' - 'vpn.ssl_settings' - 'vpn.ssl_client' - - 'vpn_kmip-server' + - 'vpn.ipsec_fec' - 'vpn.ipsec_phase1' - 'vpn.ipsec_phase2' - 'vpn.ipsec_manualkey' - 'vpn.ipsec_concentrator' - - 'vpn.ipsec_fec' - 'vpn.ipsec_phase1-interface' - 'vpn.ipsec_phase2-interface' - 'vpn.ipsec_manualkey-interface' - 'vpn.ipsec_forticlient' + - 'vpn_kmip-server' - 'vpn_pptp' - 'vpn_l2tp' - 'certificate_ca' @@ -454,6 +455,7 @@ options: - 'ips_global' - 'ips_settings' - 'sctp-filter_profile' + - 'diameter-filter_profile' - 'web-proxy_profile' - 'web-proxy_global' - 'web-proxy_explicit' @@ -477,6 +479,7 @@ options: - 'application_group' - 'dlp_data-type' - 'dlp_dictionary' + - 'dlp_exact-data-match' - 'dlp_sensor' - 'dlp_filepattern' - 'dlp_sensitivity' @@ -484,7 +487,7 @@ options: - 'dlp_profile' - 'dlp_settings' - 'videofilter_youtube-key' - - 'videofilter_youtube-channel-filter' + - 'videofilter_keyword' - 'videofilter_profile' - 'emailfilter_bword' - 'emailfilter_block-allow-list' @@ -553,6 +556,8 @@ options: - 'icap_server' - 'icap_server-group' - 'icap_profile' + - 'user_peer' + - 'user_peergrp' - 'user_certificate' - 'user_radius' - 'user_tacacs+' @@ -562,6 +567,7 @@ options: - 'user_domain-controller' - 'user_pop3' - 'user_saml' + - 'user_external-identity-provider' - 'user_fsso' - 'user_adgrp' - 'user_fsso-polling' @@ -569,8 +575,6 @@ options: - 'user_password-policy' - 'user_local' - 'user_setting' - - 'user_peer' - - 'user_peergrp' - 'user_quarantine' - 'user_group' - 'user_security-exempt-list' @@ -640,22 +644,14 @@ options: - 'system_isf-queue-profile' - 'system_npu' - 'system_np6' + - 'system_gi-gk' - 'system_modem' - 'system.3g-modem_custom' - 'system_lte-modem' - - 'firewall_acl' - - 'firewall_acl6' - - 'monitoring_np6-ipsec-engine' - - 'monitoring_npu-hpe' - - 'switch-controller.ptp_settings' - - 'switch-controller.ptp_policy' - - 'system_physical-switch' - - 'system_virtual-switch' - - 'system_stp' - - 'system_gi-gk' - 'firewall_gtp' - 'firewall_pfcp' - - 'vpn_ocvpn' + - 'firewall_acl' + - 'firewall_acl6' - 'gtp_apn' - 'gtp_apngrp' - 'gtp_message-filter-v0v1' @@ -665,6 +661,17 @@ options: - 'gtp_tunnel-limit' - 'gtp_apn-shaper' - 'pfcp_message-filter' + - 'monitoring_np6-ipsec-engine' + - 'monitoring_npu-hpe' + - 'system_npu-vlink' + - 'system_physical-switch' + - 'system_virtual-switch' + - 'system_stp' + - 'system_smc-ntp' + - 'videofilter_youtube-channel-filter' + - 'switch-controller.ptp_settings' + - 'switch-controller.ptp_policy' + - 'vpn_ocvpn' - 'system.replacemsg_mail' - 'system.replacemsg_http' - 'system.replacemsg_webproxy' @@ -829,7 +836,6 @@ options: - 'firewall_policy6' - 'antivirus_notification' - 'antivirus_mms-checksum' - - 'system_smc-ntp' - 'switch-controller_vlan' - 'switch-controller.security-policy_captive-portal' - 'user_device' @@ -1145,6 +1151,7 @@ options: - 'vpn.certificate_crl' - 'vpn.certificate_ocsp-server' - 'vpn.certificate_setting' + - 'vpn_qkd' - 'vpn.ssl.web_realm' - 'vpn.ssl.web_host-check-software' - 'vpn.ssl.web_portal' @@ -1152,16 +1159,16 @@ options: - 'vpn.ssl.web_user-bookmark' - 'vpn.ssl_settings' - 'vpn.ssl_client' - - 'vpn_kmip-server' + - 'vpn.ipsec_fec' - 'vpn.ipsec_phase1' - 'vpn.ipsec_phase2' - 'vpn.ipsec_manualkey' - 'vpn.ipsec_concentrator' - - 'vpn.ipsec_fec' - 'vpn.ipsec_phase1-interface' - 'vpn.ipsec_phase2-interface' - 'vpn.ipsec_manualkey-interface' - 'vpn.ipsec_forticlient' + - 'vpn_kmip-server' - 'vpn_pptp' - 'vpn_l2tp' - 'certificate_ca' @@ -1185,6 +1192,7 @@ options: - 'ips_global' - 'ips_settings' - 'sctp-filter_profile' + - 'diameter-filter_profile' - 'web-proxy_profile' - 'web-proxy_global' - 'web-proxy_explicit' @@ -1208,6 +1216,7 @@ options: - 'application_group' - 'dlp_data-type' - 'dlp_dictionary' + - 'dlp_exact-data-match' - 'dlp_sensor' - 'dlp_filepattern' - 'dlp_sensitivity' @@ -1215,7 +1224,7 @@ options: - 'dlp_profile' - 'dlp_settings' - 'videofilter_youtube-key' - - 'videofilter_youtube-channel-filter' + - 'videofilter_keyword' - 'videofilter_profile' - 'emailfilter_bword' - 'emailfilter_block-allow-list' @@ -1284,6 +1293,8 @@ options: - 'icap_server' - 'icap_server-group' - 'icap_profile' + - 'user_peer' + - 'user_peergrp' - 'user_certificate' - 'user_radius' - 'user_tacacs+' @@ -1293,6 +1304,7 @@ options: - 'user_domain-controller' - 'user_pop3' - 'user_saml' + - 'user_external-identity-provider' - 'user_fsso' - 'user_adgrp' - 'user_fsso-polling' @@ -1300,8 +1312,6 @@ options: - 'user_password-policy' - 'user_local' - 'user_setting' - - 'user_peer' - - 'user_peergrp' - 'user_quarantine' - 'user_group' - 'user_security-exempt-list' @@ -1371,22 +1381,14 @@ options: - 'system_isf-queue-profile' - 'system_npu' - 'system_np6' + - 'system_gi-gk' - 'system_modem' - 'system.3g-modem_custom' - 'system_lte-modem' - - 'firewall_acl' - - 'firewall_acl6' - - 'monitoring_np6-ipsec-engine' - - 'monitoring_npu-hpe' - - 'switch-controller.ptp_settings' - - 'switch-controller.ptp_policy' - - 'system_physical-switch' - - 'system_virtual-switch' - - 'system_stp' - - 'system_gi-gk' - 'firewall_gtp' - 'firewall_pfcp' - - 'vpn_ocvpn' + - 'firewall_acl' + - 'firewall_acl6' - 'gtp_apn' - 'gtp_apngrp' - 'gtp_message-filter-v0v1' @@ -1396,6 +1398,17 @@ options: - 'gtp_tunnel-limit' - 'gtp_apn-shaper' - 'pfcp_message-filter' + - 'monitoring_np6-ipsec-engine' + - 'monitoring_npu-hpe' + - 'system_npu-vlink' + - 'system_physical-switch' + - 'system_virtual-switch' + - 'system_stp' + - 'system_smc-ntp' + - 'videofilter_youtube-channel-filter' + - 'switch-controller.ptp_settings' + - 'switch-controller.ptp_policy' + - 'vpn_ocvpn' - 'system.replacemsg_mail' - 'system.replacemsg_http' - 'system.replacemsg_webproxy' @@ -1560,7 +1573,6 @@ options: - 'firewall_policy6' - 'antivirus_notification' - 'antivirus_mms-checksum' - - 'system_smc-ntp' - 'switch-controller_vlan' - 'switch-controller.security-policy_captive-portal' - 'user_device' @@ -2853,6 +2865,10 @@ MODULE_MKEY_DEFINITONS = { "mkey": "None", "mkey_type": None, }, + "vpn_qkd": { + "mkey": "name", + "mkey_type": str, + }, "vpn.ssl.web_realm": { "mkey": "url_path", "mkey_type": str, @@ -2881,7 +2897,7 @@ MODULE_MKEY_DEFINITONS = { "mkey": "name", "mkey_type": str, }, - "vpn_kmip-server": { + "vpn.ipsec_fec": { "mkey": "name", "mkey_type": str, }, @@ -2901,10 +2917,6 @@ MODULE_MKEY_DEFINITONS = { "mkey": "id", "mkey_type": int, }, - "vpn.ipsec_fec": { - "mkey": "name", - "mkey_type": str, - }, "vpn.ipsec_phase1-interface": { "mkey": "name", "mkey_type": str, @@ -2921,6 +2933,10 @@ MODULE_MKEY_DEFINITONS = { "mkey": "realm", "mkey_type": str, }, + "vpn_kmip-server": { + "mkey": "name", + "mkey_type": str, + }, "vpn_pptp": { "mkey": "None", "mkey_type": None, @@ -3013,6 +3029,10 @@ MODULE_MKEY_DEFINITONS = { "mkey": "name", "mkey_type": str, }, + "diameter-filter_profile": { + "mkey": "name", + "mkey_type": str, + }, "web-proxy_profile": { "mkey": "name", "mkey_type": str, @@ -3105,6 +3125,10 @@ MODULE_MKEY_DEFINITONS = { "mkey": "name", "mkey_type": str, }, + "dlp_exact-data-match": { + "mkey": "name", + "mkey_type": str, + }, "dlp_sensor": { "mkey": "name", "mkey_type": str, @@ -3133,7 +3157,7 @@ MODULE_MKEY_DEFINITONS = { "mkey": "id", "mkey_type": int, }, - "videofilter_youtube-channel-filter": { + "videofilter_keyword": { "mkey": "id", "mkey_type": int, }, @@ -3409,6 +3433,14 @@ MODULE_MKEY_DEFINITONS = { "mkey": "name", "mkey_type": str, }, + "user_peer": { + "mkey": "name", + "mkey_type": str, + }, + "user_peergrp": { + "mkey": "name", + "mkey_type": str, + }, "user_certificate": { "mkey": "name", "mkey_type": str, @@ -3445,6 +3477,10 @@ MODULE_MKEY_DEFINITONS = { "mkey": "name", "mkey_type": str, }, + "user_external-identity-provider": { + "mkey": "name", + "mkey_type": str, + }, "user_fsso": { "mkey": "name", "mkey_type": str, @@ -3473,14 +3509,6 @@ MODULE_MKEY_DEFINITONS = { "mkey": "None", "mkey_type": None, }, - "user_peer": { - "mkey": "name", - "mkey_type": str, - }, - "user_peergrp": { - "mkey": "name", - "mkey_type": str, - }, "user_quarantine": { "mkey": "None", "mkey_type": None, @@ -3757,6 +3785,10 @@ MODULE_MKEY_DEFINITONS = { "mkey": "name", "mkey_type": str, }, + "system_gi-gk": { + "mkey": "None", + "mkey_type": None, + }, "system_modem": { "mkey": "None", "mkey_type": None, @@ -3769,6 +3801,14 @@ MODULE_MKEY_DEFINITONS = { "mkey": "None", "mkey_type": None, }, + "firewall_gtp": { + "mkey": "name", + "mkey_type": str, + }, + "firewall_pfcp": { + "mkey": "name", + "mkey_type": str, + }, "firewall_acl": { "mkey": "policyid", "mkey_type": int, @@ -3777,86 +3817,86 @@ MODULE_MKEY_DEFINITONS = { "mkey": "policyid", "mkey_type": int, }, - "monitoring_np6-ipsec-engine": { - "mkey": "None", - "mkey_type": None, - }, - "monitoring_npu-hpe": { - "mkey": "None", - "mkey_type": None, - }, - "switch-controller.ptp_settings": { - "mkey": "None", - "mkey_type": None, - }, - "switch-controller.ptp_policy": { + "gtp_apn": { "mkey": "name", "mkey_type": str, }, - "system_physical-switch": { + "gtp_apngrp": { "mkey": "name", "mkey_type": str, }, - "system_virtual-switch": { + "gtp_message-filter-v0v1": { "mkey": "name", "mkey_type": str, }, - "system_stp": { - "mkey": "None", - "mkey_type": None, - }, - "system_gi-gk": { - "mkey": "None", - "mkey_type": None, - }, - "firewall_gtp": { + "gtp_message-filter-v2": { "mkey": "name", "mkey_type": str, }, - "firewall_pfcp": { + "gtp_rat-timeout-profile": { "mkey": "name", "mkey_type": str, }, - "vpn_ocvpn": { - "mkey": "None", - "mkey_type": None, - }, - "gtp_apn": { + "gtp_ie-allow-list": { "mkey": "name", "mkey_type": str, }, - "gtp_apngrp": { + "gtp_tunnel-limit": { "mkey": "name", "mkey_type": str, }, - "gtp_message-filter-v0v1": { - "mkey": "name", - "mkey_type": str, + "gtp_apn-shaper": { + "mkey": "id", + "mkey_type": int, }, - "gtp_message-filter-v2": { + "pfcp_message-filter": { "mkey": "name", "mkey_type": str, }, - "gtp_rat-timeout-profile": { + "monitoring_np6-ipsec-engine": { + "mkey": "None", + "mkey_type": None, + }, + "monitoring_npu-hpe": { + "mkey": "None", + "mkey_type": None, + }, + "system_npu-vlink": { "mkey": "name", "mkey_type": str, }, - "gtp_ie-allow-list": { + "system_physical-switch": { "mkey": "name", "mkey_type": str, }, - "gtp_tunnel-limit": { + "system_virtual-switch": { "mkey": "name", "mkey_type": str, }, - "gtp_apn-shaper": { + "system_stp": { + "mkey": "None", + "mkey_type": None, + }, + "system_smc-ntp": { + "mkey": "None", + "mkey_type": None, + }, + "videofilter_youtube-channel-filter": { "mkey": "id", "mkey_type": int, }, - "pfcp_message-filter": { + "switch-controller.ptp_settings": { + "mkey": "None", + "mkey_type": None, + }, + "switch-controller.ptp_policy": { "mkey": "name", "mkey_type": str, }, + "vpn_ocvpn": { + "mkey": "None", + "mkey_type": None, + }, "system.replacemsg_mail": { "mkey": "msg_type", "mkey_type": str, @@ -4513,10 +4553,6 @@ MODULE_MKEY_DEFINITONS = { "mkey": "id", "mkey_type": int, }, - "system_smc-ntp": { - "mkey": "None", - "mkey_type": None, - }, "switch-controller_vlan": { "mkey": "name", "mkey_type": str, @@ -4993,6 +5029,7 @@ def main(): "vpn.certificate_crl", "vpn.certificate_ocsp-server", "vpn.certificate_setting", + "vpn_qkd", "vpn.ssl.web_realm", "vpn.ssl.web_host-check-software", "vpn.ssl.web_portal", @@ -5000,16 +5037,16 @@ def main(): "vpn.ssl.web_user-bookmark", "vpn.ssl_settings", "vpn.ssl_client", - "vpn_kmip-server", + "vpn.ipsec_fec", "vpn.ipsec_phase1", "vpn.ipsec_phase2", "vpn.ipsec_manualkey", "vpn.ipsec_concentrator", - "vpn.ipsec_fec", "vpn.ipsec_phase1-interface", "vpn.ipsec_phase2-interface", "vpn.ipsec_manualkey-interface", "vpn.ipsec_forticlient", + "vpn_kmip-server", "vpn_pptp", "vpn_l2tp", "certificate_ca", @@ -5033,6 +5070,7 @@ def main(): "ips_global", "ips_settings", "sctp-filter_profile", + "diameter-filter_profile", "web-proxy_profile", "web-proxy_global", "web-proxy_explicit", @@ -5056,6 +5094,7 @@ def main(): "application_group", "dlp_data-type", "dlp_dictionary", + "dlp_exact-data-match", "dlp_sensor", "dlp_filepattern", "dlp_sensitivity", @@ -5063,7 +5102,7 @@ def main(): "dlp_profile", "dlp_settings", "videofilter_youtube-key", - "videofilter_youtube-channel-filter", + "videofilter_keyword", "videofilter_profile", "emailfilter_bword", "emailfilter_block-allow-list", @@ -5132,6 +5171,8 @@ def main(): "icap_server", "icap_server-group", "icap_profile", + "user_peer", + "user_peergrp", "user_certificate", "user_radius", "user_tacacs+", @@ -5141,6 +5182,7 @@ def main(): "user_domain-controller", "user_pop3", "user_saml", + "user_external-identity-provider", "user_fsso", "user_adgrp", "user_fsso-polling", @@ -5148,8 +5190,6 @@ def main(): "user_password-policy", "user_local", "user_setting", - "user_peer", - "user_peergrp", "user_quarantine", "user_group", "user_security-exempt-list", @@ -5219,22 +5259,14 @@ def main(): "system_isf-queue-profile", "system_npu", "system_np6", + "system_gi-gk", "system_modem", "system.3g-modem_custom", "system_lte-modem", - "firewall_acl", - "firewall_acl6", - "monitoring_np6-ipsec-engine", - "monitoring_npu-hpe", - "switch-controller.ptp_settings", - "switch-controller.ptp_policy", - "system_physical-switch", - "system_virtual-switch", - "system_stp", - "system_gi-gk", "firewall_gtp", "firewall_pfcp", - "vpn_ocvpn", + "firewall_acl", + "firewall_acl6", "gtp_apn", "gtp_apngrp", "gtp_message-filter-v0v1", @@ -5244,6 +5276,17 @@ def main(): "gtp_tunnel-limit", "gtp_apn-shaper", "pfcp_message-filter", + "monitoring_np6-ipsec-engine", + "monitoring_npu-hpe", + "system_npu-vlink", + "system_physical-switch", + "system_virtual-switch", + "system_stp", + "system_smc-ntp", + "videofilter_youtube-channel-filter", + "switch-controller.ptp_settings", + "switch-controller.ptp_policy", + "vpn_ocvpn", "system.replacemsg_mail", "system.replacemsg_http", "system.replacemsg_webproxy", @@ -5408,7 +5451,6 @@ def main(): "firewall_policy6", "antivirus_notification", "antivirus_mms-checksum", - "system_smc-ntp", "switch-controller_vlan", "switch-controller.security-policy_captive-portal", "user_device", @@ -5732,6 +5774,7 @@ def main(): "vpn.certificate_crl", "vpn.certificate_ocsp-server", "vpn.certificate_setting", + "vpn_qkd", "vpn.ssl.web_realm", "vpn.ssl.web_host-check-software", "vpn.ssl.web_portal", @@ -5739,16 +5782,16 @@ def main(): "vpn.ssl.web_user-bookmark", "vpn.ssl_settings", "vpn.ssl_client", - "vpn_kmip-server", + "vpn.ipsec_fec", "vpn.ipsec_phase1", "vpn.ipsec_phase2", "vpn.ipsec_manualkey", "vpn.ipsec_concentrator", - "vpn.ipsec_fec", "vpn.ipsec_phase1-interface", "vpn.ipsec_phase2-interface", "vpn.ipsec_manualkey-interface", "vpn.ipsec_forticlient", + "vpn_kmip-server", "vpn_pptp", "vpn_l2tp", "certificate_ca", @@ -5772,6 +5815,7 @@ def main(): "ips_global", "ips_settings", "sctp-filter_profile", + "diameter-filter_profile", "web-proxy_profile", "web-proxy_global", "web-proxy_explicit", @@ -5795,6 +5839,7 @@ def main(): "application_group", "dlp_data-type", "dlp_dictionary", + "dlp_exact-data-match", "dlp_sensor", "dlp_filepattern", "dlp_sensitivity", @@ -5802,7 +5847,7 @@ def main(): "dlp_profile", "dlp_settings", "videofilter_youtube-key", - "videofilter_youtube-channel-filter", + "videofilter_keyword", "videofilter_profile", "emailfilter_bword", "emailfilter_block-allow-list", @@ -5871,6 +5916,8 @@ def main(): "icap_server", "icap_server-group", "icap_profile", + "user_peer", + "user_peergrp", "user_certificate", "user_radius", "user_tacacs+", @@ -5880,6 +5927,7 @@ def main(): "user_domain-controller", "user_pop3", "user_saml", + "user_external-identity-provider", "user_fsso", "user_adgrp", "user_fsso-polling", @@ -5887,8 +5935,6 @@ def main(): "user_password-policy", "user_local", "user_setting", - "user_peer", - "user_peergrp", "user_quarantine", "user_group", "user_security-exempt-list", @@ -5958,22 +6004,14 @@ def main(): "system_isf-queue-profile", "system_npu", "system_np6", + "system_gi-gk", "system_modem", "system.3g-modem_custom", "system_lte-modem", - "firewall_acl", - "firewall_acl6", - "monitoring_np6-ipsec-engine", - "monitoring_npu-hpe", - "switch-controller.ptp_settings", - "switch-controller.ptp_policy", - "system_physical-switch", - "system_virtual-switch", - "system_stp", - "system_gi-gk", "firewall_gtp", "firewall_pfcp", - "vpn_ocvpn", + "firewall_acl", + "firewall_acl6", "gtp_apn", "gtp_apngrp", "gtp_message-filter-v0v1", @@ -5983,6 +6021,17 @@ def main(): "gtp_tunnel-limit", "gtp_apn-shaper", "pfcp_message-filter", + "monitoring_np6-ipsec-engine", + "monitoring_npu-hpe", + "system_npu-vlink", + "system_physical-switch", + "system_virtual-switch", + "system_stp", + "system_smc-ntp", + "videofilter_youtube-channel-filter", + "switch-controller.ptp_settings", + "switch-controller.ptp_policy", + "vpn_ocvpn", "system.replacemsg_mail", "system.replacemsg_http", "system.replacemsg_webproxy", @@ -6147,7 +6196,6 @@ def main(): "firewall_policy6", "antivirus_notification", "antivirus_mms-checksum", - "system_smc-ntp", "switch-controller_vlan", "switch-controller.security-policy_captive-portal", "user_device", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_credential_store_domain_controller.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_credential_store_domain_controller.py index bbbb07b07..82d4b0792 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_credential_store_domain_controller.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_credential_store_domain_controller.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -269,11 +269,10 @@ def credential_store_domain_controller(data, fos, check_mode=False): state = data["state"] credential_store_domain_controller_data = data["credential_store_domain_controller"] - filtered_data = underscore_to_hyphen( - filter_credential_store_domain_controller_data( - credential_store_domain_controller_data - ) + filtered_data = filter_credential_store_domain_controller_data( + credential_store_domain_controller_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -342,7 +341,7 @@ def credential_store_domain_controller(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "credential-store", "domain-controller", data=filtered_data, vdom=vdom + "credential-store", "domain-controller", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_diameter_filter_profile.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_diameter_filter_profile.py new file mode 100644 index 000000000..98e9920f3 --- /dev/null +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_diameter_filter_profile.py @@ -0,0 +1,542 @@ +#!/usr/bin/python +from __future__ import absolute_import, division, print_function + +# Copyright: (c) 2022 Fortinet +# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +__metaclass__ = type + +ANSIBLE_METADATA = { + "status": ["preview"], + "supported_by": "community", + "metadata_version": "1.1", +} + +DOCUMENTATION = """ +--- +module: fortios_diameter_filter_profile +short_description: Configure Diameter filter profiles in Fortinet's FortiOS and FortiGate. +description: + - This module is able to configure a FortiGate or FortiOS (FOS) device by allowing the + user to set and modify diameter_filter feature and profile category. + Examples include all parameters and values need to be adjusted to datasources before usage. + Tested with FOS v6.0.0 +version_added: "2.0.0" +author: + - Link Zheng (@chillancezen) + - Jie Xue (@JieX19) + - Hongbin Lu (@fgtdev-hblu) + - Frank Shen (@frankshen01) + - Miguel Angel Munoz (@mamunozgonzalez) + - Nicolas Thomas (@thomnico) +notes: + - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks + +requirements: + - ansible>=2.15 +options: + access_token: + description: + - Token-based authentication. + Generated from GUI of Fortigate. + type: str + required: false + enable_log: + description: + - Enable/Disable logging for task. + type: bool + required: false + default: false + vdom: + description: + - Virtual domain, among those defined previously. A vdom is a + virtual instance of the FortiGate that can be configured and + used as a different unit. + type: str + default: root + member_path: + type: str + description: + - Member attribute path to operate on. + - Delimited by a slash character if there are more than one attribute. + - Parameter marked with member_path is legitimate for doing member operation. + member_state: + type: str + description: + - Add or delete a member under specified attribute path. + - When member_state is specified, the state option is ignored. + choices: + - 'present' + - 'absent' + + state: + description: + - Indicates whether to create or remove the object. + type: str + required: true + choices: + - 'present' + - 'absent' + diameter_filter_profile: + description: + - Configure Diameter filter profiles. + default: null + type: dict + suboptions: + cmd_flags_reserve_set: + description: + - Action to be taken for messages with cmd flag reserve bits set. + type: str + choices: + - 'allow' + - 'block' + - 'reset' + - 'monitor' + command_code_invalid: + description: + - Action to be taken for messages with invalid command code. + type: str + choices: + - 'allow' + - 'block' + - 'reset' + - 'monitor' + command_code_range: + description: + - Valid range for command codes (0-16777215). + type: str + comment: + description: + - Comment. + type: str + log_packet: + description: + - Enable/disable packet log for triggered diameter settings. + type: str + choices: + - 'disable' + - 'enable' + message_length_invalid: + description: + - Action to be taken for invalid message length. + type: str + choices: + - 'allow' + - 'block' + - 'reset' + - 'monitor' + missing_request_action: + description: + - Action to be taken for answers without corresponding request. + type: str + choices: + - 'allow' + - 'block' + - 'reset' + - 'monitor' + monitor_all_messages: + description: + - Enable/disable logging for all User Name and Result Code AVP messages. + type: str + choices: + - 'disable' + - 'enable' + name: + description: + - Profile name. + required: true + type: str + protocol_version_invalid: + description: + - Action to be taken for invalid protocol version. + type: str + choices: + - 'allow' + - 'block' + - 'reset' + - 'monitor' + request_error_flag_set: + description: + - Action to be taken for request messages with error flag set. + type: str + choices: + - 'allow' + - 'block' + - 'reset' + - 'monitor' + track_requests_answers: + description: + - Enable/disable validation that each answer has a corresponding request. + type: str + choices: + - 'disable' + - 'enable' +""" + +EXAMPLES = """ +- name: Configure Diameter filter profiles. + fortinet.fortios.fortios_diameter_filter_profile: + vdom: "{{ vdom }}" + state: "present" + access_token: "<your_own_value>" + diameter_filter_profile: + cmd_flags_reserve_set: "allow" + command_code_invalid: "allow" + command_code_range: "<your_own_value>" + comment: "Comment." + log_packet: "disable" + message_length_invalid: "allow" + missing_request_action: "allow" + monitor_all_messages: "disable" + name: "default_name_11" + protocol_version_invalid: "allow" + request_error_flag_set: "allow" + track_requests_answers: "disable" +""" + +RETURN = """ +build: + description: Build number of the fortigate image + returned: always + type: str + sample: '1547' +http_method: + description: Last method used to provision the content into FortiGate + returned: always + type: str + sample: 'PUT' +http_status: + description: Last result given by FortiGate on last operation applied + returned: always + type: str + sample: "200" +mkey: + description: Master key (id) used in the last call to FortiGate + returned: success + type: str + sample: "id" +name: + description: Name of the table used to fulfill the request + returned: always + type: str + sample: "urlfilter" +path: + description: Path of the table used to fulfill the request + returned: always + type: str + sample: "webfilter" +revision: + description: Internal revision number + returned: always + type: str + sample: "17.0.2.10658" +serial: + description: Serial number of the unit + returned: always + type: str + sample: "FGVMEVYYQT3AB5352" +status: + description: Indication of the operation's result + returned: always + type: str + sample: "success" +vdom: + description: Virtual domain used + returned: always + type: str + sample: "root" +version: + description: Version of the FortiGate + returned: always + type: str + sample: "v5.6.3" +""" +from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.connection import Connection +from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.fortios import ( + FortiOSHandler, +) +from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.fortios import ( + check_legacy_fortiosapi, +) +from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.fortios import ( + schema_to_module_spec, +) +from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.fortios import ( + check_schema_versioning, +) +from ansible_collections.fortinet.fortios.plugins.module_utils.fortimanager.common import ( + FAIL_SOCKET_MSG, +) +from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.data_post_processor import ( + remove_invalid_fields, +) + + +def filter_diameter_filter_profile_data(json): + option_list = [ + "cmd_flags_reserve_set", + "command_code_invalid", + "command_code_range", + "comment", + "log_packet", + "message_length_invalid", + "missing_request_action", + "monitor_all_messages", + "name", + "protocol_version_invalid", + "request_error_flag_set", + "track_requests_answers", + ] + + json = remove_invalid_fields(json) + dictionary = {} + + for attribute in option_list: + if attribute in json and json[attribute] is not None: + dictionary[attribute] = json[attribute] + + return dictionary + + +def underscore_to_hyphen(data): + if isinstance(data, list): + for i, elem in enumerate(data): + data[i] = underscore_to_hyphen(elem) + elif isinstance(data, dict): + new_data = {} + for k, v in data.items(): + new_data[k.replace("_", "-")] = underscore_to_hyphen(v) + data = new_data + + return data + + +def diameter_filter_profile(data, fos): + vdom = data["vdom"] + + state = data["state"] + + diameter_filter_profile_data = data["diameter_filter_profile"] + filtered_data = filter_diameter_filter_profile_data(diameter_filter_profile_data) + converted_data = underscore_to_hyphen(filtered_data) + + if state == "present" or state is True: + return fos.set("diameter-filter", "profile", data=converted_data, vdom=vdom) + + elif state == "absent": + return fos.delete( + "diameter-filter", "profile", mkey=filtered_data["name"], vdom=vdom + ) + else: + fos._module.fail_json(msg="state must be present or absent!") + + +def is_successful_status(resp): + return ( + "status" in resp + and resp["status"] == "success" + or "http_status" in resp + and resp["http_status"] == 200 + or "http_method" in resp + and resp["http_method"] == "DELETE" + and resp["http_status"] == 404 + ) + + +def fortios_diameter_filter(data, fos): + fos.do_member_operation("diameter-filter", "profile") + if data["diameter_filter_profile"]: + resp = diameter_filter_profile(data, fos) + else: + fos._module.fail_json(msg="missing task body: %s" % ("diameter_filter_profile")) + + return ( + not is_successful_status(resp), + is_successful_status(resp) + and (resp["revision_changed"] if "revision_changed" in resp else True), + resp, + {}, + ) + + +versioned_schema = { + "type": "list", + "elements": "dict", + "children": { + "name": {"v_range": [["v7.4.2", ""]], "type": "string", "required": True}, + "comment": {"v_range": [["v7.4.2", ""]], "type": "string"}, + "monitor_all_messages": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "disable"}, {"value": "enable"}], + }, + "log_packet": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "disable"}, {"value": "enable"}], + }, + "track_requests_answers": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "disable"}, {"value": "enable"}], + }, + "missing_request_action": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [ + {"value": "allow"}, + {"value": "block"}, + {"value": "reset"}, + {"value": "monitor"}, + ], + }, + "protocol_version_invalid": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [ + {"value": "allow"}, + {"value": "block"}, + {"value": "reset"}, + {"value": "monitor"}, + ], + }, + "message_length_invalid": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [ + {"value": "allow"}, + {"value": "block"}, + {"value": "reset"}, + {"value": "monitor"}, + ], + }, + "request_error_flag_set": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [ + {"value": "allow"}, + {"value": "block"}, + {"value": "reset"}, + {"value": "monitor"}, + ], + }, + "cmd_flags_reserve_set": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [ + {"value": "allow"}, + {"value": "block"}, + {"value": "reset"}, + {"value": "monitor"}, + ], + }, + "command_code_invalid": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [ + {"value": "allow"}, + {"value": "block"}, + {"value": "reset"}, + {"value": "monitor"}, + ], + }, + "command_code_range": {"v_range": [["v7.4.2", ""]], "type": "string"}, + }, + "v_range": [["v7.4.2", ""]], +} + + +def main(): + module_spec = schema_to_module_spec(versioned_schema) + mkeyname = "name" + fields = { + "access_token": {"required": False, "type": "str", "no_log": True}, + "enable_log": {"required": False, "type": "bool", "default": False}, + "vdom": {"required": False, "type": "str", "default": "root"}, + "member_path": {"required": False, "type": "str"}, + "member_state": { + "type": "str", + "required": False, + "choices": ["present", "absent"], + }, + "state": {"required": True, "type": "str", "choices": ["present", "absent"]}, + "diameter_filter_profile": { + "required": False, + "type": "dict", + "default": None, + "options": {}, + }, + } + for attribute_name in module_spec["options"]: + fields["diameter_filter_profile"]["options"][attribute_name] = module_spec[ + "options" + ][attribute_name] + if mkeyname and mkeyname == attribute_name: + fields["diameter_filter_profile"]["options"][attribute_name][ + "required" + ] = True + + module = AnsibleModule(argument_spec=fields, supports_check_mode=False) + check_legacy_fortiosapi(module) + + is_error = False + has_changed = False + result = None + diff = None + + versions_check_result = None + if module._socket_path: + connection = Connection(module._socket_path) + if "access_token" in module.params: + connection.set_option("access_token", module.params["access_token"]) + + if "enable_log" in module.params: + connection.set_option("enable_log", module.params["enable_log"]) + else: + connection.set_option("enable_log", False) + fos = FortiOSHandler(connection, module, mkeyname) + versions_check_result = check_schema_versioning( + fos, versioned_schema, "diameter_filter_profile" + ) + + is_error, has_changed, result, diff = fortios_diameter_filter( + module.params, fos + ) + + else: + module.fail_json(**FAIL_SOCKET_MSG) + + if versions_check_result and versions_check_result["matched"] is False: + module.warn( + "Ansible has detected version mismatch between FortOS system and your playbook, see more details by specifying option -vvv" + ) + + if not is_error: + if versions_check_result and versions_check_result["matched"] is False: + module.exit_json( + changed=has_changed, + version_check_warning=versions_check_result, + meta=result, + diff=diff, + ) + else: + module.exit_json(changed=has_changed, meta=result, diff=diff) + else: + if versions_check_result and versions_check_result["matched"] is False: + module.fail_json( + msg="Error in repo", + version_check_warning=versions_check_result, + meta=result, + ) + else: + module.fail_json(msg="Error in repo", meta=result) + + +if __name__ == "__main__": + main() diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_dlp_data_type.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_dlp_data_type.py index 21779c20a..d0d8a34a6 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_dlp_data_type.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_dlp_data_type.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -100,11 +100,19 @@ options: description: - Number of characters required to save for verification (1 - 255). type: int + match_ahead: + description: + - Number of characters behind for match-around (1 - 4096). + type: int match_around: description: - Dictionary to check whether it has a match around (Only support match-any and basic types, no repeat supported). Source dlp.dictionary .name. type: str + match_back: + description: + - Number of characters in front for match-around (1 - 4096). + type: int name: description: - Name of table containing the data type. @@ -129,6 +137,10 @@ options: choices: - 'enable' - 'disable' + verify2: + description: + - Extra regular expression pattern string used to verify the data type. + type: str """ EXAMPLES = """ @@ -141,12 +153,15 @@ EXAMPLES = """ comment: "Optional comments." look_ahead: "1" look_back: "1" + match_ahead: "1" match_around: "<your_own_value> (source dlp.dictionary.name)" - name: "default_name_7" + match_back: "1" + name: "default_name_9" pattern: "<your_own_value>" transform: "<your_own_value>" verify: "<your_own_value>" verify_transformed_pattern: "enable" + verify2: "<your_own_value>" """ RETURN = """ @@ -233,12 +248,15 @@ def filter_dlp_data_type_data(json): "comment", "look_ahead", "look_back", + "match_ahead", "match_around", + "match_back", "name", "pattern", "transform", "verify", "verify_transformed_pattern", + "verify2", ] json = remove_invalid_fields(json) @@ -270,10 +288,11 @@ def dlp_data_type(data, fos): state = data["state"] dlp_data_type_data = data["dlp_data_type"] - filtered_data = underscore_to_hyphen(filter_dlp_data_type_data(dlp_data_type_data)) + filtered_data = filter_dlp_data_type_data(dlp_data_type_data) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: - return fos.set("dlp", "data-type", data=filtered_data, vdom=vdom) + return fos.set("dlp", "data-type", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("dlp", "data-type", mkey=filtered_data["name"], vdom=vdom) @@ -316,9 +335,12 @@ versioned_schema = { "name": {"v_range": [["v7.2.0", ""]], "type": "string", "required": True}, "pattern": {"v_range": [["v7.2.0", ""]], "type": "string"}, "verify": {"v_range": [["v7.2.0", ""]], "type": "string"}, + "verify2": {"v_range": [["v7.4.2", ""]], "type": "string"}, "match_around": {"v_range": [["v7.4.0", ""]], "type": "string"}, "look_back": {"v_range": [["v7.2.0", ""]], "type": "integer"}, "look_ahead": {"v_range": [["v7.2.0", ""]], "type": "integer"}, + "match_back": {"v_range": [["v7.4.2", ""]], "type": "integer"}, + "match_ahead": {"v_range": [["v7.4.2", ""]], "type": "integer"}, "transform": {"v_range": [["v7.2.0", ""]], "type": "string"}, "verify_transformed_pattern": { "v_range": [["v7.2.0", ""]], diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_dlp_dictionary.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_dlp_dictionary.py index aeab4d3a0..ac576cd86 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_dlp_dictionary.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_dlp_dictionary.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -295,12 +295,11 @@ def dlp_dictionary(data, fos): state = data["state"] dlp_dictionary_data = data["dlp_dictionary"] - filtered_data = underscore_to_hyphen( - filter_dlp_dictionary_data(dlp_dictionary_data) - ) + filtered_data = filter_dlp_dictionary_data(dlp_dictionary_data) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: - return fos.set("dlp", "dictionary", data=filtered_data, vdom=vdom) + return fos.set("dlp", "dictionary", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("dlp", "dictionary", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_dlp_exact_data_match.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_dlp_exact_data_match.py new file mode 100644 index 000000000..189dbd6f7 --- /dev/null +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_dlp_exact_data_match.py @@ -0,0 +1,411 @@ +#!/usr/bin/python +from __future__ import absolute_import, division, print_function + +# Copyright: (c) 2022 Fortinet +# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +__metaclass__ = type + +ANSIBLE_METADATA = { + "status": ["preview"], + "supported_by": "community", + "metadata_version": "1.1", +} + +DOCUMENTATION = """ +--- +module: fortios_dlp_exact_data_match +short_description: Configure exact-data-match template used by DLP scan in Fortinet's FortiOS and FortiGate. +description: + - This module is able to configure a FortiGate or FortiOS (FOS) device by allowing the + user to set and modify dlp feature and exact_data_match category. + Examples include all parameters and values need to be adjusted to datasources before usage. + Tested with FOS v6.0.0 +version_added: "2.0.0" +author: + - Link Zheng (@chillancezen) + - Jie Xue (@JieX19) + - Hongbin Lu (@fgtdev-hblu) + - Frank Shen (@frankshen01) + - Miguel Angel Munoz (@mamunozgonzalez) + - Nicolas Thomas (@thomnico) +notes: + - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks + +requirements: + - ansible>=2.15 +options: + access_token: + description: + - Token-based authentication. + Generated from GUI of Fortigate. + type: str + required: false + enable_log: + description: + - Enable/Disable logging for task. + type: bool + required: false + default: false + vdom: + description: + - Virtual domain, among those defined previously. A vdom is a + virtual instance of the FortiGate that can be configured and + used as a different unit. + type: str + default: root + member_path: + type: str + description: + - Member attribute path to operate on. + - Delimited by a slash character if there are more than one attribute. + - Parameter marked with member_path is legitimate for doing member operation. + member_state: + type: str + description: + - Add or delete a member under specified attribute path. + - When member_state is specified, the state option is ignored. + choices: + - 'present' + - 'absent' + + state: + description: + - Indicates whether to create or remove the object. + type: str + required: true + choices: + - 'present' + - 'absent' + dlp_exact_data_match: + description: + - Configure exact-data-match template used by DLP scan. + default: null + type: dict + suboptions: + columns: + description: + - DLP exact-data-match column types. + type: list + elements: dict + suboptions: + index: + description: + - Column index. see <a href='#notes'>Notes</a>. + required: true + type: int + optional: + description: + - Enable/disable optional match. + type: str + choices: + - 'enable' + - 'disable' + type: + description: + - Data-type for this column. Source dlp.data-type.name. + type: str + data: + description: + - External resource for exact data match. Source system.external-resource.name. + type: str + name: + description: + - Name of table containing the exact-data-match template. + required: true + type: str + optional: + description: + - Number of optional columns need to match. + type: int +""" + +EXAMPLES = """ +- name: Configure exact-data-match template used by DLP scan. + fortinet.fortios.fortios_dlp_exact_data_match: + vdom: "{{ vdom }}" + state: "present" + access_token: "<your_own_value>" + dlp_exact_data_match: + columns: + - + index: "<you_own_value>" + optional: "enable" + type: "<your_own_value> (source dlp.data-type.name)" + data: "<your_own_value> (source system.external-resource.name)" + name: "default_name_8" + optional: "0" +""" + +RETURN = """ +build: + description: Build number of the fortigate image + returned: always + type: str + sample: '1547' +http_method: + description: Last method used to provision the content into FortiGate + returned: always + type: str + sample: 'PUT' +http_status: + description: Last result given by FortiGate on last operation applied + returned: always + type: str + sample: "200" +mkey: + description: Master key (id) used in the last call to FortiGate + returned: success + type: str + sample: "id" +name: + description: Name of the table used to fulfill the request + returned: always + type: str + sample: "urlfilter" +path: + description: Path of the table used to fulfill the request + returned: always + type: str + sample: "webfilter" +revision: + description: Internal revision number + returned: always + type: str + sample: "17.0.2.10658" +serial: + description: Serial number of the unit + returned: always + type: str + sample: "FGVMEVYYQT3AB5352" +status: + description: Indication of the operation's result + returned: always + type: str + sample: "success" +vdom: + description: Virtual domain used + returned: always + type: str + sample: "root" +version: + description: Version of the FortiGate + returned: always + type: str + sample: "v5.6.3" +""" +from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.connection import Connection +from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.fortios import ( + FortiOSHandler, +) +from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.fortios import ( + check_legacy_fortiosapi, +) +from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.fortios import ( + schema_to_module_spec, +) +from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.fortios import ( + check_schema_versioning, +) +from ansible_collections.fortinet.fortios.plugins.module_utils.fortimanager.common import ( + FAIL_SOCKET_MSG, +) +from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.data_post_processor import ( + remove_invalid_fields, +) + + +def filter_dlp_exact_data_match_data(json): + option_list = ["columns", "data", "name", "optional"] + + json = remove_invalid_fields(json) + dictionary = {} + + for attribute in option_list: + if attribute in json and json[attribute] is not None: + dictionary[attribute] = json[attribute] + + return dictionary + + +def underscore_to_hyphen(data): + if isinstance(data, list): + for i, elem in enumerate(data): + data[i] = underscore_to_hyphen(elem) + elif isinstance(data, dict): + new_data = {} + for k, v in data.items(): + new_data[k.replace("_", "-")] = underscore_to_hyphen(v) + data = new_data + + return data + + +def dlp_exact_data_match(data, fos): + vdom = data["vdom"] + + state = data["state"] + + dlp_exact_data_match_data = data["dlp_exact_data_match"] + filtered_data = filter_dlp_exact_data_match_data(dlp_exact_data_match_data) + converted_data = underscore_to_hyphen(filtered_data) + + if state == "present" or state is True: + return fos.set("dlp", "exact-data-match", data=converted_data, vdom=vdom) + + elif state == "absent": + return fos.delete( + "dlp", "exact-data-match", mkey=filtered_data["name"], vdom=vdom + ) + else: + fos._module.fail_json(msg="state must be present or absent!") + + +def is_successful_status(resp): + return ( + "status" in resp + and resp["status"] == "success" + or "http_status" in resp + and resp["http_status"] == 200 + or "http_method" in resp + and resp["http_method"] == "DELETE" + and resp["http_status"] == 404 + ) + + +def fortios_dlp(data, fos): + fos.do_member_operation("dlp", "exact-data-match") + if data["dlp_exact_data_match"]: + resp = dlp_exact_data_match(data, fos) + else: + fos._module.fail_json(msg="missing task body: %s" % ("dlp_exact_data_match")) + + return ( + not is_successful_status(resp), + is_successful_status(resp) + and (resp["revision_changed"] if "revision_changed" in resp else True), + resp, + {}, + ) + + +versioned_schema = { + "type": "list", + "elements": "dict", + "children": { + "name": {"v_range": [["v7.4.2", ""]], "type": "string", "required": True}, + "optional": {"v_range": [["v7.4.2", ""]], "type": "integer"}, + "data": {"v_range": [["v7.4.2", ""]], "type": "string"}, + "columns": { + "type": "list", + "elements": "dict", + "children": { + "index": { + "v_range": [["v7.4.2", ""]], + "type": "integer", + "required": True, + }, + "type": {"v_range": [["v7.4.2", ""]], "type": "string"}, + "optional": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + }, + "v_range": [["v7.4.2", ""]], + }, + }, + "v_range": [["v7.4.2", ""]], +} + + +def main(): + module_spec = schema_to_module_spec(versioned_schema) + mkeyname = "name" + fields = { + "access_token": {"required": False, "type": "str", "no_log": True}, + "enable_log": {"required": False, "type": "bool", "default": False}, + "vdom": {"required": False, "type": "str", "default": "root"}, + "member_path": {"required": False, "type": "str"}, + "member_state": { + "type": "str", + "required": False, + "choices": ["present", "absent"], + }, + "state": {"required": True, "type": "str", "choices": ["present", "absent"]}, + "dlp_exact_data_match": { + "required": False, + "type": "dict", + "default": None, + "options": {}, + }, + } + for attribute_name in module_spec["options"]: + fields["dlp_exact_data_match"]["options"][attribute_name] = module_spec[ + "options" + ][attribute_name] + if mkeyname and mkeyname == attribute_name: + fields["dlp_exact_data_match"]["options"][attribute_name]["required"] = True + + module = AnsibleModule(argument_spec=fields, supports_check_mode=False) + check_legacy_fortiosapi(module) + + is_error = False + has_changed = False + result = None + diff = None + + versions_check_result = None + if module._socket_path: + connection = Connection(module._socket_path) + if "access_token" in module.params: + connection.set_option("access_token", module.params["access_token"]) + + if "enable_log" in module.params: + connection.set_option("enable_log", module.params["enable_log"]) + else: + connection.set_option("enable_log", False) + fos = FortiOSHandler(connection, module, mkeyname) + versions_check_result = check_schema_versioning( + fos, versioned_schema, "dlp_exact_data_match" + ) + + is_error, has_changed, result, diff = fortios_dlp(module.params, fos) + + else: + module.fail_json(**FAIL_SOCKET_MSG) + + if versions_check_result and versions_check_result["matched"] is False: + module.warn( + "Ansible has detected version mismatch between FortOS system and your playbook, see more details by specifying option -vvv" + ) + + if not is_error: + if versions_check_result and versions_check_result["matched"] is False: + module.exit_json( + changed=has_changed, + version_check_warning=versions_check_result, + meta=result, + diff=diff, + ) + else: + module.exit_json(changed=has_changed, meta=result, diff=diff) + else: + if versions_check_result and versions_check_result["matched"] is False: + module.fail_json( + msg="Error in repo", + version_check_warning=versions_check_result, + meta=result, + ) + else: + module.fail_json(msg="Error in repo", meta=result) + + +if __name__ == "__main__": + main() diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_dlp_filepattern.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_dlp_filepattern.py index 50b97819b..8fca42f8e 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_dlp_filepattern.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_dlp_filepattern.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -325,9 +325,8 @@ def dlp_filepattern(data, fos, check_mode=False): state = data["state"] dlp_filepattern_data = data["dlp_filepattern"] - filtered_data = underscore_to_hyphen( - filter_dlp_filepattern_data(dlp_filepattern_data) - ) + filtered_data = filter_dlp_filepattern_data(dlp_filepattern_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -391,7 +390,7 @@ def dlp_filepattern(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("dlp", "filepattern", data=filtered_data, vdom=vdom) + return fos.set("dlp", "filepattern", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("dlp", "filepattern", mkey=filtered_data["id"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_dlp_fp_doc_source.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_dlp_fp_doc_source.py index e014de687..1431686a6 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_dlp_fp_doc_source.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_dlp_fp_doc_source.py @@ -39,7 +39,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -361,9 +361,8 @@ def dlp_fp_doc_source(data, fos, check_mode=False): state = data["state"] dlp_fp_doc_source_data = data["dlp_fp_doc_source"] - filtered_data = underscore_to_hyphen( - filter_dlp_fp_doc_source_data(dlp_fp_doc_source_data) - ) + filtered_data = filter_dlp_fp_doc_source_data(dlp_fp_doc_source_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -427,7 +426,7 @@ def dlp_fp_doc_source(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("dlp", "fp-doc-source", data=filtered_data, vdom=vdom) + return fos.set("dlp", "fp-doc-source", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("dlp", "fp-doc-source", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_dlp_fp_sensitivity.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_dlp_fp_sensitivity.py index 36cbf1c92..db83f2c60 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_dlp_fp_sensitivity.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_dlp_fp_sensitivity.py @@ -39,7 +39,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -226,9 +226,8 @@ def dlp_fp_sensitivity(data, fos, check_mode=False): state = data["state"] dlp_fp_sensitivity_data = data["dlp_fp_sensitivity"] - filtered_data = underscore_to_hyphen( - filter_dlp_fp_sensitivity_data(dlp_fp_sensitivity_data) - ) + filtered_data = filter_dlp_fp_sensitivity_data(dlp_fp_sensitivity_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -292,7 +291,7 @@ def dlp_fp_sensitivity(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("dlp", "fp-sensitivity", data=filtered_data, vdom=vdom) + return fos.set("dlp", "fp-sensitivity", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_dlp_profile.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_dlp_profile.py index fb91042ac..04086a066 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_dlp_profile.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_dlp_profile.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -466,9 +466,9 @@ def underscore_to_hyphen(data): def valid_attr_to_invalid_attr(data): - specillist = {"message": "fos_message"} + speciallist = {"message": "fos_message"} - for k, v in specillist.items(): + for k, v in speciallist.items(): if v == data: return k @@ -477,8 +477,11 @@ def valid_attr_to_invalid_attr(data): def valid_attr_to_invalid_attrs(data): if isinstance(data, list): + new_data = [] for elem in data: elem = valid_attr_to_invalid_attrs(elem) + new_data.append(elem) + data = new_data elif isinstance(data, dict): new_data = {} for k, v in data.items(): @@ -495,8 +498,8 @@ def dlp_profile(data, fos): dlp_profile_data = data["dlp_profile"] dlp_profile_data = flatten_multilists_attributes(dlp_profile_data) - filtered_data = underscore_to_hyphen(filter_dlp_profile_data(dlp_profile_data)) - converted_data = valid_attr_to_invalid_attrs(filtered_data) + filtered_data = filter_dlp_profile_data(dlp_profile_data) + converted_data = underscore_to_hyphen(valid_attr_to_invalid_attrs(filtered_data)) if state == "present" or state is True: return fos.set("dlp", "profile", data=converted_data, vdom=vdom) @@ -597,7 +600,10 @@ versioned_schema = { "options": [ {"value": "sensor"}, {"value": "mip"}, - {"value": "fingerprint"}, + { + "value": "fingerprint", + "v_range": [["v7.2.0", "v7.4.1"], ["v7.4.3", ""]], + }, {"value": "encrypted"}, {"value": "none"}, ], @@ -613,9 +619,12 @@ versioned_schema = { "required": True, } }, - "v_range": [["v7.2.0", ""]], + "v_range": [["v7.2.0", "v7.4.1"], ["v7.4.3", ""]], + }, + "match_percentage": { + "v_range": [["v7.2.0", "v7.4.1"], ["v7.4.3", ""]], + "type": "integer", }, - "match_percentage": {"v_range": [["v7.2.0", ""]], "type": "integer"}, "file_type": {"v_range": [["v7.2.0", ""]], "type": "integer"}, "sensor": { "type": "list", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_dlp_sensitivity.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_dlp_sensitivity.py index 1d9807c98..d91ff52c9 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_dlp_sensitivity.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_dlp_sensitivity.py @@ -39,7 +39,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -226,9 +226,8 @@ def dlp_sensitivity(data, fos, check_mode=False): state = data["state"] dlp_sensitivity_data = data["dlp_sensitivity"] - filtered_data = underscore_to_hyphen( - filter_dlp_sensitivity_data(dlp_sensitivity_data) - ) + filtered_data = filter_dlp_sensitivity_data(dlp_sensitivity_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -292,7 +291,7 @@ def dlp_sensitivity(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("dlp", "sensitivity", data=filtered_data, vdom=vdom) + return fos.set("dlp", "sensitivity", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("dlp", "sensitivity", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_dlp_sensor.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_dlp_sensor.py index 541b4b9bb..c2c3e8987 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_dlp_sensor.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_dlp_sensor.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -112,7 +112,7 @@ options: type: int dictionary: description: - - Select a DLP dictionary. Source dlp.dictionary.name. + - Select a DLP dictionary. Source dlp.dictionary.name dlp.exact-data-match.name. type: str id: description: @@ -360,7 +360,7 @@ EXAMPLES = """ entries: - count: "1" - dictionary: "<your_own_value> (source dlp.dictionary.name)" + dictionary: "<your_own_value> (source dlp.dictionary.name dlp.exact-data-match.name)" id: "8" status: "enable" eval: "<your_own_value>" @@ -560,9 +560,9 @@ def underscore_to_hyphen(data): def valid_attr_to_invalid_attr(data): - specillist = {"message": "fos_message"} + speciallist = {"message": "fos_message"} - for k, v in specillist.items(): + for k, v in speciallist.items(): if v == data: return k @@ -571,8 +571,11 @@ def valid_attr_to_invalid_attr(data): def valid_attr_to_invalid_attrs(data): if isinstance(data, list): + new_data = [] for elem in data: elem = valid_attr_to_invalid_attrs(elem) + new_data.append(elem) + data = new_data elif isinstance(data, dict): new_data = {} for k, v in data.items(): @@ -589,8 +592,8 @@ def dlp_sensor(data, fos, check_mode=False): dlp_sensor_data = data["dlp_sensor"] dlp_sensor_data = flatten_multilists_attributes(dlp_sensor_data) - filtered_data = underscore_to_hyphen(filter_dlp_sensor_data(dlp_sensor_data)) - converted_data = valid_attr_to_invalid_attrs(filtered_data) + filtered_data = filter_dlp_sensor_data(dlp_sensor_data) + converted_data = underscore_to_hyphen(valid_attr_to_invalid_attrs(filtered_data)) # check_mode starts from here if check_mode: diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_dlp_settings.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_dlp_settings.py index c4d6419dc..1a741cdb6 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_dlp_settings.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_dlp_settings.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -232,9 +232,10 @@ def underscore_to_hyphen(data): def dlp_settings(data, fos): vdom = data["vdom"] dlp_settings_data = data["dlp_settings"] - filtered_data = underscore_to_hyphen(filter_dlp_settings_data(dlp_settings_data)) + filtered_data = filter_dlp_settings_data(dlp_settings_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("dlp", "settings", data=filtered_data, vdom=vdom) + return fos.set("dlp", "settings", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_dnsfilter_domain_filter.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_dnsfilter_domain_filter.py index 5b2b7895d..9970f74f1 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_dnsfilter_domain_filter.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_dnsfilter_domain_filter.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -282,9 +282,8 @@ def dnsfilter_domain_filter(data, fos, check_mode=False): state = data["state"] dnsfilter_domain_filter_data = data["dnsfilter_domain_filter"] - filtered_data = underscore_to_hyphen( - filter_dnsfilter_domain_filter_data(dnsfilter_domain_filter_data) - ) + filtered_data = filter_dnsfilter_domain_filter_data(dnsfilter_domain_filter_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -348,7 +347,7 @@ def dnsfilter_domain_filter(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("dnsfilter", "domain-filter", data=filtered_data, vdom=vdom) + return fos.set("dnsfilter", "domain-filter", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_dnsfilter_profile.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_dnsfilter_profile.py index 1fe68e823..068cac689 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_dnsfilter_profile.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_dnsfilter_profile.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -497,9 +497,8 @@ def dnsfilter_profile(data, fos, check_mode=False): dnsfilter_profile_data = data["dnsfilter_profile"] dnsfilter_profile_data = flatten_multilists_attributes(dnsfilter_profile_data) - filtered_data = underscore_to_hyphen( - filter_dnsfilter_profile_data(dnsfilter_profile_data) - ) + filtered_data = filter_dnsfilter_profile_data(dnsfilter_profile_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -563,7 +562,7 @@ def dnsfilter_profile(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("dnsfilter", "profile", data=filtered_data, vdom=vdom) + return fos.set("dnsfilter", "profile", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("dnsfilter", "profile", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_dpdk_cpus.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_dpdk_cpus.py index ca3100626..d16d79dbe 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_dpdk_cpus.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_dpdk_cpus.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -101,6 +101,10 @@ options: description: - CPUs enabled to run DPDK VNP engines. type: str + vnpsp_cpus: + description: + - CPUs enabled to run DPDK VNP slow path. + type: str """ EXAMPLES = """ @@ -113,6 +117,7 @@ EXAMPLES = """ rx_cpus: "<your_own_value>" tx_cpus: "<your_own_value>" vnp_cpus: "<your_own_value>" + vnpsp_cpus: "<your_own_value>" """ RETURN = """ @@ -195,7 +200,14 @@ from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.data_post def filter_dpdk_cpus_data(json): - option_list = ["ips_cpus", "isolated_cpus", "rx_cpus", "tx_cpus", "vnp_cpus"] + option_list = [ + "ips_cpus", + "isolated_cpus", + "rx_cpus", + "tx_cpus", + "vnp_cpus", + "vnpsp_cpus", + ] json = remove_invalid_fields(json) dictionary = {} @@ -223,9 +235,10 @@ def underscore_to_hyphen(data): def dpdk_cpus(data, fos): vdom = data["vdom"] dpdk_cpus_data = data["dpdk_cpus"] - filtered_data = underscore_to_hyphen(filter_dpdk_cpus_data(dpdk_cpus_data)) + filtered_data = filter_dpdk_cpus_data(dpdk_cpus_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("dpdk", "cpus", data=filtered_data, vdom=vdom) + return fos.set("dpdk", "cpus", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -268,6 +281,7 @@ versioned_schema = { "v_range": [["v7.0.0", "v7.0.12"], ["v7.2.1", "v7.2.2"], ["v7.4.0", ""]], "type": "string", }, + "vnpsp_cpus": {"v_range": [["v7.4.2", ""]], "type": "string"}, "ips_cpus": { "v_range": [["v7.0.0", "v7.0.12"], ["v7.2.1", "v7.2.2"], ["v7.4.0", ""]], "type": "string", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_dpdk_global.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_dpdk_global.py index 594142a1c..f91b77c1d 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_dpdk_global.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_dpdk_global.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -128,6 +128,10 @@ options: - 'disable' - 'traffic-log-only' - 'enable' + protects: + description: + - Special arguments for device + type: str sleep_on_idle: description: - Enable/disable sleep-on-idle support for all FDH engines. @@ -158,6 +162,7 @@ EXAMPLES = """ mbufpool_percentage: "25" multiqueue: "disable" per_session_accounting: "disable" + protects: "<your_own_value>" sleep_on_idle: "disable" status: "disable" """ @@ -250,6 +255,7 @@ def filter_dpdk_global_data(json): "mbufpool_percentage", "multiqueue", "per_session_accounting", + "protects", "sleep_on_idle", "status", ] @@ -280,9 +286,10 @@ def underscore_to_hyphen(data): def dpdk_global(data, fos): vdom = data["vdom"] dpdk_global_data = data["dpdk_global"] - filtered_data = underscore_to_hyphen(filter_dpdk_global_data(dpdk_global_data)) + filtered_data = filter_dpdk_global_data(dpdk_global_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("dpdk", "global", data=filtered_data, vdom=vdom) + return fos.set("dpdk", "global", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -353,6 +360,7 @@ versioned_schema = { "type": "string", "options": [{"value": "disable"}, {"value": "enable"}], }, + "protects": {"v_range": [["v7.4.2", ""]], "type": "string"}, "per_session_accounting": { "v_range": [["v7.0.0", "v7.0.12"], ["v7.2.1", "v7.2.2"], ["v7.4.0", ""]], "type": "string", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_emailfilter_block_allow_list.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_emailfilter_block_allow_list.py index 7a169c588..c99ddf02e 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_emailfilter_block_allow_list.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_emailfilter_block_allow_list.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -306,12 +306,15 @@ def emailfilter_block_allow_list(data, fos): state = data["state"] emailfilter_block_allow_list_data = data["emailfilter_block_allow_list"] - filtered_data = underscore_to_hyphen( - filter_emailfilter_block_allow_list_data(emailfilter_block_allow_list_data) + filtered_data = filter_emailfilter_block_allow_list_data( + emailfilter_block_allow_list_data ) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: - return fos.set("emailfilter", "block-allow-list", data=filtered_data, vdom=vdom) + return fos.set( + "emailfilter", "block-allow-list", data=converted_data, vdom=vdom + ) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_emailfilter_bwl.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_emailfilter_bwl.py index 7aa111ad8..f400318bd 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_emailfilter_bwl.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_emailfilter_bwl.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -307,9 +307,8 @@ def emailfilter_bwl(data, fos, check_mode=False): state = data["state"] emailfilter_bwl_data = data["emailfilter_bwl"] - filtered_data = underscore_to_hyphen( - filter_emailfilter_bwl_data(emailfilter_bwl_data) - ) + filtered_data = filter_emailfilter_bwl_data(emailfilter_bwl_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -373,7 +372,7 @@ def emailfilter_bwl(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("emailfilter", "bwl", data=filtered_data, vdom=vdom) + return fos.set("emailfilter", "bwl", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("emailfilter", "bwl", mkey=filtered_data["id"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_emailfilter_bword.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_emailfilter_bword.py index c1b5c4118..7bf52c535 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_emailfilter_bword.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_emailfilter_bword.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -308,9 +308,8 @@ def emailfilter_bword(data, fos, check_mode=False): state = data["state"] emailfilter_bword_data = data["emailfilter_bword"] - filtered_data = underscore_to_hyphen( - filter_emailfilter_bword_data(emailfilter_bword_data) - ) + filtered_data = filter_emailfilter_bword_data(emailfilter_bword_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -374,7 +373,7 @@ def emailfilter_bword(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("emailfilter", "bword", data=filtered_data, vdom=vdom) + return fos.set("emailfilter", "bword", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("emailfilter", "bword", mkey=filtered_data["id"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_emailfilter_dnsbl.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_emailfilter_dnsbl.py index fdd7c758e..f22e971d0 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_emailfilter_dnsbl.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_emailfilter_dnsbl.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -272,9 +272,8 @@ def emailfilter_dnsbl(data, fos, check_mode=False): state = data["state"] emailfilter_dnsbl_data = data["emailfilter_dnsbl"] - filtered_data = underscore_to_hyphen( - filter_emailfilter_dnsbl_data(emailfilter_dnsbl_data) - ) + filtered_data = filter_emailfilter_dnsbl_data(emailfilter_dnsbl_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -338,7 +337,7 @@ def emailfilter_dnsbl(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("emailfilter", "dnsbl", data=filtered_data, vdom=vdom) + return fos.set("emailfilter", "dnsbl", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("emailfilter", "dnsbl", mkey=filtered_data["id"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_emailfilter_fortishield.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_emailfilter_fortishield.py index ab639b3b4..849739524 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_emailfilter_fortishield.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_emailfilter_fortishield.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -218,11 +218,10 @@ def underscore_to_hyphen(data): def emailfilter_fortishield(data, fos): vdom = data["vdom"] emailfilter_fortishield_data = data["emailfilter_fortishield"] - filtered_data = underscore_to_hyphen( - filter_emailfilter_fortishield_data(emailfilter_fortishield_data) - ) + filtered_data = filter_emailfilter_fortishield_data(emailfilter_fortishield_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("emailfilter", "fortishield", data=filtered_data, vdom=vdom) + return fos.set("emailfilter", "fortishield", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_emailfilter_iptrust.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_emailfilter_iptrust.py index 9bb676f86..7a1c908cc 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_emailfilter_iptrust.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_emailfilter_iptrust.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -277,9 +277,8 @@ def emailfilter_iptrust(data, fos, check_mode=False): state = data["state"] emailfilter_iptrust_data = data["emailfilter_iptrust"] - filtered_data = underscore_to_hyphen( - filter_emailfilter_iptrust_data(emailfilter_iptrust_data) - ) + filtered_data = filter_emailfilter_iptrust_data(emailfilter_iptrust_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -343,7 +342,7 @@ def emailfilter_iptrust(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("emailfilter", "iptrust", data=filtered_data, vdom=vdom) + return fos.set("emailfilter", "iptrust", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("emailfilter", "iptrust", mkey=filtered_data["id"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_emailfilter_mheader.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_emailfilter_mheader.py index de16b5b78..cad6ff0e7 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_emailfilter_mheader.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_emailfilter_mheader.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -285,9 +285,8 @@ def emailfilter_mheader(data, fos, check_mode=False): state = data["state"] emailfilter_mheader_data = data["emailfilter_mheader"] - filtered_data = underscore_to_hyphen( - filter_emailfilter_mheader_data(emailfilter_mheader_data) - ) + filtered_data = filter_emailfilter_mheader_data(emailfilter_mheader_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -351,7 +350,7 @@ def emailfilter_mheader(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("emailfilter", "mheader", data=filtered_data, vdom=vdom) + return fos.set("emailfilter", "mheader", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("emailfilter", "mheader", mkey=filtered_data["id"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_emailfilter_options.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_emailfilter_options.py index 4379b81c5..91ccb872f 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_emailfilter_options.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_emailfilter_options.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -202,11 +202,10 @@ def underscore_to_hyphen(data): def emailfilter_options(data, fos): vdom = data["vdom"] emailfilter_options_data = data["emailfilter_options"] - filtered_data = underscore_to_hyphen( - filter_emailfilter_options_data(emailfilter_options_data) - ) + filtered_data = filter_emailfilter_options_data(emailfilter_options_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("emailfilter", "options", data=filtered_data, vdom=vdom) + return fos.set("emailfilter", "options", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_emailfilter_profile.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_emailfilter_profile.py index 616ab6247..d9772cabb 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_emailfilter_profile.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_emailfilter_profile.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -740,9 +740,8 @@ def emailfilter_profile(data, fos, check_mode=False): emailfilter_profile_data = data["emailfilter_profile"] emailfilter_profile_data = flatten_multilists_attributes(emailfilter_profile_data) - filtered_data = underscore_to_hyphen( - filter_emailfilter_profile_data(emailfilter_profile_data) - ) + filtered_data = filter_emailfilter_profile_data(emailfilter_profile_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -806,7 +805,7 @@ def emailfilter_profile(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("emailfilter", "profile", data=filtered_data, vdom=vdom) + return fos.set("emailfilter", "profile", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_endpoint_control_client.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_endpoint_control_client.py index 1f654b73b..0e5930c87 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_endpoint_control_client.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_endpoint_control_client.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -252,9 +252,8 @@ def endpoint_control_client(data, fos, check_mode=False): state = data["state"] endpoint_control_client_data = data["endpoint_control_client"] - filtered_data = underscore_to_hyphen( - filter_endpoint_control_client_data(endpoint_control_client_data) - ) + filtered_data = filter_endpoint_control_client_data(endpoint_control_client_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -318,7 +317,7 @@ def endpoint_control_client(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("endpoint-control", "client", data=filtered_data, vdom=vdom) + return fos.set("endpoint-control", "client", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_endpoint_control_fctems.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_endpoint_control_fctems.py index fb345fec1..3ce0a8236 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_endpoint_control_fctems.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_endpoint_control_fctems.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -214,6 +214,13 @@ options: choices: - 'enable' - 'disable' + send_tags_to_all_vdoms: + description: + - Relax restrictions on tags to send all EMS tags to all VDOMs + type: str + choices: + - 'enable' + - 'disable' serial_number: description: - EMS Serial Number. @@ -248,13 +255,17 @@ options: choices: - 'enable' - 'disable' + verifying_ca: + description: + - Lowest CA cert on Fortigate in verified EMS cert chain. Source certificate.ca.name vpn.certificate.ca.name. + type: str websocket_override: description: - Enable/disable override behavior for how this FortiGate unit connects to EMS using a WebSocket connection. type: str choices: - - 'disable' - 'enable' + - 'disable' """ EXAMPLES = """ @@ -284,6 +295,7 @@ EXAMPLES = """ pull_sysinfo: "enable" pull_tags: "enable" pull_vulnerabilities: "enable" + send_tags_to_all_vdoms: "enable" serial_number: "<your_own_value>" server: "192.168.100.40" source_ip: "84.230.14.43" @@ -291,7 +303,8 @@ EXAMPLES = """ status_check_interval: "90" tenant_id: "<your_own_value>" trust_ca_cn: "enable" - websocket_override: "disable" + verifying_ca: "<your_own_value> (source certificate.ca.name vpn.certificate.ca.name)" + websocket_override: "enable" """ RETURN = """ @@ -404,6 +417,7 @@ def filter_endpoint_control_fctems_data(json): "pull_sysinfo", "pull_tags", "pull_vulnerabilities", + "send_tags_to_all_vdoms", "serial_number", "server", "source_ip", @@ -411,6 +425,7 @@ def filter_endpoint_control_fctems_data(json): "status_check_interval", "tenant_id", "trust_ca_cn", + "verifying_ca", "websocket_override", ] @@ -475,9 +490,8 @@ def endpoint_control_fctems(data, fos, check_mode=False): endpoint_control_fctems_data = flatten_multilists_attributes( endpoint_control_fctems_data ) - filtered_data = underscore_to_hyphen( - filter_endpoint_control_fctems_data(endpoint_control_fctems_data) - ) + filtered_data = filter_endpoint_control_fctems_data(endpoint_control_fctems_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -541,7 +555,7 @@ def endpoint_control_fctems(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("endpoint-control", "fctems", data=filtered_data, vdom=vdom) + return fos.set("endpoint-control", "fctems", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( @@ -657,10 +671,15 @@ versioned_schema = { }, "call_timeout": {"v_range": [["v6.2.0", ""]], "type": "integer"}, "out_of_sync_threshold": {"v_range": [["v7.0.8", ""]], "type": "integer"}, + "send_tags_to_all_vdoms": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "websocket_override": { "v_range": [["v7.0.0", ""]], "type": "string", - "options": [{"value": "disable"}, {"value": "enable"}], + "options": [{"value": "enable"}, {"value": "disable"}], }, "preserve_ssl_session": { "v_range": [["v7.0.1", ""]], @@ -681,6 +700,7 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "verifying_ca": {"v_range": [["v7.4.2", ""]], "type": "string"}, "cloud_server_type": { "v_range": [["v6.4.0", "v7.4.0"]], "type": "string", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_endpoint_control_fctems_override.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_endpoint_control_fctems_override.py index b883fa09e..e5c7c874b 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_endpoint_control_fctems_override.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_endpoint_control_fctems_override.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -202,6 +202,13 @@ options: choices: - 'enable' - 'disable' + send_tags_to_all_vdoms: + description: + - Relax restrictions on tags to send all EMS tags to all VDOMs + type: str + choices: + - 'enable' + - 'disable' serial_number: description: - EMS Serial Number. @@ -232,13 +239,17 @@ options: choices: - 'enable' - 'disable' + verifying_ca: + description: + - Lowest CA cert on Fortigate in verified EMS cert chain. Source certificate.ca.name vpn.certificate.ca.name. + type: str websocket_override: description: - Enable/disable override behavior for how this FortiGate unit connects to EMS using a WebSocket connection. type: str choices: - - 'disable' - 'enable' + - 'disable' """ EXAMPLES = """ @@ -265,13 +276,15 @@ EXAMPLES = """ pull_sysinfo: "enable" pull_tags: "enable" pull_vulnerabilities: "enable" + send_tags_to_all_vdoms: "enable" serial_number: "<your_own_value>" server: "192.168.100.40" source_ip: "84.230.14.43" status: "enable" tenant_id: "<your_own_value>" trust_ca_cn: "enable" - websocket_override: "disable" + verifying_ca: "<your_own_value> (source certificate.ca.name vpn.certificate.ca.name)" + websocket_override: "enable" """ RETURN = """ @@ -372,12 +385,14 @@ def filter_endpoint_control_fctems_override_data(json): "pull_sysinfo", "pull_tags", "pull_vulnerabilities", + "send_tags_to_all_vdoms", "serial_number", "server", "source_ip", "status", "tenant_id", "trust_ca_cn", + "verifying_ca", "websocket_override", ] @@ -442,15 +457,14 @@ def endpoint_control_fctems_override(data, fos): endpoint_control_fctems_override_data = flatten_multilists_attributes( endpoint_control_fctems_override_data ) - filtered_data = underscore_to_hyphen( - filter_endpoint_control_fctems_override_data( - endpoint_control_fctems_override_data - ) + filtered_data = filter_endpoint_control_fctems_override_data( + endpoint_control_fctems_override_data ) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: return fos.set( - "endpoint-control", "fctems-override", data=filtered_data, vdom=vdom + "endpoint-control", "fctems-override", data=converted_data, vdom=vdom ) elif state == "absent": @@ -564,10 +578,15 @@ versioned_schema = { }, "call_timeout": {"v_range": [["v7.4.0", ""]], "type": "integer"}, "out_of_sync_threshold": {"v_range": [["v7.4.0", ""]], "type": "integer"}, + "send_tags_to_all_vdoms": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "websocket_override": { "v_range": [["v7.4.0", ""]], "type": "string", - "options": [{"value": "disable"}, {"value": "enable"}], + "options": [{"value": "enable"}, {"value": "disable"}], }, "preserve_ssl_session": { "v_range": [["v7.4.0", ""]], @@ -585,6 +604,7 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "verifying_ca": {"v_range": [["v7.4.2", ""]], "type": "string"}, "cloud_server_type": { "v_range": [["v7.4.0", "v7.4.0"]], "type": "string", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_endpoint_control_forticlient_ems.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_endpoint_control_forticlient_ems.py index 18971307c..c397b24eb 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_endpoint_control_forticlient_ems.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_endpoint_control_forticlient_ems.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -287,11 +287,10 @@ def endpoint_control_forticlient_ems(data, fos, check_mode=False): state = data["state"] endpoint_control_forticlient_ems_data = data["endpoint_control_forticlient_ems"] - filtered_data = underscore_to_hyphen( - filter_endpoint_control_forticlient_ems_data( - endpoint_control_forticlient_ems_data - ) + filtered_data = filter_endpoint_control_forticlient_ems_data( + endpoint_control_forticlient_ems_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -360,7 +359,7 @@ def endpoint_control_forticlient_ems(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "endpoint-control", "forticlient-ems", data=filtered_data, vdom=vdom + "endpoint-control", "forticlient-ems", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_endpoint_control_forticlient_registration_sync.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_endpoint_control_forticlient_registration_sync.py index 3882b9b49..c6bb27e3a 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_endpoint_control_forticlient_registration_sync.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_endpoint_control_forticlient_registration_sync.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -232,11 +232,10 @@ def endpoint_control_forticlient_registration_sync(data, fos, check_mode=False): endpoint_control_forticlient_registration_sync_data = data[ "endpoint_control_forticlient_registration_sync" ] - filtered_data = underscore_to_hyphen( - filter_endpoint_control_forticlient_registration_sync_data( - endpoint_control_forticlient_registration_sync_data - ) + filtered_data = filter_endpoint_control_forticlient_registration_sync_data( + endpoint_control_forticlient_registration_sync_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -310,7 +309,7 @@ def endpoint_control_forticlient_registration_sync(data, fos, check_mode=False): return fos.set( "endpoint-control", "forticlient-registration-sync", - data=filtered_data, + data=converted_data, vdom=vdom, ) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_endpoint_control_profile.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_endpoint_control_profile.py index efc02ab82..7b357b4f0 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_endpoint_control_profile.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_endpoint_control_profile.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -918,9 +918,8 @@ def endpoint_control_profile(data, fos, check_mode=False): state = data["state"] endpoint_control_profile_data = data["endpoint_control_profile"] - filtered_data = underscore_to_hyphen( - filter_endpoint_control_profile_data(endpoint_control_profile_data) - ) + filtered_data = filter_endpoint_control_profile_data(endpoint_control_profile_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -984,7 +983,7 @@ def endpoint_control_profile(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("endpoint-control", "profile", data=filtered_data, vdom=vdom) + return fos.set("endpoint-control", "profile", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_endpoint_control_registered_forticlient.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_endpoint_control_registered_forticlient.py index e265b7bef..9807482bb 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_endpoint_control_registered_forticlient.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_endpoint_control_registered_forticlient.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -257,11 +257,10 @@ def endpoint_control_registered_forticlient(data, fos, check_mode=False): endpoint_control_registered_forticlient_data = data[ "endpoint_control_registered_forticlient" ] - filtered_data = underscore_to_hyphen( - filter_endpoint_control_registered_forticlient_data( - endpoint_control_registered_forticlient_data - ) + filtered_data = filter_endpoint_control_registered_forticlient_data( + endpoint_control_registered_forticlient_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -330,7 +329,7 @@ def endpoint_control_registered_forticlient(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "endpoint-control", "registered-forticlient", data=filtered_data, vdom=vdom + "endpoint-control", "registered-forticlient", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_endpoint_control_settings.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_endpoint_control_settings.py index 8c046bf51..eb8553c6a 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_endpoint_control_settings.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_endpoint_control_settings.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -315,11 +315,12 @@ def underscore_to_hyphen(data): def endpoint_control_settings(data, fos): vdom = data["vdom"] endpoint_control_settings_data = data["endpoint_control_settings"] - filtered_data = underscore_to_hyphen( - filter_endpoint_control_settings_data(endpoint_control_settings_data) + filtered_data = filter_endpoint_control_settings_data( + endpoint_control_settings_data ) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("endpoint-control", "settings", data=filtered_data, vdom=vdom) + return fos.set("endpoint-control", "settings", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_export_config_playbook.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_export_config_playbook.py index 7d17c9199..382ca0f2f 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_export_config_playbook.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_export_config_playbook.py @@ -418,6 +418,7 @@ options: - 'vpn.certificate_crl' - 'vpn.certificate_ocsp-server' - 'vpn.certificate_setting' + - 'vpn_qkd' - 'vpn.ssl.web_realm' - 'vpn.ssl.web_host-check-software' - 'vpn.ssl.web_portal' @@ -425,16 +426,16 @@ options: - 'vpn.ssl.web_user-bookmark' - 'vpn.ssl_settings' - 'vpn.ssl_client' - - 'vpn_kmip-server' + - 'vpn.ipsec_fec' - 'vpn.ipsec_phase1' - 'vpn.ipsec_phase2' - 'vpn.ipsec_manualkey' - 'vpn.ipsec_concentrator' - - 'vpn.ipsec_fec' - 'vpn.ipsec_phase1-interface' - 'vpn.ipsec_phase2-interface' - 'vpn.ipsec_manualkey-interface' - 'vpn.ipsec_forticlient' + - 'vpn_kmip-server' - 'vpn_pptp' - 'vpn_l2tp' - 'certificate_ca' @@ -458,6 +459,7 @@ options: - 'ips_global' - 'ips_settings' - 'sctp-filter_profile' + - 'diameter-filter_profile' - 'web-proxy_profile' - 'web-proxy_global' - 'web-proxy_explicit' @@ -481,6 +483,7 @@ options: - 'application_group' - 'dlp_data-type' - 'dlp_dictionary' + - 'dlp_exact-data-match' - 'dlp_sensor' - 'dlp_filepattern' - 'dlp_sensitivity' @@ -488,7 +491,7 @@ options: - 'dlp_profile' - 'dlp_settings' - 'videofilter_youtube-key' - - 'videofilter_youtube-channel-filter' + - 'videofilter_keyword' - 'videofilter_profile' - 'emailfilter_bword' - 'emailfilter_block-allow-list' @@ -557,6 +560,8 @@ options: - 'icap_server' - 'icap_server-group' - 'icap_profile' + - 'user_peer' + - 'user_peergrp' - 'user_certificate' - 'user_radius' - 'user_tacacs+' @@ -566,6 +571,7 @@ options: - 'user_domain-controller' - 'user_pop3' - 'user_saml' + - 'user_external-identity-provider' - 'user_fsso' - 'user_adgrp' - 'user_fsso-polling' @@ -573,8 +579,6 @@ options: - 'user_password-policy' - 'user_local' - 'user_setting' - - 'user_peer' - - 'user_peergrp' - 'user_quarantine' - 'user_group' - 'user_security-exempt-list' @@ -644,22 +648,14 @@ options: - 'system_isf-queue-profile' - 'system_npu' - 'system_np6' + - 'system_gi-gk' - 'system_modem' - 'system.3g-modem_custom' - 'system_lte-modem' - - 'firewall_acl' - - 'firewall_acl6' - - 'monitoring_np6-ipsec-engine' - - 'monitoring_npu-hpe' - - 'switch-controller.ptp_settings' - - 'switch-controller.ptp_policy' - - 'system_physical-switch' - - 'system_virtual-switch' - - 'system_stp' - - 'system_gi-gk' - 'firewall_gtp' - 'firewall_pfcp' - - 'vpn_ocvpn' + - 'firewall_acl' + - 'firewall_acl6' - 'gtp_apn' - 'gtp_apngrp' - 'gtp_message-filter-v0v1' @@ -669,6 +665,17 @@ options: - 'gtp_tunnel-limit' - 'gtp_apn-shaper' - 'pfcp_message-filter' + - 'monitoring_np6-ipsec-engine' + - 'monitoring_npu-hpe' + - 'system_npu-vlink' + - 'system_physical-switch' + - 'system_virtual-switch' + - 'system_stp' + - 'system_smc-ntp' + - 'videofilter_youtube-channel-filter' + - 'switch-controller.ptp_settings' + - 'switch-controller.ptp_policy' + - 'vpn_ocvpn' - 'system.replacemsg_mail' - 'system.replacemsg_http' - 'system.replacemsg_webproxy' @@ -833,7 +840,6 @@ options: - 'firewall_policy6' - 'antivirus_notification' - 'antivirus_mms-checksum' - - 'system_smc-ntp' - 'switch-controller_vlan' - 'switch-controller.security-policy_captive-portal' - 'user_device' @@ -1149,6 +1155,7 @@ options: - 'vpn.certificate_crl' - 'vpn.certificate_ocsp-server' - 'vpn.certificate_setting' + - 'vpn_qkd' - 'vpn.ssl.web_realm' - 'vpn.ssl.web_host-check-software' - 'vpn.ssl.web_portal' @@ -1156,16 +1163,16 @@ options: - 'vpn.ssl.web_user-bookmark' - 'vpn.ssl_settings' - 'vpn.ssl_client' - - 'vpn_kmip-server' + - 'vpn.ipsec_fec' - 'vpn.ipsec_phase1' - 'vpn.ipsec_phase2' - 'vpn.ipsec_manualkey' - 'vpn.ipsec_concentrator' - - 'vpn.ipsec_fec' - 'vpn.ipsec_phase1-interface' - 'vpn.ipsec_phase2-interface' - 'vpn.ipsec_manualkey-interface' - 'vpn.ipsec_forticlient' + - 'vpn_kmip-server' - 'vpn_pptp' - 'vpn_l2tp' - 'certificate_ca' @@ -1189,6 +1196,7 @@ options: - 'ips_global' - 'ips_settings' - 'sctp-filter_profile' + - 'diameter-filter_profile' - 'web-proxy_profile' - 'web-proxy_global' - 'web-proxy_explicit' @@ -1212,6 +1220,7 @@ options: - 'application_group' - 'dlp_data-type' - 'dlp_dictionary' + - 'dlp_exact-data-match' - 'dlp_sensor' - 'dlp_filepattern' - 'dlp_sensitivity' @@ -1219,7 +1228,7 @@ options: - 'dlp_profile' - 'dlp_settings' - 'videofilter_youtube-key' - - 'videofilter_youtube-channel-filter' + - 'videofilter_keyword' - 'videofilter_profile' - 'emailfilter_bword' - 'emailfilter_block-allow-list' @@ -1288,6 +1297,8 @@ options: - 'icap_server' - 'icap_server-group' - 'icap_profile' + - 'user_peer' + - 'user_peergrp' - 'user_certificate' - 'user_radius' - 'user_tacacs+' @@ -1297,6 +1308,7 @@ options: - 'user_domain-controller' - 'user_pop3' - 'user_saml' + - 'user_external-identity-provider' - 'user_fsso' - 'user_adgrp' - 'user_fsso-polling' @@ -1304,8 +1316,6 @@ options: - 'user_password-policy' - 'user_local' - 'user_setting' - - 'user_peer' - - 'user_peergrp' - 'user_quarantine' - 'user_group' - 'user_security-exempt-list' @@ -1375,22 +1385,14 @@ options: - 'system_isf-queue-profile' - 'system_npu' - 'system_np6' + - 'system_gi-gk' - 'system_modem' - 'system.3g-modem_custom' - 'system_lte-modem' - - 'firewall_acl' - - 'firewall_acl6' - - 'monitoring_np6-ipsec-engine' - - 'monitoring_npu-hpe' - - 'switch-controller.ptp_settings' - - 'switch-controller.ptp_policy' - - 'system_physical-switch' - - 'system_virtual-switch' - - 'system_stp' - - 'system_gi-gk' - 'firewall_gtp' - 'firewall_pfcp' - - 'vpn_ocvpn' + - 'firewall_acl' + - 'firewall_acl6' - 'gtp_apn' - 'gtp_apngrp' - 'gtp_message-filter-v0v1' @@ -1400,6 +1402,17 @@ options: - 'gtp_tunnel-limit' - 'gtp_apn-shaper' - 'pfcp_message-filter' + - 'monitoring_np6-ipsec-engine' + - 'monitoring_npu-hpe' + - 'system_npu-vlink' + - 'system_physical-switch' + - 'system_virtual-switch' + - 'system_stp' + - 'system_smc-ntp' + - 'videofilter_youtube-channel-filter' + - 'switch-controller.ptp_settings' + - 'switch-controller.ptp_policy' + - 'vpn_ocvpn' - 'system.replacemsg_mail' - 'system.replacemsg_http' - 'system.replacemsg_webproxy' @@ -1564,7 +1577,6 @@ options: - 'firewall_policy6' - 'antivirus_notification' - 'antivirus_mms-checksum' - - 'system_smc-ntp' - 'switch-controller_vlan' - 'switch-controller.security-policy_captive-portal' - 'user_device' @@ -2818,6 +2830,10 @@ MODULE_MKEY_DEFINITONS = { "mkey": "None", "mkey_type": None, }, + "vpn_qkd": { + "mkey": "name", + "mkey_type": str, + }, "vpn.ssl.web_realm": { "mkey": "url_path", "mkey_type": str, @@ -2846,7 +2862,7 @@ MODULE_MKEY_DEFINITONS = { "mkey": "name", "mkey_type": str, }, - "vpn_kmip-server": { + "vpn.ipsec_fec": { "mkey": "name", "mkey_type": str, }, @@ -2866,10 +2882,6 @@ MODULE_MKEY_DEFINITONS = { "mkey": "id", "mkey_type": int, }, - "vpn.ipsec_fec": { - "mkey": "name", - "mkey_type": str, - }, "vpn.ipsec_phase1-interface": { "mkey": "name", "mkey_type": str, @@ -2886,6 +2898,10 @@ MODULE_MKEY_DEFINITONS = { "mkey": "realm", "mkey_type": str, }, + "vpn_kmip-server": { + "mkey": "name", + "mkey_type": str, + }, "vpn_pptp": { "mkey": "None", "mkey_type": None, @@ -2978,6 +2994,10 @@ MODULE_MKEY_DEFINITONS = { "mkey": "name", "mkey_type": str, }, + "diameter-filter_profile": { + "mkey": "name", + "mkey_type": str, + }, "web-proxy_profile": { "mkey": "name", "mkey_type": str, @@ -3070,6 +3090,10 @@ MODULE_MKEY_DEFINITONS = { "mkey": "name", "mkey_type": str, }, + "dlp_exact-data-match": { + "mkey": "name", + "mkey_type": str, + }, "dlp_sensor": { "mkey": "name", "mkey_type": str, @@ -3098,7 +3122,7 @@ MODULE_MKEY_DEFINITONS = { "mkey": "id", "mkey_type": int, }, - "videofilter_youtube-channel-filter": { + "videofilter_keyword": { "mkey": "id", "mkey_type": int, }, @@ -3374,6 +3398,14 @@ MODULE_MKEY_DEFINITONS = { "mkey": "name", "mkey_type": str, }, + "user_peer": { + "mkey": "name", + "mkey_type": str, + }, + "user_peergrp": { + "mkey": "name", + "mkey_type": str, + }, "user_certificate": { "mkey": "name", "mkey_type": str, @@ -3410,6 +3442,10 @@ MODULE_MKEY_DEFINITONS = { "mkey": "name", "mkey_type": str, }, + "user_external-identity-provider": { + "mkey": "name", + "mkey_type": str, + }, "user_fsso": { "mkey": "name", "mkey_type": str, @@ -3438,14 +3474,6 @@ MODULE_MKEY_DEFINITONS = { "mkey": "None", "mkey_type": None, }, - "user_peer": { - "mkey": "name", - "mkey_type": str, - }, - "user_peergrp": { - "mkey": "name", - "mkey_type": str, - }, "user_quarantine": { "mkey": "None", "mkey_type": None, @@ -3722,6 +3750,10 @@ MODULE_MKEY_DEFINITONS = { "mkey": "name", "mkey_type": str, }, + "system_gi-gk": { + "mkey": "None", + "mkey_type": None, + }, "system_modem": { "mkey": "None", "mkey_type": None, @@ -3734,6 +3766,14 @@ MODULE_MKEY_DEFINITONS = { "mkey": "None", "mkey_type": None, }, + "firewall_gtp": { + "mkey": "name", + "mkey_type": str, + }, + "firewall_pfcp": { + "mkey": "name", + "mkey_type": str, + }, "firewall_acl": { "mkey": "policyid", "mkey_type": int, @@ -3742,86 +3782,86 @@ MODULE_MKEY_DEFINITONS = { "mkey": "policyid", "mkey_type": int, }, - "monitoring_np6-ipsec-engine": { - "mkey": "None", - "mkey_type": None, - }, - "monitoring_npu-hpe": { - "mkey": "None", - "mkey_type": None, - }, - "switch-controller.ptp_settings": { - "mkey": "None", - "mkey_type": None, - }, - "switch-controller.ptp_policy": { + "gtp_apn": { "mkey": "name", "mkey_type": str, }, - "system_physical-switch": { + "gtp_apngrp": { "mkey": "name", "mkey_type": str, }, - "system_virtual-switch": { + "gtp_message-filter-v0v1": { "mkey": "name", "mkey_type": str, }, - "system_stp": { - "mkey": "None", - "mkey_type": None, - }, - "system_gi-gk": { - "mkey": "None", - "mkey_type": None, - }, - "firewall_gtp": { + "gtp_message-filter-v2": { "mkey": "name", "mkey_type": str, }, - "firewall_pfcp": { + "gtp_rat-timeout-profile": { "mkey": "name", "mkey_type": str, }, - "vpn_ocvpn": { - "mkey": "None", - "mkey_type": None, - }, - "gtp_apn": { + "gtp_ie-allow-list": { "mkey": "name", "mkey_type": str, }, - "gtp_apngrp": { + "gtp_tunnel-limit": { "mkey": "name", "mkey_type": str, }, - "gtp_message-filter-v0v1": { - "mkey": "name", - "mkey_type": str, + "gtp_apn-shaper": { + "mkey": "id", + "mkey_type": int, }, - "gtp_message-filter-v2": { + "pfcp_message-filter": { "mkey": "name", "mkey_type": str, }, - "gtp_rat-timeout-profile": { + "monitoring_np6-ipsec-engine": { + "mkey": "None", + "mkey_type": None, + }, + "monitoring_npu-hpe": { + "mkey": "None", + "mkey_type": None, + }, + "system_npu-vlink": { "mkey": "name", "mkey_type": str, }, - "gtp_ie-allow-list": { + "system_physical-switch": { "mkey": "name", "mkey_type": str, }, - "gtp_tunnel-limit": { + "system_virtual-switch": { "mkey": "name", "mkey_type": str, }, - "gtp_apn-shaper": { + "system_stp": { + "mkey": "None", + "mkey_type": None, + }, + "system_smc-ntp": { + "mkey": "None", + "mkey_type": None, + }, + "videofilter_youtube-channel-filter": { "mkey": "id", "mkey_type": int, }, - "pfcp_message-filter": { + "switch-controller.ptp_settings": { + "mkey": "None", + "mkey_type": None, + }, + "switch-controller.ptp_policy": { "mkey": "name", "mkey_type": str, }, + "vpn_ocvpn": { + "mkey": "None", + "mkey_type": None, + }, "system.replacemsg_mail": { "mkey": "msg_type", "mkey_type": str, @@ -4478,10 +4518,6 @@ MODULE_MKEY_DEFINITONS = { "mkey": "id", "mkey_type": int, }, - "system_smc-ntp": { - "mkey": "None", - "mkey_type": None, - }, "switch-controller_vlan": { "mkey": "name", "mkey_type": str, @@ -4618,6 +4654,7 @@ SPECIAL_ATTRIBUTE_TABLE = { ["pingserver_monitor_interface"], ["vcluster", "monitor"], ["vcluster", "pingserver_monitor_interface"], + ["ipsec_phase2_proposal"], ["secondary_vcluster", "monitor"], ["secondary_vcluster", "pingserver_monitor_interface"], ], @@ -4914,14 +4951,14 @@ SPECIAL_ATTRIBUTE_TABLE = { ["neighbor", "attribute_unchanged"], ["neighbor", "attribute_unchanged6"], ["neighbor", "attribute_unchanged_vpnv4"], + ["neighbor", "attribute_unchanged_vpnv6"], ["neighbor_group", "attribute_unchanged"], ["neighbor_group", "attribute_unchanged6"], ["neighbor_group", "attribute_unchanged_vpnv4"], + ["neighbor_group", "attribute_unchanged_vpnv6"], ], "router_isis": [["overload_bit_suppress"]], "system_modem": [["authtype1"], ["authtype2"], ["authtype3"]], - "monitoring_np6_ipsec_engine": [["threshold"]], - "monitoring_npu_hpe": [["multipliers"]], "firewall_gtp": [ ["apn", "selection_mode"], ["imsi", "selection_mode"], @@ -4934,6 +4971,8 @@ SPECIAL_ATTRIBUTE_TABLE = { ["policy_v2", "uli"], ["ie_remove_policy", "remove_ies"], ], + "monitoring_np6_ipsec_engine": [["threshold"]], + "monitoring_npu_hpe": [["multipliers"]], "ips_rule": [["location"]], "extender_controller_extender_profile": [ ["allowaccess"], @@ -5025,8 +5064,8 @@ PLAYBOOK_BASIC_CONFIG = [ "gather_facts": "no", "vars": { "vdom": "root", - "ansible_httpapi_use_ssl": "yes", - "ansible_httpapi_validate_certs": "no", + "ansible_httpapi_use_ssl": "true", + "ansible_httpapi_validate_certs": "false", "ansible_httpapi_port": 443, }, } @@ -5468,6 +5507,7 @@ def main(): "vpn.certificate_crl", "vpn.certificate_ocsp-server", "vpn.certificate_setting", + "vpn_qkd", "vpn.ssl.web_realm", "vpn.ssl.web_host-check-software", "vpn.ssl.web_portal", @@ -5475,16 +5515,16 @@ def main(): "vpn.ssl.web_user-bookmark", "vpn.ssl_settings", "vpn.ssl_client", - "vpn_kmip-server", + "vpn.ipsec_fec", "vpn.ipsec_phase1", "vpn.ipsec_phase2", "vpn.ipsec_manualkey", "vpn.ipsec_concentrator", - "vpn.ipsec_fec", "vpn.ipsec_phase1-interface", "vpn.ipsec_phase2-interface", "vpn.ipsec_manualkey-interface", "vpn.ipsec_forticlient", + "vpn_kmip-server", "vpn_pptp", "vpn_l2tp", "certificate_ca", @@ -5508,6 +5548,7 @@ def main(): "ips_global", "ips_settings", "sctp-filter_profile", + "diameter-filter_profile", "web-proxy_profile", "web-proxy_global", "web-proxy_explicit", @@ -5531,6 +5572,7 @@ def main(): "application_group", "dlp_data-type", "dlp_dictionary", + "dlp_exact-data-match", "dlp_sensor", "dlp_filepattern", "dlp_sensitivity", @@ -5538,7 +5580,7 @@ def main(): "dlp_profile", "dlp_settings", "videofilter_youtube-key", - "videofilter_youtube-channel-filter", + "videofilter_keyword", "videofilter_profile", "emailfilter_bword", "emailfilter_block-allow-list", @@ -5607,6 +5649,8 @@ def main(): "icap_server", "icap_server-group", "icap_profile", + "user_peer", + "user_peergrp", "user_certificate", "user_radius", "user_tacacs+", @@ -5616,6 +5660,7 @@ def main(): "user_domain-controller", "user_pop3", "user_saml", + "user_external-identity-provider", "user_fsso", "user_adgrp", "user_fsso-polling", @@ -5623,8 +5668,6 @@ def main(): "user_password-policy", "user_local", "user_setting", - "user_peer", - "user_peergrp", "user_quarantine", "user_group", "user_security-exempt-list", @@ -5694,22 +5737,14 @@ def main(): "system_isf-queue-profile", "system_npu", "system_np6", + "system_gi-gk", "system_modem", "system.3g-modem_custom", "system_lte-modem", - "firewall_acl", - "firewall_acl6", - "monitoring_np6-ipsec-engine", - "monitoring_npu-hpe", - "switch-controller.ptp_settings", - "switch-controller.ptp_policy", - "system_physical-switch", - "system_virtual-switch", - "system_stp", - "system_gi-gk", "firewall_gtp", "firewall_pfcp", - "vpn_ocvpn", + "firewall_acl", + "firewall_acl6", "gtp_apn", "gtp_apngrp", "gtp_message-filter-v0v1", @@ -5719,6 +5754,17 @@ def main(): "gtp_tunnel-limit", "gtp_apn-shaper", "pfcp_message-filter", + "monitoring_np6-ipsec-engine", + "monitoring_npu-hpe", + "system_npu-vlink", + "system_physical-switch", + "system_virtual-switch", + "system_stp", + "system_smc-ntp", + "videofilter_youtube-channel-filter", + "switch-controller.ptp_settings", + "switch-controller.ptp_policy", + "vpn_ocvpn", "system.replacemsg_mail", "system.replacemsg_http", "system.replacemsg_webproxy", @@ -5883,7 +5929,6 @@ def main(): "firewall_policy6", "antivirus_notification", "antivirus_mms-checksum", - "system_smc-ntp", "switch-controller_vlan", "switch-controller.security-policy_captive-portal", "user_device", @@ -6207,6 +6252,7 @@ def main(): "vpn.certificate_crl", "vpn.certificate_ocsp-server", "vpn.certificate_setting", + "vpn_qkd", "vpn.ssl.web_realm", "vpn.ssl.web_host-check-software", "vpn.ssl.web_portal", @@ -6214,16 +6260,16 @@ def main(): "vpn.ssl.web_user-bookmark", "vpn.ssl_settings", "vpn.ssl_client", - "vpn_kmip-server", + "vpn.ipsec_fec", "vpn.ipsec_phase1", "vpn.ipsec_phase2", "vpn.ipsec_manualkey", "vpn.ipsec_concentrator", - "vpn.ipsec_fec", "vpn.ipsec_phase1-interface", "vpn.ipsec_phase2-interface", "vpn.ipsec_manualkey-interface", "vpn.ipsec_forticlient", + "vpn_kmip-server", "vpn_pptp", "vpn_l2tp", "certificate_ca", @@ -6247,6 +6293,7 @@ def main(): "ips_global", "ips_settings", "sctp-filter_profile", + "diameter-filter_profile", "web-proxy_profile", "web-proxy_global", "web-proxy_explicit", @@ -6270,6 +6317,7 @@ def main(): "application_group", "dlp_data-type", "dlp_dictionary", + "dlp_exact-data-match", "dlp_sensor", "dlp_filepattern", "dlp_sensitivity", @@ -6277,7 +6325,7 @@ def main(): "dlp_profile", "dlp_settings", "videofilter_youtube-key", - "videofilter_youtube-channel-filter", + "videofilter_keyword", "videofilter_profile", "emailfilter_bword", "emailfilter_block-allow-list", @@ -6346,6 +6394,8 @@ def main(): "icap_server", "icap_server-group", "icap_profile", + "user_peer", + "user_peergrp", "user_certificate", "user_radius", "user_tacacs+", @@ -6355,6 +6405,7 @@ def main(): "user_domain-controller", "user_pop3", "user_saml", + "user_external-identity-provider", "user_fsso", "user_adgrp", "user_fsso-polling", @@ -6362,8 +6413,6 @@ def main(): "user_password-policy", "user_local", "user_setting", - "user_peer", - "user_peergrp", "user_quarantine", "user_group", "user_security-exempt-list", @@ -6433,22 +6482,14 @@ def main(): "system_isf-queue-profile", "system_npu", "system_np6", + "system_gi-gk", "system_modem", "system.3g-modem_custom", "system_lte-modem", - "firewall_acl", - "firewall_acl6", - "monitoring_np6-ipsec-engine", - "monitoring_npu-hpe", - "switch-controller.ptp_settings", - "switch-controller.ptp_policy", - "system_physical-switch", - "system_virtual-switch", - "system_stp", - "system_gi-gk", "firewall_gtp", "firewall_pfcp", - "vpn_ocvpn", + "firewall_acl", + "firewall_acl6", "gtp_apn", "gtp_apngrp", "gtp_message-filter-v0v1", @@ -6458,6 +6499,17 @@ def main(): "gtp_tunnel-limit", "gtp_apn-shaper", "pfcp_message-filter", + "monitoring_np6-ipsec-engine", + "monitoring_npu-hpe", + "system_npu-vlink", + "system_physical-switch", + "system_virtual-switch", + "system_stp", + "system_smc-ntp", + "videofilter_youtube-channel-filter", + "switch-controller.ptp_settings", + "switch-controller.ptp_policy", + "vpn_ocvpn", "system.replacemsg_mail", "system.replacemsg_http", "system.replacemsg_webproxy", @@ -6622,7 +6674,6 @@ def main(): "firewall_policy6", "antivirus_notification", "antivirus_mms-checksum", - "system_smc-ntp", "switch-controller_vlan", "switch-controller.security-policy_captive-portal", "user_device", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_extender_controller_dataplan.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_extender_controller_dataplan.py index 3157f52e2..7013edfde 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_extender_controller_dataplan.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_extender_controller_dataplan.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -377,9 +377,10 @@ def extender_controller_dataplan(data, fos, check_mode=False): state = data["state"] extender_controller_dataplan_data = data["extender_controller_dataplan"] - filtered_data = underscore_to_hyphen( - filter_extender_controller_dataplan_data(extender_controller_dataplan_data) + filtered_data = filter_extender_controller_dataplan_data( + extender_controller_dataplan_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -443,7 +444,9 @@ def extender_controller_dataplan(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("extender-controller", "dataplan", data=filtered_data, vdom=vdom) + return fos.set( + "extender-controller", "dataplan", data=converted_data, vdom=vdom + ) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_extender_controller_extender.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_extender_controller_extender.py index a21850cec..02aa319c5 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_extender_controller_extender.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_extender_controller_extender.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -955,9 +955,10 @@ def extender_controller_extender(data, fos, check_mode=False): extender_controller_extender_data = flatten_multilists_attributes( extender_controller_extender_data ) - filtered_data = underscore_to_hyphen( - filter_extender_controller_extender_data(extender_controller_extender_data) + filtered_data = filter_extender_controller_extender_data( + extender_controller_extender_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -1021,7 +1022,9 @@ def extender_controller_extender(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("extender-controller", "extender", data=filtered_data, vdom=vdom) + return fos.set( + "extender-controller", "extender", data=converted_data, vdom=vdom + ) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_extender_controller_extender_profile.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_extender_controller_extender_profile.py index 66909bce9..598e163a8 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_extender_controller_extender_profile.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_extender_controller_extender_profile.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -819,15 +819,14 @@ def extender_controller_extender_profile(data, fos): extender_controller_extender_profile_data = flatten_multilists_attributes( extender_controller_extender_profile_data ) - filtered_data = underscore_to_hyphen( - filter_extender_controller_extender_profile_data( - extender_controller_extender_profile_data - ) + filtered_data = filter_extender_controller_extender_profile_data( + extender_controller_extender_profile_data ) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: return fos.set( - "extender-controller", "extender-profile", data=filtered_data, vdom=vdom + "extender-controller", "extender-profile", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_extender_extender_info.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_extender_extender_info.py index 8da3dfa1f..bd3d344fa 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_extender_extender_info.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_extender_extender_info.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -200,9 +200,9 @@ def underscore_to_hyphen(data): def valid_attr_to_invalid_attr(data): - specillist = {"<sn>": "sn"} + speciallist = {"<sn>": "sn"} - for k, v in specillist.items(): + for k, v in speciallist.items(): if v == data: return k @@ -211,8 +211,11 @@ def valid_attr_to_invalid_attr(data): def valid_attr_to_invalid_attrs(data): if isinstance(data, list): + new_data = [] for elem in data: elem = valid_attr_to_invalid_attrs(elem) + new_data.append(elem) + data = new_data elif isinstance(data, dict): new_data = {} for k, v in data.items(): @@ -225,10 +228,8 @@ def valid_attr_to_invalid_attrs(data): def extender_extender_info(data, fos, check_mode=False): vdom = data["vdom"] extender_extender_info_data = data["extender_extender_info"] - filtered_data = underscore_to_hyphen( - filter_extender_extender_info_data(extender_extender_info_data) - ) - converted_data = valid_attr_to_invalid_attrs(filtered_data) + filtered_data = filter_extender_extender_info_data(extender_extender_info_data) + converted_data = underscore_to_hyphen(valid_attr_to_invalid_attrs(filtered_data)) return fos.set("extender", "extender-info", data=converted_data, vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_extender_lte_carrier_by_mcc_mnc.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_extender_lte_carrier_by_mcc_mnc.py index 1e8c76755..6f845a126 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_extender_lte_carrier_by_mcc_mnc.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_extender_lte_carrier_by_mcc_mnc.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -200,9 +200,9 @@ def underscore_to_hyphen(data): def valid_attr_to_invalid_attr(data): - specillist = {"<sn>": "sn"} + speciallist = {"<sn>": "sn"} - for k, v in specillist.items(): + for k, v in speciallist.items(): if v == data: return k @@ -211,8 +211,11 @@ def valid_attr_to_invalid_attr(data): def valid_attr_to_invalid_attrs(data): if isinstance(data, list): + new_data = [] for elem in data: elem = valid_attr_to_invalid_attrs(elem) + new_data.append(elem) + data = new_data elif isinstance(data, dict): new_data = {} for k, v in data.items(): @@ -225,12 +228,10 @@ def valid_attr_to_invalid_attrs(data): def extender_lte_carrier_by_mcc_mnc(data, fos): vdom = data["vdom"] extender_lte_carrier_by_mcc_mnc_data = data["extender_lte_carrier_by_mcc_mnc"] - filtered_data = underscore_to_hyphen( - filter_extender_lte_carrier_by_mcc_mnc_data( - extender_lte_carrier_by_mcc_mnc_data - ) + filtered_data = filter_extender_lte_carrier_by_mcc_mnc_data( + extender_lte_carrier_by_mcc_mnc_data ) - converted_data = valid_attr_to_invalid_attrs(filtered_data) + converted_data = underscore_to_hyphen(valid_attr_to_invalid_attrs(filtered_data)) return fos.set("extender", "lte-carrier-by-mcc-mnc", data=converted_data, vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_extender_lte_carrier_list.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_extender_lte_carrier_list.py index e147cad46..49f94e1b8 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_extender_lte_carrier_list.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_extender_lte_carrier_list.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -200,9 +200,9 @@ def underscore_to_hyphen(data): def valid_attr_to_invalid_attr(data): - specillist = {"<sn>": "sn"} + speciallist = {"<sn>": "sn"} - for k, v in specillist.items(): + for k, v in speciallist.items(): if v == data: return k @@ -211,8 +211,11 @@ def valid_attr_to_invalid_attr(data): def valid_attr_to_invalid_attrs(data): if isinstance(data, list): + new_data = [] for elem in data: elem = valid_attr_to_invalid_attrs(elem) + new_data.append(elem) + data = new_data elif isinstance(data, dict): new_data = {} for k, v in data.items(): @@ -225,10 +228,10 @@ def valid_attr_to_invalid_attrs(data): def extender_lte_carrier_list(data, fos): vdom = data["vdom"] extender_lte_carrier_list_data = data["extender_lte_carrier_list"] - filtered_data = underscore_to_hyphen( - filter_extender_lte_carrier_list_data(extender_lte_carrier_list_data) + filtered_data = filter_extender_lte_carrier_list_data( + extender_lte_carrier_list_data ) - converted_data = valid_attr_to_invalid_attrs(filtered_data) + converted_data = underscore_to_hyphen(valid_attr_to_invalid_attrs(filtered_data)) return fos.set("extender", "lte-carrier-list", data=converted_data, vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_extender_modem_status.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_extender_modem_status.py index a1cf6646b..442310ead 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_extender_modem_status.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_extender_modem_status.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -200,9 +200,9 @@ def underscore_to_hyphen(data): def valid_attr_to_invalid_attr(data): - specillist = {"<sn>": "sn", "[1|2]": "set_1_2"} + speciallist = {"<sn>": "sn", "[1|2]": "set_1_2"} - for k, v in specillist.items(): + for k, v in speciallist.items(): if v == data: return k @@ -211,8 +211,11 @@ def valid_attr_to_invalid_attr(data): def valid_attr_to_invalid_attrs(data): if isinstance(data, list): + new_data = [] for elem in data: elem = valid_attr_to_invalid_attrs(elem) + new_data.append(elem) + data = new_data elif isinstance(data, dict): new_data = {} for k, v in data.items(): @@ -225,10 +228,8 @@ def valid_attr_to_invalid_attrs(data): def extender_modem_status(data, fos): vdom = data["vdom"] extender_modem_status_data = data["extender_modem_status"] - filtered_data = underscore_to_hyphen( - filter_extender_modem_status_data(extender_modem_status_data) - ) - converted_data = valid_attr_to_invalid_attrs(filtered_data) + filtered_data = filter_extender_modem_status_data(extender_modem_status_data) + converted_data = underscore_to_hyphen(valid_attr_to_invalid_attrs(filtered_data)) return fos.set("extender", "modem-status", data=converted_data, vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_extender_sys_info.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_extender_sys_info.py index a9a4b3d71..5bfc9e9d5 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_extender_sys_info.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_extender_sys_info.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -200,9 +200,9 @@ def underscore_to_hyphen(data): def valid_attr_to_invalid_attr(data): - specillist = {"<sn>": "sn"} + speciallist = {"<sn>": "sn"} - for k, v in specillist.items(): + for k, v in speciallist.items(): if v == data: return k @@ -211,8 +211,11 @@ def valid_attr_to_invalid_attr(data): def valid_attr_to_invalid_attrs(data): if isinstance(data, list): + new_data = [] for elem in data: elem = valid_attr_to_invalid_attrs(elem) + new_data.append(elem) + data = new_data elif isinstance(data, dict): new_data = {} for k, v in data.items(): @@ -225,10 +228,8 @@ def valid_attr_to_invalid_attrs(data): def extender_sys_info(data, fos, check_mode=False): vdom = data["vdom"] extender_sys_info_data = data["extender_sys_info"] - filtered_data = underscore_to_hyphen( - filter_extender_sys_info_data(extender_sys_info_data) - ) - converted_data = valid_attr_to_invalid_attrs(filtered_data) + filtered_data = filter_extender_sys_info_data(extender_sys_info_data) + converted_data = underscore_to_hyphen(valid_attr_to_invalid_attrs(filtered_data)) return fos.set("extender", "sys-info", data=converted_data, vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_extension_controller_dataplan.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_extension_controller_dataplan.py index ec0e256d8..856f3cbec 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_extension_controller_dataplan.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_extension_controller_dataplan.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -352,13 +352,14 @@ def extension_controller_dataplan(data, fos): state = data["state"] extension_controller_dataplan_data = data["extension_controller_dataplan"] - filtered_data = underscore_to_hyphen( - filter_extension_controller_dataplan_data(extension_controller_dataplan_data) + filtered_data = filter_extension_controller_dataplan_data( + extension_controller_dataplan_data ) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: return fos.set( - "extension-controller", "dataplan", data=filtered_data, vdom=vdom + "extension-controller", "dataplan", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_extension_controller_extender.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_extension_controller_extender.py index 896e7475d..6ea232463 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_extension_controller_extender.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_extension_controller_extender.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -397,13 +397,14 @@ def extension_controller_extender(data, fos): extension_controller_extender_data = flatten_multilists_attributes( extension_controller_extender_data ) - filtered_data = underscore_to_hyphen( - filter_extension_controller_extender_data(extension_controller_extender_data) + filtered_data = filter_extension_controller_extender_data( + extension_controller_extender_data ) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: return fos.set( - "extension-controller", "extender", data=filtered_data, vdom=vdom + "extension-controller", "extender", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_extension_controller_extender_profile.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_extension_controller_extender_profile.py index b985cd29b..83c1659d5 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_extension_controller_extender_profile.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_extension_controller_extender_profile.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -807,15 +807,14 @@ def extension_controller_extender_profile(data, fos): extension_controller_extender_profile_data = flatten_multilists_attributes( extension_controller_extender_profile_data ) - filtered_data = underscore_to_hyphen( - filter_extension_controller_extender_profile_data( - extension_controller_extender_profile_data - ) + filtered_data = filter_extension_controller_extender_profile_data( + extension_controller_extender_profile_data ) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: return fos.set( - "extension-controller", "extender-profile", data=filtered_data, vdom=vdom + "extension-controller", "extender-profile", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_extension_controller_fortigate.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_extension_controller_fortigate.py index 8fe5a4f6c..8afbef6d7 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_extension_controller_fortigate.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_extension_controller_fortigate.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -258,13 +258,14 @@ def extension_controller_fortigate(data, fos): state = data["state"] extension_controller_fortigate_data = data["extension_controller_fortigate"] - filtered_data = underscore_to_hyphen( - filter_extension_controller_fortigate_data(extension_controller_fortigate_data) + filtered_data = filter_extension_controller_fortigate_data( + extension_controller_fortigate_data ) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: return fos.set( - "extension-controller", "fortigate", data=filtered_data, vdom=vdom + "extension-controller", "fortigate", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_extension_controller_fortigate_profile.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_extension_controller_fortigate_profile.py index 68867a07c..ac4701320 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_extension_controller_fortigate_profile.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_extension_controller_fortigate_profile.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -244,15 +244,14 @@ def extension_controller_fortigate_profile(data, fos): extension_controller_fortigate_profile_data = data[ "extension_controller_fortigate_profile" ] - filtered_data = underscore_to_hyphen( - filter_extension_controller_fortigate_profile_data( - extension_controller_fortigate_profile_data - ) + filtered_data = filter_extension_controller_fortigate_profile_data( + extension_controller_fortigate_profile_data ) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: return fos.set( - "extension-controller", "fortigate-profile", data=filtered_data, vdom=vdom + "extension-controller", "fortigate-profile", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_file_filter_profile.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_file_filter_profile.py index accdb5951..282be0ad6 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_file_filter_profile.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_file_filter_profile.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -141,7 +141,7 @@ options: type: str direction: description: - - Traffic direction (HTTP, FTP, SSH, CIFS only). + - Traffic direction (HTTP, FTP, SSH, CIFS, and MAPI only). type: str choices: - 'incoming' @@ -379,9 +379,8 @@ def file_filter_profile(data, fos, check_mode=False): file_filter_profile_data = data["file_filter_profile"] file_filter_profile_data = flatten_multilists_attributes(file_filter_profile_data) - filtered_data = underscore_to_hyphen( - filter_file_filter_profile_data(file_filter_profile_data) - ) + filtered_data = filter_file_filter_profile_data(file_filter_profile_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -445,7 +444,7 @@ def file_filter_profile(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("file-filter", "profile", data=filtered_data, vdom=vdom) + return fos.set("file-filter", "profile", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_access_proxy.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_access_proxy.py index 557851a75..568387937 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_access_proxy.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_access_proxy.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -1550,12 +1550,11 @@ def firewall_access_proxy(data, fos): firewall_access_proxy_data = flatten_multilists_attributes( firewall_access_proxy_data ) - filtered_data = underscore_to_hyphen( - filter_firewall_access_proxy_data(firewall_access_proxy_data) - ) + filtered_data = filter_firewall_access_proxy_data(firewall_access_proxy_data) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: - return fos.set("firewall", "access-proxy", data=filtered_data, vdom=vdom) + return fos.set("firewall", "access-proxy", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_access_proxy6.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_access_proxy6.py index ac57f145e..a8724766f 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_access_proxy6.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_access_proxy6.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -1390,12 +1390,11 @@ def firewall_access_proxy6(data, fos): firewall_access_proxy6_data = flatten_multilists_attributes( firewall_access_proxy6_data ) - filtered_data = underscore_to_hyphen( - filter_firewall_access_proxy6_data(firewall_access_proxy6_data) - ) + filtered_data = filter_firewall_access_proxy6_data(firewall_access_proxy6_data) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: - return fos.set("firewall", "access-proxy6", data=filtered_data, vdom=vdom) + return fos.set("firewall", "access-proxy6", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_access_proxy_ssh_client_cert.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_access_proxy_ssh_client_cert.py index 0d2a3e4d2..7e1378f56 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_access_proxy_ssh_client_cert.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_access_proxy_ssh_client_cert.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -317,15 +317,14 @@ def firewall_access_proxy_ssh_client_cert(data, fos): firewall_access_proxy_ssh_client_cert_data = data[ "firewall_access_proxy_ssh_client_cert" ] - filtered_data = underscore_to_hyphen( - filter_firewall_access_proxy_ssh_client_cert_data( - firewall_access_proxy_ssh_client_cert_data - ) + filtered_data = filter_firewall_access_proxy_ssh_client_cert_data( + firewall_access_proxy_ssh_client_cert_data ) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: return fos.set( - "firewall", "access-proxy-ssh-client-cert", data=filtered_data, vdom=vdom + "firewall", "access-proxy-ssh-client-cert", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_access_proxy_virtual_host.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_access_proxy_virtual_host.py index f9e0ca5d9..f934ad52a 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_access_proxy_virtual_host.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_access_proxy_virtual_host.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -112,6 +112,17 @@ options: description: - SSL certificate for this host. Source vpn.certificate.local.name. type: str + ssl_certificate_dict: + description: + - SSL certificates for this host. Use the parameter ssl_certificate if the fortiOS firmware version <= 7.4.1 + type: list + elements: dict + suboptions: + name: + description: + - Certificate list. Source vpn.certificate.local.name. + required: true + type: str """ EXAMPLES = """ @@ -126,6 +137,9 @@ EXAMPLES = """ name: "default_name_5" replacemsg_group: "<your_own_value> (source system.replacemsg-group.name)" ssl_certificate: "<your_own_value> (source vpn.certificate.local.name)" + ssl_certificate_dict: + - + name: "default_name_9 (source vpn.certificate.local.name)" """ RETURN = """ @@ -208,7 +222,14 @@ from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.data_post def filter_firewall_access_proxy_virtual_host_data(json): - option_list = ["host", "host_type", "name", "replacemsg_group", "ssl_certificate"] + option_list = [ + "host", + "host_type", + "name", + "replacemsg_group", + "ssl_certificate", + "ssl_certificate_dict", + ] json = remove_invalid_fields(json) dictionary = {} @@ -233,21 +254,45 @@ def underscore_to_hyphen(data): return data +def remap_attribute_name(data): + speciallist = {"ssl-certificate-dict": "ssl-certificate"} + + if data in speciallist: + return speciallist[data] + return data + + +def remap_attribute_names(data): + if isinstance(data, list): + new_data = [] + for elem in data: + elem = remap_attribute_names(elem) + new_data.append(elem) + data = new_data + elif isinstance(data, dict): + new_data = {} + for k, v in data.items(): + new_data[remap_attribute_name(k)] = remap_attribute_names(v) + data = new_data + + return data + + def firewall_access_proxy_virtual_host(data, fos): vdom = data["vdom"] state = data["state"] firewall_access_proxy_virtual_host_data = data["firewall_access_proxy_virtual_host"] - filtered_data = underscore_to_hyphen( - filter_firewall_access_proxy_virtual_host_data( - firewall_access_proxy_virtual_host_data - ) + filtered_data = filter_firewall_access_proxy_virtual_host_data( + firewall_access_proxy_virtual_host_data ) + converted_data = underscore_to_hyphen(filtered_data) + converted_data = remap_attribute_names(converted_data) if state == "present" or state is True: return fos.set( - "firewall", "access-proxy-virtual-host", data=filtered_data, vdom=vdom + "firewall", "access-proxy-virtual-host", data=converted_data, vdom=vdom ) elif state == "absent": @@ -296,7 +341,18 @@ versioned_schema = { "elements": "dict", "children": { "name": {"v_range": [["v7.0.0", ""]], "type": "string", "required": True}, - "ssl_certificate": {"v_range": [["v7.0.0", ""]], "type": "string"}, + "ssl_certificate_dict": { + "type": "list", + "elements": "dict", + "children": { + "name": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "required": True, + } + }, + "v_range": [["v7.4.2", ""]], + }, "host": {"v_range": [["v7.0.0", ""]], "type": "string"}, "host_type": { "v_range": [["v7.0.0", ""]], @@ -307,6 +363,7 @@ versioned_schema = { "v_range": [["v7.0.8", "v7.0.12"], ["v7.2.1", ""]], "type": "string", }, + "ssl_certificate": {"v_range": [["v7.0.0", "v7.4.1"]], "type": "string"}, }, "v_range": [["v7.0.0", ""]], } diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_acl.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_acl.py index e412e5346..1e5a3c0d1 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_acl.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_acl.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -310,7 +310,8 @@ def firewall_acl(data, fos, check_mode=False): state = data["state"] firewall_acl_data = data["firewall_acl"] - filtered_data = underscore_to_hyphen(filter_firewall_acl_data(firewall_acl_data)) + filtered_data = filter_firewall_acl_data(firewall_acl_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -374,7 +375,7 @@ def firewall_acl(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall", "acl", data=filtered_data, vdom=vdom) + return fos.set("firewall", "acl", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("firewall", "acl", mkey=filtered_data["policyid"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_acl6.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_acl6.py index e9db22779..a1668ce56 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_acl6.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_acl6.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -310,7 +310,8 @@ def firewall_acl6(data, fos, check_mode=False): state = data["state"] firewall_acl6_data = data["firewall_acl6"] - filtered_data = underscore_to_hyphen(filter_firewall_acl6_data(firewall_acl6_data)) + filtered_data = filter_firewall_acl6_data(firewall_acl6_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -374,7 +375,7 @@ def firewall_acl6(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall", "acl6", data=filtered_data, vdom=vdom) + return fos.set("firewall", "acl6", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("firewall", "acl6", mkey=filtered_data["policyid"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_address.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_address.py index b3aa18cce..524f370d9 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_address.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_address.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -253,15 +253,6 @@ options: description: - SDN. Source system.sdn-connector.name. type: str - choices: - - 'aci' - - 'aws' - - 'azure' - - 'gcp' - - 'nsx' - - 'nuage' - - 'oci' - - 'openstack' sdn_addr_type: description: - Type of addresses to collect. @@ -425,7 +416,7 @@ EXAMPLES = """ os: "<your_own_value>" policy_group: "<your_own_value>" route_tag: "0" - sdn: "aci" + sdn: "<your_own_value> (source system.sdn-connector.name)" sdn_addr_type: "private" sdn_tag: "<your_own_value>" start_ip: "<your_own_value>" @@ -618,9 +609,8 @@ def firewall_address(data, fos, check_mode=False): state = data["state"] firewall_address_data = data["firewall_address"] - filtered_data = underscore_to_hyphen( - filter_firewall_address_data(firewall_address_data) - ) + filtered_data = filter_firewall_address_data(firewall_address_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -684,7 +674,7 @@ def firewall_address(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall", "address", data=filtered_data, vdom=vdom) + return fos.set("firewall", "address", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("firewall", "address", mkey=filtered_data["name"], vdom=vdom) @@ -791,20 +781,7 @@ versioned_schema = { "wildcard_fqdn": {"v_range": [["v6.0.0", ""]], "type": "string"}, "cache_ttl": {"v_range": [["v6.0.0", ""]], "type": "integer"}, "wildcard": {"v_range": [["v6.0.0", ""]], "type": "string"}, - "sdn": { - "v_range": [["v6.0.0", ""]], - "type": "string", - "options": [ - {"value": "aci", "v_range": [["v6.0.0", "v6.0.11"]]}, - {"value": "aws", "v_range": [["v6.0.0", "v6.0.11"]]}, - {"value": "azure", "v_range": [["v6.0.0", "v6.0.11"]]}, - {"value": "gcp", "v_range": [["v6.0.0", "v6.0.11"]]}, - {"value": "nsx", "v_range": [["v6.0.0", "v6.0.11"]]}, - {"value": "nuage", "v_range": [["v6.0.0", "v6.0.11"]]}, - {"value": "oci", "v_range": [["v6.0.0", "v6.0.11"]]}, - {"value": "openstack", "v_range": [["v6.0.0", "v6.0.11"]]}, - ], - }, + "sdn": {"v_range": [["v6.0.0", ""]], "type": "string"}, "fsso_group": { "type": "list", "elements": "dict", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_address6.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_address6.py index 64dd69015..2bdd058b0 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_address6.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_address6.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -487,9 +487,8 @@ def firewall_address6(data, fos, check_mode=False): state = data["state"] firewall_address6_data = data["firewall_address6"] - filtered_data = underscore_to_hyphen( - filter_firewall_address6_data(firewall_address6_data) - ) + filtered_data = filter_firewall_address6_data(firewall_address6_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -553,7 +552,7 @@ def firewall_address6(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall", "address6", data=filtered_data, vdom=vdom) + return fos.set("firewall", "address6", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("firewall", "address6", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_address6_template.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_address6_template.py index 3aabafe75..13d09f471 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_address6_template.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_address6_template.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -300,9 +300,10 @@ def firewall_address6_template(data, fos, check_mode=False): state = data["state"] firewall_address6_template_data = data["firewall_address6_template"] - filtered_data = underscore_to_hyphen( - filter_firewall_address6_template_data(firewall_address6_template_data) + filtered_data = filter_firewall_address6_template_data( + firewall_address6_template_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -366,7 +367,7 @@ def firewall_address6_template(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall", "address6-template", data=filtered_data, vdom=vdom) + return fos.set("firewall", "address6-template", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_addrgrp.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_addrgrp.py index d9e26bd82..bf22f839e 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_addrgrp.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_addrgrp.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -364,9 +364,8 @@ def firewall_addrgrp(data, fos, check_mode=False): state = data["state"] firewall_addrgrp_data = data["firewall_addrgrp"] - filtered_data = underscore_to_hyphen( - filter_firewall_addrgrp_data(firewall_addrgrp_data) - ) + filtered_data = filter_firewall_addrgrp_data(firewall_addrgrp_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -430,7 +429,7 @@ def firewall_addrgrp(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall", "addrgrp", data=filtered_data, vdom=vdom) + return fos.set("firewall", "addrgrp", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("firewall", "addrgrp", mkey=filtered_data["name"], vdom=vdom) @@ -487,6 +486,11 @@ versioned_schema = { ], }, "uuid": {"v_range": [["v6.0.0", ""]], "type": "string"}, + "allow_routing": { + "v_range": [["v6.0.0", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "member": { "type": "list", "elements": "dict", @@ -543,11 +547,6 @@ versioned_schema = { }, "v_range": [["v6.0.0", ""]], }, - "allow_routing": { - "v_range": [["v6.0.0", ""]], - "type": "string", - "options": [{"value": "enable"}, {"value": "disable"}], - }, "fabric_object": { "v_range": [["v6.4.4", ""]], "type": "string", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_addrgrp6.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_addrgrp6.py index 55f61decf..0ce118313 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_addrgrp6.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_addrgrp6.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -336,9 +336,8 @@ def firewall_addrgrp6(data, fos, check_mode=False): state = data["state"] firewall_addrgrp6_data = data["firewall_addrgrp6"] - filtered_data = underscore_to_hyphen( - filter_firewall_addrgrp6_data(firewall_addrgrp6_data) - ) + filtered_data = filter_firewall_addrgrp6_data(firewall_addrgrp6_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -402,7 +401,7 @@ def firewall_addrgrp6(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall", "addrgrp6", data=filtered_data, vdom=vdom) + return fos.set("firewall", "addrgrp6", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("firewall", "addrgrp6", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_auth_portal.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_auth_portal.py index f21b36905..ba9f277d2 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_auth_portal.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_auth_portal.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -240,11 +240,10 @@ def underscore_to_hyphen(data): def firewall_auth_portal(data, fos): vdom = data["vdom"] firewall_auth_portal_data = data["firewall_auth_portal"] - filtered_data = underscore_to_hyphen( - filter_firewall_auth_portal_data(firewall_auth_portal_data) - ) + filtered_data = filter_firewall_auth_portal_data(firewall_auth_portal_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("firewall", "auth-portal", data=filtered_data, vdom=vdom) + return fos.set("firewall", "auth-portal", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_carrier_endpoint_bwl.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_carrier_endpoint_bwl.py index 138c34467..689a2f8ea 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_carrier_endpoint_bwl.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_carrier_endpoint_bwl.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -319,9 +319,10 @@ def firewall_carrier_endpoint_bwl(data, fos, check_mode=False): firewall_carrier_endpoint_bwl_data = flatten_multilists_attributes( firewall_carrier_endpoint_bwl_data ) - filtered_data = underscore_to_hyphen( - filter_firewall_carrier_endpoint_bwl_data(firewall_carrier_endpoint_bwl_data) + filtered_data = filter_firewall_carrier_endpoint_bwl_data( + firewall_carrier_endpoint_bwl_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -388,7 +389,7 @@ def firewall_carrier_endpoint_bwl(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "firewall", "carrier-endpoint-bwl", data=filtered_data, vdom=vdom + "firewall", "carrier-endpoint-bwl", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_central_snat_map.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_central_snat_map.py index 26bc1fbd2..57ed19cd5 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_central_snat_map.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_central_snat_map.py @@ -42,7 +42,7 @@ notes: - Only one of [after, before] must be specified when action is moving an object. requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -450,9 +450,10 @@ def firewall_central_snat_map(data, fos, check_mode=False): state = data["state"] firewall_central_snat_map_data = data["firewall_central_snat_map"] - filtered_data = underscore_to_hyphen( - filter_firewall_central_snat_map_data(firewall_central_snat_map_data) + filtered_data = filter_firewall_central_snat_map_data( + firewall_central_snat_map_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -516,7 +517,7 @@ def firewall_central_snat_map(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall", "central-snat-map", data=filtered_data, vdom=vdom) + return fos.set("firewall", "central-snat-map", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_city.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_city.py index 833cbe296..479db74cd 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_city.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_city.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -232,7 +232,8 @@ def firewall_city(data, fos, check_mode=False): state = data["state"] firewall_city_data = data["firewall_city"] - filtered_data = underscore_to_hyphen(filter_firewall_city_data(firewall_city_data)) + filtered_data = filter_firewall_city_data(firewall_city_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -296,7 +297,7 @@ def firewall_city(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall", "city", data=filtered_data, vdom=vdom) + return fos.set("firewall", "city", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("firewall", "city", mkey=filtered_data["id"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_consolidated_policy.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_consolidated_policy.py index 837cea7da..0f7a38c3b 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_consolidated_policy.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_consolidated_policy.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -1011,9 +1011,10 @@ def firewall_consolidated_policy(data, fos, check_mode=False): state = data["state"] firewall_consolidated_policy_data = data["firewall_consolidated_policy"] - filtered_data = underscore_to_hyphen( - filter_firewall_consolidated_policy_data(firewall_consolidated_policy_data) + filtered_data = filter_firewall_consolidated_policy_data( + firewall_consolidated_policy_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -1077,7 +1078,9 @@ def firewall_consolidated_policy(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall.consolidated", "policy", data=filtered_data, vdom=vdom) + return fos.set( + "firewall.consolidated", "policy", data=converted_data, vdom=vdom + ) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_country.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_country.py index a0c2c9870..39d08dac2 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_country.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_country.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -246,9 +246,8 @@ def firewall_country(data, fos, check_mode=False): state = data["state"] firewall_country_data = data["firewall_country"] - filtered_data = underscore_to_hyphen( - filter_firewall_country_data(firewall_country_data) - ) + filtered_data = filter_firewall_country_data(firewall_country_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -312,7 +311,7 @@ def firewall_country(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall", "country", data=filtered_data, vdom=vdom) + return fos.set("firewall", "country", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("firewall", "country", mkey=filtered_data["id"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_decrypted_traffic_mirror.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_decrypted_traffic_mirror.py index 7ab8e3199..dd6971daa 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_decrypted_traffic_mirror.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_decrypted_traffic_mirror.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -294,11 +294,10 @@ def firewall_decrypted_traffic_mirror(data, fos, check_mode=False): firewall_decrypted_traffic_mirror_data = flatten_multilists_attributes( firewall_decrypted_traffic_mirror_data ) - filtered_data = underscore_to_hyphen( - filter_firewall_decrypted_traffic_mirror_data( - firewall_decrypted_traffic_mirror_data - ) + filtered_data = filter_firewall_decrypted_traffic_mirror_data( + firewall_decrypted_traffic_mirror_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -367,7 +366,7 @@ def firewall_decrypted_traffic_mirror(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "firewall", "decrypted-traffic-mirror", data=filtered_data, vdom=vdom + "firewall", "decrypted-traffic-mirror", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_dnstranslation.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_dnstranslation.py index 1503328b4..14574dc10 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_dnstranslation.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_dnstranslation.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -244,9 +244,8 @@ def firewall_dnstranslation(data, fos, check_mode=False): state = data["state"] firewall_dnstranslation_data = data["firewall_dnstranslation"] - filtered_data = underscore_to_hyphen( - filter_firewall_dnstranslation_data(firewall_dnstranslation_data) - ) + filtered_data = filter_firewall_dnstranslation_data(firewall_dnstranslation_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -310,7 +309,7 @@ def firewall_dnstranslation(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall", "dnstranslation", data=filtered_data, vdom=vdom) + return fos.set("firewall", "dnstranslation", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_dos_policy.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_dos_policy.py index b350bf947..0890e912e 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_dos_policy.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_dos_policy.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -141,6 +141,92 @@ options: choices: - 'disable' - 'enable' + synproxy_tcp_mss: + description: + - Determine TCP maximum segment size (MSS) value for packets replied by syn proxy module. + type: str + choices: + - '0' + - '256' + - '512' + - '1024' + - '1300' + - '1360' + - '1460' + - '1500' + synproxy_tcp_sack: + description: + - enable/disable TCP selective acknowledage (SACK) for packets replied by syn proxy module. + type: str + choices: + - 'enable' + - 'disable' + synproxy_tcp_timestamp: + description: + - enable/disable TCP timestamp option for packets replied by syn proxy module. + type: str + choices: + - 'enable' + - 'disable' + synproxy_tcp_window: + description: + - Determine TCP Window size for packets replied by syn proxy module. + type: str + choices: + - '4096' + - '8192' + - '16384' + - '32768' + synproxy_tcp_windowscale: + description: + - Determine TCP window scale option value for packets replied by syn proxy module. + type: str + choices: + - '0' + - '1' + - '2' + - '3' + - '4' + - '5' + - '6' + - '7' + - '8' + - '9' + - '10' + - '11' + - '12' + - '13' + - '14' + synproxy_tos: + description: + - Determine TCP differentiated services code point value (type of service). + type: str + choices: + - '0' + - '10' + - '12' + - '14' + - '18' + - '20' + - '22' + - '26' + - '28' + - '30' + - '34' + - '36' + - '38' + - '40' + - '46' + - '255' + synproxy_ttl: + description: + - Determine Time to live (TTL) value for packets replied by syn proxy module. + type: str + choices: + - '32' + - '64' + - '128' + - '255' threshold: description: - Anomaly threshold. Number of detected instances (packets per second or concurrent session number) that triggers the anomaly @@ -226,21 +312,28 @@ EXAMPLES = """ quarantine_expiry: "<your_own_value>" quarantine_log: "disable" status: "disable" + synproxy_tcp_mss: "0" + synproxy_tcp_sack: "enable" + synproxy_tcp_timestamp: "enable" + synproxy_tcp_window: "4096" + synproxy_tcp_windowscale: "0" + synproxy_tos: "0" + synproxy_ttl: "32" threshold: "0" threshold_default: "0" comments: "<your_own_value>" dstaddr: - - name: "default_name_15 (source firewall.address.name firewall.addrgrp.name)" + name: "default_name_22 (source firewall.address.name firewall.addrgrp.name)" interface: "<your_own_value> (source system.zone.name system.interface.name)" - name: "default_name_17" + name: "default_name_24" policyid: "<you_own_value>" service: - - name: "default_name_20 (source firewall.service.custom.name firewall.service.group.name)" + name: "default_name_27 (source firewall.service.custom.name firewall.service.group.name)" srcaddr: - - name: "default_name_22 (source firewall.address.name firewall.addrgrp.name)" + name: "default_name_29 (source firewall.address.name firewall.addrgrp.name)" status: "enable" """ @@ -369,9 +462,9 @@ def underscore_to_hyphen(data): def valid_attr_to_invalid_attr(data): - specillist = {"threshold(default)": "threshold_default"} + speciallist = {"threshold(default)": "threshold_default"} - for k, v in specillist.items(): + for k, v in speciallist.items(): if v == data: return k @@ -380,8 +473,11 @@ def valid_attr_to_invalid_attr(data): def valid_attr_to_invalid_attrs(data): if isinstance(data, list): + new_data = [] for elem in data: elem = valid_attr_to_invalid_attrs(elem) + new_data.append(elem) + data = new_data elif isinstance(data, dict): new_data = {} for k, v in data.items(): @@ -397,10 +493,8 @@ def firewall_dos_policy(data, fos, check_mode=False): state = data["state"] firewall_dos_policy_data = data["firewall_dos_policy"] - filtered_data = underscore_to_hyphen( - filter_firewall_dos_policy_data(firewall_dos_policy_data) - ) - converted_data = valid_attr_to_invalid_attrs(filtered_data) + filtered_data = filter_firewall_dos_policy_data(firewall_dos_policy_data) + converted_data = underscore_to_hyphen(valid_attr_to_invalid_attrs(filtered_data)) # check_mode starts from here if check_mode: @@ -592,6 +686,93 @@ versioned_schema = { "options": [{"value": "disable"}, {"value": "enable"}], }, "threshold": {"v_range": [["v6.0.0", ""]], "type": "integer"}, + "synproxy_ttl": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "32"}, + {"value": "64"}, + {"value": "128"}, + {"value": "255"}, + ], + }, + "synproxy_tos": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "0"}, + {"value": "10"}, + {"value": "12"}, + {"value": "14"}, + {"value": "18"}, + {"value": "20"}, + {"value": "22"}, + {"value": "26"}, + {"value": "28"}, + {"value": "30"}, + {"value": "34"}, + {"value": "36"}, + {"value": "38"}, + {"value": "40"}, + {"value": "46"}, + {"value": "255"}, + ], + }, + "synproxy_tcp_mss": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "0"}, + {"value": "256"}, + {"value": "512"}, + {"value": "1024"}, + {"value": "1300"}, + {"value": "1360"}, + {"value": "1460"}, + {"value": "1500"}, + ], + }, + "synproxy_tcp_sack": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "synproxy_tcp_timestamp": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "synproxy_tcp_window": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "4096"}, + {"value": "8192"}, + {"value": "16384"}, + {"value": "32768"}, + ], + }, + "synproxy_tcp_windowscale": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "0"}, + {"value": "1"}, + {"value": "2"}, + {"value": "3"}, + {"value": "4"}, + {"value": "5"}, + {"value": "6"}, + {"value": "7"}, + {"value": "8"}, + {"value": "9"}, + {"value": "10"}, + {"value": "11"}, + {"value": "12"}, + {"value": "13"}, + {"value": "14"}, + ], + }, "threshold_default": { "v_range": [["v6.0.0", "v7.0.5"], ["v7.2.0", "v7.2.0"]], "type": "integer", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_dos_policy6.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_dos_policy6.py index 163bacfc9..2dc3f2b9c 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_dos_policy6.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_dos_policy6.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -141,6 +141,92 @@ options: choices: - 'disable' - 'enable' + synproxy_tcp_mss: + description: + - Determine TCP maximum segment size (MSS) value for packets replied by syn proxy module. + type: str + choices: + - '0' + - '256' + - '512' + - '1024' + - '1300' + - '1360' + - '1460' + - '1500' + synproxy_tcp_sack: + description: + - enable/disable TCP selective acknowledage (SACK) for packets replied by syn proxy module. + type: str + choices: + - 'enable' + - 'disable' + synproxy_tcp_timestamp: + description: + - enable/disable TCP timestamp option for packets replied by syn proxy module. + type: str + choices: + - 'enable' + - 'disable' + synproxy_tcp_window: + description: + - Determine TCP Window size for packets replied by syn proxy module. + type: str + choices: + - '4096' + - '8192' + - '16384' + - '32768' + synproxy_tcp_windowscale: + description: + - Determine TCP window scale option value for packets replied by syn proxy module. + type: str + choices: + - '0' + - '1' + - '2' + - '3' + - '4' + - '5' + - '6' + - '7' + - '8' + - '9' + - '10' + - '11' + - '12' + - '13' + - '14' + synproxy_tos: + description: + - Determine TCP differentiated services code point value (type of service). + type: str + choices: + - '0' + - '10' + - '12' + - '14' + - '18' + - '20' + - '22' + - '26' + - '28' + - '30' + - '34' + - '36' + - '38' + - '40' + - '46' + - '255' + synproxy_ttl: + description: + - Determine Time to live (TTL) value for packets replied by syn proxy module. + type: str + choices: + - '32' + - '64' + - '128' + - '255' threshold: description: - Anomaly threshold. Number of detected instances (packets per second or concurrent session number) that triggers the anomaly @@ -226,21 +312,28 @@ EXAMPLES = """ quarantine_expiry: "<your_own_value>" quarantine_log: "disable" status: "disable" + synproxy_tcp_mss: "0" + synproxy_tcp_sack: "enable" + synproxy_tcp_timestamp: "enable" + synproxy_tcp_window: "4096" + synproxy_tcp_windowscale: "0" + synproxy_tos: "0" + synproxy_ttl: "32" threshold: "0" threshold_default: "0" comments: "<your_own_value>" dstaddr: - - name: "default_name_15 (source firewall.address6.name firewall.addrgrp6.name)" + name: "default_name_22 (source firewall.address6.name firewall.addrgrp6.name)" interface: "<your_own_value> (source system.zone.name system.interface.name)" - name: "default_name_17" + name: "default_name_24" policyid: "<you_own_value>" service: - - name: "default_name_20 (source firewall.service.custom.name firewall.service.group.name)" + name: "default_name_27 (source firewall.service.custom.name firewall.service.group.name)" srcaddr: - - name: "default_name_22 (source firewall.address6.name firewall.addrgrp6.name)" + name: "default_name_29 (source firewall.address6.name firewall.addrgrp6.name)" status: "enable" """ @@ -369,9 +462,9 @@ def underscore_to_hyphen(data): def valid_attr_to_invalid_attr(data): - specillist = {"threshold(default)": "threshold_default"} + speciallist = {"threshold(default)": "threshold_default"} - for k, v in specillist.items(): + for k, v in speciallist.items(): if v == data: return k @@ -380,8 +473,11 @@ def valid_attr_to_invalid_attr(data): def valid_attr_to_invalid_attrs(data): if isinstance(data, list): + new_data = [] for elem in data: elem = valid_attr_to_invalid_attrs(elem) + new_data.append(elem) + data = new_data elif isinstance(data, dict): new_data = {} for k, v in data.items(): @@ -397,10 +493,8 @@ def firewall_dos_policy6(data, fos, check_mode=False): state = data["state"] firewall_dos_policy6_data = data["firewall_dos_policy6"] - filtered_data = underscore_to_hyphen( - filter_firewall_dos_policy6_data(firewall_dos_policy6_data) - ) - converted_data = valid_attr_to_invalid_attrs(filtered_data) + filtered_data = filter_firewall_dos_policy6_data(firewall_dos_policy6_data) + converted_data = underscore_to_hyphen(valid_attr_to_invalid_attrs(filtered_data)) # check_mode starts from here if check_mode: @@ -592,6 +686,93 @@ versioned_schema = { "options": [{"value": "disable"}, {"value": "enable"}], }, "threshold": {"v_range": [["v6.0.0", ""]], "type": "integer"}, + "synproxy_ttl": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "32"}, + {"value": "64"}, + {"value": "128"}, + {"value": "255"}, + ], + }, + "synproxy_tos": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "0"}, + {"value": "10"}, + {"value": "12"}, + {"value": "14"}, + {"value": "18"}, + {"value": "20"}, + {"value": "22"}, + {"value": "26"}, + {"value": "28"}, + {"value": "30"}, + {"value": "34"}, + {"value": "36"}, + {"value": "38"}, + {"value": "40"}, + {"value": "46"}, + {"value": "255"}, + ], + }, + "synproxy_tcp_mss": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "0"}, + {"value": "256"}, + {"value": "512"}, + {"value": "1024"}, + {"value": "1300"}, + {"value": "1360"}, + {"value": "1460"}, + {"value": "1500"}, + ], + }, + "synproxy_tcp_sack": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "synproxy_tcp_timestamp": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "synproxy_tcp_window": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "4096"}, + {"value": "8192"}, + {"value": "16384"}, + {"value": "32768"}, + ], + }, + "synproxy_tcp_windowscale": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "0"}, + {"value": "1"}, + {"value": "2"}, + {"value": "3"}, + {"value": "4"}, + {"value": "5"}, + {"value": "6"}, + {"value": "7"}, + {"value": "8"}, + {"value": "9"}, + {"value": "10"}, + {"value": "11"}, + {"value": "12"}, + {"value": "13"}, + {"value": "14"}, + ], + }, "threshold_default": { "v_range": [["v6.0.0", "v7.0.5"], ["v7.2.0", "v7.2.0"]], "type": "integer", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_global.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_global.py index 6a501fe08..3d9ac4002 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_global.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_global.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -206,11 +206,10 @@ def underscore_to_hyphen(data): def firewall_global(data, fos): vdom = data["vdom"] firewall_global_data = data["firewall_global"] - filtered_data = underscore_to_hyphen( - filter_firewall_global_data(firewall_global_data) - ) + filtered_data = filter_firewall_global_data(firewall_global_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("firewall", "global", data=filtered_data, vdom=vdom) + return fos.set("firewall", "global", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_gtp.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_gtp.py index c435490c7..82a04ec7e 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_gtp.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_gtp.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -1811,10 +1811,11 @@ def firewall_gtp(data, fos): firewall_gtp_data = data["firewall_gtp"] firewall_gtp_data = flatten_multilists_attributes(firewall_gtp_data) - filtered_data = underscore_to_hyphen(filter_firewall_gtp_data(firewall_gtp_data)) + filtered_data = filter_firewall_gtp_data(firewall_gtp_data) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: - return fos.set("firewall", "gtp", data=filtered_data, vdom=vdom) + return fos.set("firewall", "gtp", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("firewall", "gtp", mkey=filtered_data["name"], vdom=vdom) @@ -1855,262 +1856,266 @@ versioned_schema = { "elements": "dict", "children": { "name": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "required": True, }, "comment": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", }, "remove_if_echo_expires": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, "remove_if_recovery_differ": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, "send_delete_when_timeout": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, "send_delete_when_timeout_v2": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, "gtp_in_gtp": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "unknown_version_action": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "min_message_length": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "integer", }, "max_message_length": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "integer", }, "control_plane_message_rate_limit": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "integer", }, "sub_second_sampling": { - "v_range": [["v6.2.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.2.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, "rate_sampling_interval": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "integer", }, "sub_second_interval": { - "v_range": [["v6.2.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.2.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "0.5"}, {"value": "0.25"}, {"value": "0.1"}], }, "echo_request_interval": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "integer", }, "user_plane_message_rate_limit": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "integer", }, "tunnel_limit": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "integer", }, "global_tunnel_limit": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", }, "tunnel_timeout": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "integer", }, "half_open_timeout": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "integer", }, "half_close_timeout": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "integer", }, "default_apn_action": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "default_imsi_action": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "default_policy_action": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "default_ip_action": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "default_noip_action": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "apn_filter": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, "imsi_filter": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, "policy_filter": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, "ie_remover": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, "ip_filter": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, "noip_filter": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, "monitor_mode": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [ {"value": "enable"}, {"value": "disable"}, { "value": "vdom", - "v_range": [["v6.2.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.2.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], }, ], }, "forwarded_log": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, "denied_log": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, "rate_limited_log": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, "state_invalid_log": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, "tunnel_limit_log": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, "extension_log": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, "traffic_count_log": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, "log_freq": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "integer", }, "gtpu_forwarded_log": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, "gtpu_denied_log": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, "gtpu_log_freq": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "integer", }, "log_gtpu_limit": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "integer", }, "log_imsi_prefix": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", }, "log_msisdn_prefix": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", }, "invalid_reserved_field": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "reserved_ie": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "miss_must_ie": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "out_of_state_message": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "out_of_state_ie": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "spoof_src_addr": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "handover_group": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", }, "handover_group6": { @@ -2118,11 +2123,12 @@ versioned_schema = { ["v6.4.0", "v6.4.0"], ["v6.4.4", "v7.0.8"], ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], ], "type": "string", }, "authorized_sgsns": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", }, "authorized_sgsns6": { @@ -2130,11 +2136,12 @@ versioned_schema = { ["v6.4.0", "v6.4.0"], ["v6.4.4", "v7.0.8"], ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], ], "type": "string", }, "invalid_sgsns_to_log": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", }, "invalid_sgsns6_to_log": { @@ -2142,11 +2149,12 @@ versioned_schema = { ["v6.4.0", "v6.4.0"], ["v6.4.4", "v7.0.8"], ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], ], "type": "string", }, "authorized_ggsns": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", }, "authorized_ggsns6": { @@ -2154,6 +2162,7 @@ versioned_schema = { ["v6.4.0", "v6.4.0"], ["v6.4.4", "v7.0.8"], ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], ], "type": "string", }, @@ -2162,7 +2171,11 @@ versioned_schema = { "elements": "dict", "children": { "id": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", "required": True, }, @@ -2171,43 +2184,71 @@ versioned_schema = { "elements": "dict", "children": { "name": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "string", "required": True, } }, - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], }, "action": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "selection_mode": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "list", "options": [{"value": "ms"}, {"value": "net"}, {"value": "vrf"}], "multiple_values": True, "elements": "str", }, }, - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], }, "imsi": { "type": "list", "elements": "dict", "children": { "id": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", "required": True, }, "mcc_mnc": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "string", }, "msisdn_prefix": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "string", }, "apnmember": { @@ -2215,34 +2256,54 @@ versioned_schema = { "elements": "dict", "children": { "name": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "string", "required": True, } }, - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], }, "action": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "selection_mode": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "list", "options": [{"value": "ms"}, {"value": "net"}, {"value": "vrf"}], "multiple_values": True, "elements": "str", }, }, - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], }, "policy": { "type": "list", "elements": "dict", "children": { "id": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", "required": True, }, @@ -2251,15 +2312,27 @@ versioned_schema = { "elements": "dict", "children": { "name": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "string", "required": True, } }, - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], }, "messages": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "list", "options": [ {"value": "create-req"}, @@ -2271,14 +2344,22 @@ versioned_schema = { "elements": "str", }, "apn_sel_mode": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "list", "options": [{"value": "ms"}, {"value": "net"}, {"value": "vrf"}], "multiple_values": True, "elements": "str", }, "max_apn_restriction": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "string", "options": [ {"value": "all"}, @@ -2289,15 +2370,27 @@ versioned_schema = { ], }, "imsi_prefix": { - "v_range": [["v6.2.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.2.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "string", }, "msisdn_prefix": { - "v_range": [["v6.2.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.2.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "string", }, "rat_type": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "list", "options": [ {"value": "any"}, @@ -2308,48 +2401,80 @@ versioned_schema = { {"value": "hspa"}, { "value": "eutran", - "v_range": [["v6.2.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.2.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], }, { "value": "virtual", - "v_range": [["v6.2.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.2.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], }, { "value": "nbiot", - "v_range": [["v6.2.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.2.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], }, ], "multiple_values": True, "elements": "str", }, "imei": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "string", }, "action": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "rai": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "string", }, "uli": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "string", }, "imsi": {"v_range": [["v6.0.0", "v6.0.11"]], "type": "string"}, "msisdn": {"v_range": [["v6.0.0", "v6.0.11"]], "type": "string"}, }, - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], }, "policy_v2": { "type": "list", "elements": "dict", "children": { "id": { - "v_range": [["v6.2.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.2.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", "required": True, }, @@ -2358,15 +2483,27 @@ versioned_schema = { "elements": "dict", "children": { "name": { - "v_range": [["v6.2.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.2.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "string", "required": True, } }, - "v_range": [["v6.2.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.2.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], }, "messages": { - "v_range": [["v6.2.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.2.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "list", "options": [ {"value": "create-ses-req"}, @@ -2378,14 +2515,22 @@ versioned_schema = { "elements": "str", }, "apn_sel_mode": { - "v_range": [["v6.2.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.2.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "list", "options": [{"value": "ms"}, {"value": "net"}, {"value": "vrf"}], "multiple_values": True, "elements": "str", }, "max_apn_restriction": { - "v_range": [["v6.2.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.2.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "string", "options": [ {"value": "all"}, @@ -2396,15 +2541,27 @@ versioned_schema = { ], }, "imsi_prefix": { - "v_range": [["v6.2.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.2.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "string", }, "msisdn_prefix": { - "v_range": [["v6.2.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.2.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "string", }, "rat_type": { - "v_range": [["v6.2.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.2.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "list", "options": [ {"value": "any"}, @@ -2422,6 +2579,7 @@ versioned_schema = { ["v6.4.0", "v6.4.0"], ["v6.4.4", "v7.0.8"], ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], ], }, { @@ -2430,6 +2588,7 @@ versioned_schema = { ["v6.4.0", "v6.4.0"], ["v6.4.4", "v7.0.8"], ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], ], }, ], @@ -2437,37 +2596,49 @@ versioned_schema = { "elements": "str", }, "mei": { - "v_range": [["v6.2.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.2.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "string", }, "action": { - "v_range": [["v6.2.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.2.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "uli": { - "v_range": [["v6.2.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.2.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "list", "multiple_values": True, "elements": "str", }, }, - "v_range": [["v6.2.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.2.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], }, "addr_notify": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", }, "port_notify": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "integer", }, "interface_notify": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", }, "context_id": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "integer", }, "ie_remove_policy": { @@ -2475,12 +2646,20 @@ versioned_schema = { "elements": "dict", "children": { "id": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", "required": True, }, "sgsn_addr": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "string", }, "sgsn_addr6": { @@ -2488,11 +2667,16 @@ versioned_schema = { ["v6.4.0", "v6.4.0"], ["v6.4.4", "v7.0.8"], ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], ], "type": "string", }, "remove_ies": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "list", "options": [ {"value": "apn-restriction"}, @@ -2505,23 +2689,35 @@ versioned_schema = { "elements": "str", }, }, - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], }, "ip_policy": { "type": "list", "elements": "dict", "children": { "id": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", "required": True, }, "srcaddr": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "string", }, "dstaddr": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "string", }, "srcaddr6": { @@ -2529,6 +2725,7 @@ versioned_schema = { ["v6.4.0", "v6.4.0"], ["v6.4.4", "v7.0.8"], ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], ], "type": "string", }, @@ -2537,408 +2734,741 @@ versioned_schema = { ["v6.4.0", "v6.4.0"], ["v6.4.4", "v7.0.8"], ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], ], "type": "string", }, "action": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, }, - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], }, "noip_policy": { "type": "list", "elements": "dict", "children": { "id": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", "required": True, }, "type": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "string", "options": [{"value": "etsi"}, {"value": "ietf"}], }, "start": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "end": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "action": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, }, - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], }, "message_filter_v0v1": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", }, "message_filter_v2": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", }, "ie_allow_list_v0v1": { - "v_range": [["v7.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v7.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", }, "ie_allow_list_v2": { - "v_range": [["v7.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v7.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", }, "rat_timeout_profile": { - "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", }, "ie_validation": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "dict", "children": { "imsi": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, "rai": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, "reordering_required": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, "ms_validated": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, "selection_mode": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, "nsapi": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, "charging_ID": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, "end_user_addr": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, "mm_context": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, "pdp_context": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, "gsn_addr": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, "msisdn": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, "qos_profile": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, "apn_restriction": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, "rat_type": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, "uli": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, "ms_tzone": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, "imei": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, "charging_gateway_addr": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, }, }, "message_rate_limit": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "dict", "children": { "echo_request": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "echo_reponse": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "version_not_support": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "create_pdp_request": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "create_pdp_response": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "update_pdp_request": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "update_pdp_response": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "delete_pdp_request": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "delete_pdp_response": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "create_aa_pdp_request": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "create_aa_pdp_response": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "delete_aa_pdp_request": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "delete_aa_pdp_response": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "error_indication": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "pdu_notify_request": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "pdu_notify_response": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "pdu_notify_rej_request": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "pdu_notify_rej_response": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "support_ext_hdr_notify": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "send_route_request": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "send_route_response": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "failure_report_request": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "failure_report_response": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "note_ms_request": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "note_ms_response": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "identification_request": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "identification_response": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "sgsn_context_request": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "sgsn_context_response": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "sgsn_context_ack": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "fwd_relocation_request": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "fwd_relocation_response": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "fwd_relocation_complete": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "relocation_cancel_request": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "relocation_cancel_response": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "fwd_srns_context": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "fwd_reloc_complete_ack": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "fwd_srns_context_ack": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "ran_info": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "mbms_notify_request": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "mbms_notify_response": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "mbms_notify_rej_request": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "mbms_notify_rej_response": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "create_mbms_request": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "create_mbms_response": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "update_mbms_request": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "update_mbms_response": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "delete_mbms_request": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "delete_mbms_response": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "mbms_reg_request": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "mbms_reg_response": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "mbms_de_reg_request": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "mbms_de_reg_response": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "mbms_ses_start_request": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "mbms_ses_start_response": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "mbms_ses_stop_request": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "mbms_ses_stop_response": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "g_pdu": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, }, }, "rate_limit_mode": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [ {"value": "per-profile"}, @@ -2947,59 +3477,95 @@ versioned_schema = { ], }, "warning_threshold": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "integer", }, "message_rate_limit_v0": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "dict", "children": { "echo_request": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "create_pdp_request": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "delete_pdp_request": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, }, }, "message_rate_limit_v1": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "dict", "children": { "echo_request": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "create_pdp_request": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "delete_pdp_request": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, }, }, "message_rate_limit_v2": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "dict", "children": { "echo_request": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "create_session_request": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "delete_session_request": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, }, @@ -3009,29 +3575,45 @@ versioned_schema = { "elements": "dict", "children": { "id": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", "required": True, }, "apn": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "string", }, "version": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "rate_limit": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, }, - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], }, "ie_white_list_v0v1": {"v_range": [["v6.0.0", "v6.4.4"]], "type": "string"}, "ie_white_list_v2": {"v_range": [["v6.0.0", "v6.4.4"]], "type": "string"}, }, - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], } diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_identity_based_route.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_identity_based_route.py index cefe11ddf..398703665 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_identity_based_route.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_identity_based_route.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -268,9 +268,10 @@ def firewall_identity_based_route(data, fos, check_mode=False): state = data["state"] firewall_identity_based_route_data = data["firewall_identity_based_route"] - filtered_data = underscore_to_hyphen( - filter_firewall_identity_based_route_data(firewall_identity_based_route_data) + filtered_data = filter_firewall_identity_based_route_data( + firewall_identity_based_route_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -337,7 +338,7 @@ def firewall_identity_based_route(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "firewall", "identity-based-route", data=filtered_data, vdom=vdom + "firewall", "identity-based-route", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_interface_policy.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_interface_policy.py index 1147a73fa..d38612de3 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_interface_policy.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_interface_policy.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -265,6 +265,10 @@ options: choices: - 'enable' - 'disable' + uuid: + description: + - Universally Unique Identifier (UUID; automatically assigned but can be manually reset). + type: str webfilter_profile: description: - Web filter profile. Source webfilter.profile.name. @@ -319,6 +323,7 @@ EXAMPLES = """ - name: "default_name_32 (source firewall.address.name firewall.addrgrp.name)" status: "enable" + uuid: "<your_own_value>" webfilter_profile: "<your_own_value> (source webfilter.profile.name)" webfilter_profile_status: "enable" """ @@ -441,6 +446,7 @@ def filter_firewall_interface_policy_data(json): "spamfilter_profile_status", "srcaddr", "status", + "uuid", "webfilter_profile", "webfilter_profile_status", ] @@ -474,9 +480,10 @@ def firewall_interface_policy(data, fos, check_mode=False): state = data["state"] firewall_interface_policy_data = data["firewall_interface_policy"] - filtered_data = underscore_to_hyphen( - filter_firewall_interface_policy_data(firewall_interface_policy_data) + filtered_data = filter_firewall_interface_policy_data( + firewall_interface_policy_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -540,7 +547,7 @@ def firewall_interface_policy(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall", "interface-policy", data=filtered_data, vdom=vdom) + return fos.set("firewall", "interface-policy", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( @@ -586,6 +593,7 @@ versioned_schema = { "elements": "dict", "children": { "policyid": {"v_range": [["v6.0.0", ""]], "type": "integer", "required": True}, + "uuid": {"v_range": [["v7.4.2", ""]], "type": "string"}, "status": { "v_range": [["v6.0.0", ""]], "type": "string", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_interface_policy6.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_interface_policy6.py index 28d381a3b..3f9d2c5d7 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_interface_policy6.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_interface_policy6.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -265,6 +265,10 @@ options: choices: - 'enable' - 'disable' + uuid: + description: + - Universally Unique Identifier (UUID; automatically assigned but can be manually reset). + type: str webfilter_profile: description: - Web filter profile. Source webfilter.profile.name. @@ -319,6 +323,7 @@ EXAMPLES = """ - name: "default_name_32 (source firewall.address6.name firewall.addrgrp6.name)" status: "enable" + uuid: "<your_own_value>" webfilter_profile: "<your_own_value> (source webfilter.profile.name)" webfilter_profile_status: "enable" """ @@ -441,6 +446,7 @@ def filter_firewall_interface_policy6_data(json): "spamfilter_profile_status", "srcaddr6", "status", + "uuid", "webfilter_profile", "webfilter_profile_status", ] @@ -474,9 +480,10 @@ def firewall_interface_policy6(data, fos, check_mode=False): state = data["state"] firewall_interface_policy6_data = data["firewall_interface_policy6"] - filtered_data = underscore_to_hyphen( - filter_firewall_interface_policy6_data(firewall_interface_policy6_data) + filtered_data = filter_firewall_interface_policy6_data( + firewall_interface_policy6_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -540,7 +547,7 @@ def firewall_interface_policy6(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall", "interface-policy6", data=filtered_data, vdom=vdom) + return fos.set("firewall", "interface-policy6", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( @@ -586,6 +593,7 @@ versioned_schema = { "elements": "dict", "children": { "policyid": {"v_range": [["v6.0.0", ""]], "type": "integer", "required": True}, + "uuid": {"v_range": [["v7.4.2", ""]], "type": "string"}, "status": { "v_range": [["v6.0.0", ""]], "type": "string", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service.py index cd678ebdb..ef774e149 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -343,9 +343,10 @@ def firewall_internet_service(data, fos, check_mode=False): state = data["state"] firewall_internet_service_data = data["firewall_internet_service"] - filtered_data = underscore_to_hyphen( - filter_firewall_internet_service_data(firewall_internet_service_data) + filtered_data = filter_firewall_internet_service_data( + firewall_internet_service_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -409,7 +410,7 @@ def firewall_internet_service(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall", "internet-service", data=filtered_data, vdom=vdom) + return fos.set("firewall", "internet-service", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_addition.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_addition.py index 0092a76ea..5330fde64 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_addition.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_addition.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -283,11 +283,10 @@ def firewall_internet_service_addition(data, fos, check_mode=False): state = data["state"] firewall_internet_service_addition_data = data["firewall_internet_service_addition"] - filtered_data = underscore_to_hyphen( - filter_firewall_internet_service_addition_data( - firewall_internet_service_addition_data - ) + filtered_data = filter_firewall_internet_service_addition_data( + firewall_internet_service_addition_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -356,7 +355,7 @@ def firewall_internet_service_addition(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "firewall", "internet-service-addition", data=filtered_data, vdom=vdom + "firewall", "internet-service-addition", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_append.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_append.py index c85ed1763..6b713b941 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_append.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_append.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -216,13 +216,14 @@ def underscore_to_hyphen(data): def firewall_internet_service_append(data, fos): vdom = data["vdom"] firewall_internet_service_append_data = data["firewall_internet_service_append"] - filtered_data = underscore_to_hyphen( - filter_firewall_internet_service_append_data( - firewall_internet_service_append_data - ) + filtered_data = filter_firewall_internet_service_append_data( + firewall_internet_service_append_data ) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("firewall", "internet-service-append", data=filtered_data, vdom=vdom) + return fos.set( + "firewall", "internet-service-append", data=converted_data, vdom=vdom + ) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_botnet.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_botnet.py index fc96218b1..121519bdf 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_botnet.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_botnet.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -232,11 +232,10 @@ def firewall_internet_service_botnet(data, fos, check_mode=False): state = data["state"] firewall_internet_service_botnet_data = data["firewall_internet_service_botnet"] - filtered_data = underscore_to_hyphen( - filter_firewall_internet_service_botnet_data( - firewall_internet_service_botnet_data - ) + filtered_data = filter_firewall_internet_service_botnet_data( + firewall_internet_service_botnet_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -305,7 +304,7 @@ def firewall_internet_service_botnet(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "firewall", "internet-service-botnet", data=filtered_data, vdom=vdom + "firewall", "internet-service-botnet", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_custom.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_custom.py index a47519849..cdab87e2a 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_custom.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_custom.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -376,11 +376,10 @@ def firewall_internet_service_custom(data, fos, check_mode=False): state = data["state"] firewall_internet_service_custom_data = data["firewall_internet_service_custom"] - filtered_data = underscore_to_hyphen( - filter_firewall_internet_service_custom_data( - firewall_internet_service_custom_data - ) + filtered_data = filter_firewall_internet_service_custom_data( + firewall_internet_service_custom_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -449,7 +448,7 @@ def firewall_internet_service_custom(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "firewall", "internet-service-custom", data=filtered_data, vdom=vdom + "firewall", "internet-service-custom", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_custom_group.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_custom_group.py index 7a647731b..9b2f42f53 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_custom_group.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_custom_group.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -246,11 +246,10 @@ def firewall_internet_service_custom_group(data, fos, check_mode=False): firewall_internet_service_custom_group_data = data[ "firewall_internet_service_custom_group" ] - filtered_data = underscore_to_hyphen( - filter_firewall_internet_service_custom_group_data( - firewall_internet_service_custom_group_data - ) + filtered_data = filter_firewall_internet_service_custom_group_data( + firewall_internet_service_custom_group_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -319,7 +318,7 @@ def firewall_internet_service_custom_group(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "firewall", "internet-service-custom-group", data=filtered_data, vdom=vdom + "firewall", "internet-service-custom-group", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_definition.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_definition.py index f85f08b7b..252317dac 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_definition.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_definition.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -282,11 +282,10 @@ def firewall_internet_service_definition(data, fos, check_mode=False): firewall_internet_service_definition_data = data[ "firewall_internet_service_definition" ] - filtered_data = underscore_to_hyphen( - filter_firewall_internet_service_definition_data( - firewall_internet_service_definition_data - ) + filtered_data = filter_firewall_internet_service_definition_data( + firewall_internet_service_definition_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -355,7 +354,7 @@ def firewall_internet_service_definition(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "firewall", "internet-service-definition", data=filtered_data, vdom=vdom + "firewall", "internet-service-definition", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_extension.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_extension.py index c9c97ceed..7cff4eddc 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_extension.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_extension.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -414,11 +414,10 @@ def firewall_internet_service_extension(data, fos, check_mode=False): firewall_internet_service_extension_data = data[ "firewall_internet_service_extension" ] - filtered_data = underscore_to_hyphen( - filter_firewall_internet_service_extension_data( - firewall_internet_service_extension_data - ) + filtered_data = filter_firewall_internet_service_extension_data( + firewall_internet_service_extension_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -487,7 +486,7 @@ def firewall_internet_service_extension(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "firewall", "internet-service-extension", data=filtered_data, vdom=vdom + "firewall", "internet-service-extension", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_group.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_group.py index a40dd9482..f64ff19b1 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_group.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_group.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -258,11 +258,10 @@ def firewall_internet_service_group(data, fos, check_mode=False): state = data["state"] firewall_internet_service_group_data = data["firewall_internet_service_group"] - filtered_data = underscore_to_hyphen( - filter_firewall_internet_service_group_data( - firewall_internet_service_group_data - ) + filtered_data = filter_firewall_internet_service_group_data( + firewall_internet_service_group_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -331,7 +330,7 @@ def firewall_internet_service_group(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "firewall", "internet-service-group", data=filtered_data, vdom=vdom + "firewall", "internet-service-group", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_ipbl_reason.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_ipbl_reason.py index 7999e8800..f527562b3 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_ipbl_reason.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_ipbl_reason.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -234,11 +234,10 @@ def firewall_internet_service_ipbl_reason(data, fos, check_mode=False): firewall_internet_service_ipbl_reason_data = data[ "firewall_internet_service_ipbl_reason" ] - filtered_data = underscore_to_hyphen( - filter_firewall_internet_service_ipbl_reason_data( - firewall_internet_service_ipbl_reason_data - ) + filtered_data = filter_firewall_internet_service_ipbl_reason_data( + firewall_internet_service_ipbl_reason_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -307,7 +306,7 @@ def firewall_internet_service_ipbl_reason(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "firewall", "internet-service-ipbl-reason", data=filtered_data, vdom=vdom + "firewall", "internet-service-ipbl-reason", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_ipbl_vendor.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_ipbl_vendor.py index 7047dc742..bcae3b08c 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_ipbl_vendor.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_ipbl_vendor.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -234,11 +234,10 @@ def firewall_internet_service_ipbl_vendor(data, fos, check_mode=False): firewall_internet_service_ipbl_vendor_data = data[ "firewall_internet_service_ipbl_vendor" ] - filtered_data = underscore_to_hyphen( - filter_firewall_internet_service_ipbl_vendor_data( - firewall_internet_service_ipbl_vendor_data - ) + filtered_data = filter_firewall_internet_service_ipbl_vendor_data( + firewall_internet_service_ipbl_vendor_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -307,7 +306,7 @@ def firewall_internet_service_ipbl_vendor(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "firewall", "internet-service-ipbl-vendor", data=filtered_data, vdom=vdom + "firewall", "internet-service-ipbl-vendor", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_list.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_list.py index fc8df6e28..af3635bb5 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_list.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_list.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -232,9 +232,10 @@ def firewall_internet_service_list(data, fos, check_mode=False): state = data["state"] firewall_internet_service_list_data = data["firewall_internet_service_list"] - filtered_data = underscore_to_hyphen( - filter_firewall_internet_service_list_data(firewall_internet_service_list_data) + filtered_data = filter_firewall_internet_service_list_data( + firewall_internet_service_list_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -303,7 +304,7 @@ def firewall_internet_service_list(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "firewall", "internet-service-list", data=filtered_data, vdom=vdom + "firewall", "internet-service-list", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_name.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_name.py index 7fe80c70f..e88111e0e 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_name.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_name.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -260,9 +260,10 @@ def firewall_internet_service_name(data, fos, check_mode=False): state = data["state"] firewall_internet_service_name_data = data["firewall_internet_service_name"] - filtered_data = underscore_to_hyphen( - filter_firewall_internet_service_name_data(firewall_internet_service_name_data) + filtered_data = filter_firewall_internet_service_name_data( + firewall_internet_service_name_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -331,7 +332,7 @@ def firewall_internet_service_name(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "firewall", "internet-service-name", data=filtered_data, vdom=vdom + "firewall", "internet-service-name", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_owner.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_owner.py index 00c4a98c3..697fc13ff 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_owner.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_owner.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -232,11 +232,10 @@ def firewall_internet_service_owner(data, fos, check_mode=False): state = data["state"] firewall_internet_service_owner_data = data["firewall_internet_service_owner"] - filtered_data = underscore_to_hyphen( - filter_firewall_internet_service_owner_data( - firewall_internet_service_owner_data - ) + filtered_data = filter_firewall_internet_service_owner_data( + firewall_internet_service_owner_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -305,7 +304,7 @@ def firewall_internet_service_owner(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "firewall", "internet-service-owner", data=filtered_data, vdom=vdom + "firewall", "internet-service-owner", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_reputation.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_reputation.py index 4f14c2ccb..66a112d0d 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_reputation.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_reputation.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -234,11 +234,10 @@ def firewall_internet_service_reputation(data, fos, check_mode=False): firewall_internet_service_reputation_data = data[ "firewall_internet_service_reputation" ] - filtered_data = underscore_to_hyphen( - filter_firewall_internet_service_reputation_data( - firewall_internet_service_reputation_data - ) + filtered_data = filter_firewall_internet_service_reputation_data( + firewall_internet_service_reputation_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -307,7 +306,7 @@ def firewall_internet_service_reputation(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "firewall", "internet-service-reputation", data=filtered_data, vdom=vdom + "firewall", "internet-service-reputation", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_sld.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_sld.py index 44fd072d7..342bd3821 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_sld.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_internet_service_sld.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -232,9 +232,10 @@ def firewall_internet_service_sld(data, fos, check_mode=False): state = data["state"] firewall_internet_service_sld_data = data["firewall_internet_service_sld"] - filtered_data = underscore_to_hyphen( - filter_firewall_internet_service_sld_data(firewall_internet_service_sld_data) + filtered_data = filter_firewall_internet_service_sld_data( + firewall_internet_service_sld_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -301,7 +302,7 @@ def firewall_internet_service_sld(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "firewall", "internet-service-sld", data=filtered_data, vdom=vdom + "firewall", "internet-service-sld", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ip_translation.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ip_translation.py index d5a86f9c9..0f7ae5d03 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ip_translation.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ip_translation.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -249,9 +249,8 @@ def firewall_ip_translation(data, fos, check_mode=False): state = data["state"] firewall_ip_translation_data = data["firewall_ip_translation"] - filtered_data = underscore_to_hyphen( - filter_firewall_ip_translation_data(firewall_ip_translation_data) - ) + filtered_data = filter_firewall_ip_translation_data(firewall_ip_translation_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -315,7 +314,7 @@ def firewall_ip_translation(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall", "ip-translation", data=filtered_data, vdom=vdom) + return fos.set("firewall", "ip-translation", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ipmacbinding_setting.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ipmacbinding_setting.py index 2a0a8254e..7b01e5c32 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ipmacbinding_setting.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ipmacbinding_setting.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -221,11 +221,12 @@ def underscore_to_hyphen(data): def firewall_ipmacbinding_setting(data, fos): vdom = data["vdom"] firewall_ipmacbinding_setting_data = data["firewall_ipmacbinding_setting"] - filtered_data = underscore_to_hyphen( - filter_firewall_ipmacbinding_setting_data(firewall_ipmacbinding_setting_data) + filtered_data = filter_firewall_ipmacbinding_setting_data( + firewall_ipmacbinding_setting_data ) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("firewall.ipmacbinding", "setting", data=filtered_data, vdom=vdom) + return fos.set("firewall.ipmacbinding", "setting", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ipmacbinding_table.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ipmacbinding_table.py index 405168349..b14e2fc95 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ipmacbinding_table.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ipmacbinding_table.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -250,9 +250,10 @@ def firewall_ipmacbinding_table(data, fos, check_mode=False): state = data["state"] firewall_ipmacbinding_table_data = data["firewall_ipmacbinding_table"] - filtered_data = underscore_to_hyphen( - filter_firewall_ipmacbinding_table_data(firewall_ipmacbinding_table_data) + filtered_data = filter_firewall_ipmacbinding_table_data( + firewall_ipmacbinding_table_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -316,7 +317,7 @@ def firewall_ipmacbinding_table(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall.ipmacbinding", "table", data=filtered_data, vdom=vdom) + return fos.set("firewall.ipmacbinding", "table", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ippool.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ippool.py index 9c633222b..bec2ec72d 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ippool.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ippool.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -182,7 +182,7 @@ options: - 'enable' type: description: - - IP pool type (overload, one-to-one, fixed port range, or port block allocation). + - 'IP pool type: overload, one-to-one, fixed-port-range, port-block-allocation, cgn-resource-allocation (hyperscale vdom only)' type: str choices: - 'overload' @@ -361,9 +361,8 @@ def firewall_ippool(data, fos, check_mode=False): state = data["state"] firewall_ippool_data = data["firewall_ippool"] - filtered_data = underscore_to_hyphen( - filter_firewall_ippool_data(firewall_ippool_data) - ) + filtered_data = filter_firewall_ippool_data(firewall_ippool_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -427,7 +426,7 @@ def firewall_ippool(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall", "ippool", data=filtered_data, vdom=vdom) + return fos.set("firewall", "ippool", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("firewall", "ippool", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ippool6.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ippool6.py index 3ec84ca6d..f621717ec 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ippool6.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ippool6.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -256,9 +256,8 @@ def firewall_ippool6(data, fos, check_mode=False): state = data["state"] firewall_ippool6_data = data["firewall_ippool6"] - filtered_data = underscore_to_hyphen( - filter_firewall_ippool6_data(firewall_ippool6_data) - ) + filtered_data = filter_firewall_ippool6_data(firewall_ippool6_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -322,7 +321,7 @@ def firewall_ippool6(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall", "ippool6", data=filtered_data, vdom=vdom) + return fos.set("firewall", "ippool6", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("firewall", "ippool6", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_iprope_list.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_iprope_list.py index 39dc763e9..d5769f6d4 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_iprope_list.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_iprope_list.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -200,9 +200,9 @@ def underscore_to_hyphen(data): def valid_attr_to_invalid_attr(data): - specillist = {"<group_number>": "group_number"} + speciallist = {"<group_number>": "group_number"} - for k, v in specillist.items(): + for k, v in speciallist.items(): if v == data: return k @@ -211,8 +211,11 @@ def valid_attr_to_invalid_attr(data): def valid_attr_to_invalid_attrs(data): if isinstance(data, list): + new_data = [] for elem in data: elem = valid_attr_to_invalid_attrs(elem) + new_data.append(elem) + data = new_data elif isinstance(data, dict): new_data = {} for k, v in data.items(): @@ -225,10 +228,8 @@ def valid_attr_to_invalid_attrs(data): def firewall_iprope_list(data, fos): vdom = data["vdom"] firewall_iprope_list_data = data["firewall_iprope_list"] - filtered_data = underscore_to_hyphen( - filter_firewall_iprope_list_data(firewall_iprope_list_data) - ) - converted_data = valid_attr_to_invalid_attrs(filtered_data) + filtered_data = filter_firewall_iprope_list_data(firewall_iprope_list_data) + converted_data = underscore_to_hyphen(valid_attr_to_invalid_attrs(filtered_data)) return fos.set("firewall.iprope", "list", data=converted_data, vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ipv6_eh_filter.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ipv6_eh_filter.py index 9ffaf05ad..bebbb16e9 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ipv6_eh_filter.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ipv6_eh_filter.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -299,11 +299,10 @@ def firewall_ipv6_eh_filter(data, fos): firewall_ipv6_eh_filter_data = flatten_multilists_attributes( firewall_ipv6_eh_filter_data ) - filtered_data = underscore_to_hyphen( - filter_firewall_ipv6_eh_filter_data(firewall_ipv6_eh_filter_data) - ) + filtered_data = filter_firewall_ipv6_eh_filter_data(firewall_ipv6_eh_filter_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("firewall", "ipv6-eh-filter", data=filtered_data, vdom=vdom) + return fos.set("firewall", "ipv6-eh-filter", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ldb_monitor.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ldb_monitor.py index 3b663fff1..379619245 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ldb_monitor.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ldb_monitor.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -309,9 +309,8 @@ def firewall_ldb_monitor(data, fos, check_mode=False): state = data["state"] firewall_ldb_monitor_data = data["firewall_ldb_monitor"] - filtered_data = underscore_to_hyphen( - filter_firewall_ldb_monitor_data(firewall_ldb_monitor_data) - ) + filtered_data = filter_firewall_ldb_monitor_data(firewall_ldb_monitor_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -375,7 +374,7 @@ def firewall_ldb_monitor(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall", "ldb-monitor", data=filtered_data, vdom=vdom) + return fos.set("firewall", "ldb-monitor", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( @@ -430,7 +429,11 @@ versioned_schema = { {"value": "dns", "v_range": [["v7.0.0", ""]]}, { "value": "passive-sip", - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], }, ], }, diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_local_in_policy.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_local_in_policy.py index 19732d4ab..ad3b80368 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_local_in_policy.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_local_in_policy.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -130,6 +130,17 @@ options: description: - Incoming interface name from available options. Source system.zone.name system.interface.name. type: str + intf_dict: + description: + - Incoming interface name from available options. Use the parameter intf if the fortiOS firmware version <= 7.4.1 + type: list + elements: dict + suboptions: + name: + description: + - Address name. Source system.zone.name system.interface.name. + required: true + type: str policyid: description: - User defined local in policy ID. see <a href='#notes'>Notes</a>. @@ -211,15 +222,18 @@ EXAMPLES = """ dstaddr_negate: "enable" ha_mgmt_intf_only: "enable" intf: "<your_own_value> (source system.zone.name system.interface.name)" + intf_dict: + - + name: "default_name_11 (source system.zone.name system.interface.name)" policyid: "<you_own_value>" schedule: "<your_own_value> (source firewall.schedule.onetime.name firewall.schedule.recurring.name firewall.schedule.group.name)" service: - - name: "default_name_13 (source firewall.service.custom.name firewall.service.group.name)" + name: "default_name_15 (source firewall.service.custom.name firewall.service.group.name)" service_negate: "enable" srcaddr: - - name: "default_name_16 (source firewall.address.name firewall.addrgrp.name system.external-resource.name)" + name: "default_name_18 (source firewall.address.name firewall.addrgrp.name system.external-resource.name)" srcaddr_negate: "enable" status: "enable" uuid: "<your_own_value>" @@ -322,6 +336,7 @@ def filter_firewall_local_in_policy_data(json): "dstaddr_negate", "ha_mgmt_intf_only", "intf", + "intf_dict", "policyid", "schedule", "service", @@ -356,15 +371,39 @@ def underscore_to_hyphen(data): return data +def remap_attribute_name(data): + speciallist = {"intf-dict": "intf"} + + if data in speciallist: + return speciallist[data] + return data + + +def remap_attribute_names(data): + if isinstance(data, list): + new_data = [] + for elem in data: + elem = remap_attribute_names(elem) + new_data.append(elem) + data = new_data + elif isinstance(data, dict): + new_data = {} + for k, v in data.items(): + new_data[remap_attribute_name(k)] = remap_attribute_names(v) + data = new_data + + return data + + def firewall_local_in_policy(data, fos, check_mode=False): vdom = data["vdom"] state = data["state"] firewall_local_in_policy_data = data["firewall_local_in_policy"] - filtered_data = underscore_to_hyphen( - filter_firewall_local_in_policy_data(firewall_local_in_policy_data) - ) + filtered_data = filter_firewall_local_in_policy_data(firewall_local_in_policy_data) + converted_data = underscore_to_hyphen(filtered_data) + converted_data = remap_attribute_names(converted_data) # check_mode starts from here if check_mode: @@ -428,7 +467,7 @@ def firewall_local_in_policy(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall", "local-in-policy", data=filtered_data, vdom=vdom) + return fos.set("firewall", "local-in-policy", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( @@ -480,7 +519,18 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, - "intf": {"v_range": [["v6.0.0", ""]], "type": "string"}, + "intf_dict": { + "type": "list", + "elements": "dict", + "children": { + "name": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "required": True, + } + }, + "v_range": [["v7.4.2", ""]], + }, "srcaddr": { "type": "list", "elements": "dict", @@ -549,6 +599,7 @@ versioned_schema = { "options": [{"value": "enable"}, {"value": "disable"}], }, "comments": {"v_range": [["v6.0.0", ""]], "type": "string"}, + "intf": {"v_range": [["v6.0.0", "v7.4.1"]], "type": "string"}, }, "v_range": [["v6.0.0", ""]], } diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_local_in_policy6.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_local_in_policy6.py index 166a3a11f..23b0b56b6 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_local_in_policy6.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_local_in_policy6.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -123,6 +123,17 @@ options: description: - Incoming interface name from available options. Source system.zone.name system.interface.name. type: str + intf_dict: + description: + - Incoming interface name from available options. Use the parameter intf if the fortiOS firmware version <= 7.4.1 + type: list + elements: dict + suboptions: + name: + description: + - Address name. Source system.zone.name system.interface.name. + required: true + type: str policyid: description: - User defined local in policy ID. see <a href='#notes'>Notes</a>. @@ -203,15 +214,18 @@ EXAMPLES = """ name: "default_name_6 (source firewall.address6.name firewall.addrgrp6.name system.external-resource.name)" dstaddr_negate: "enable" intf: "<your_own_value> (source system.zone.name system.interface.name)" + intf_dict: + - + name: "default_name_10 (source system.zone.name system.interface.name)" policyid: "<you_own_value>" schedule: "<your_own_value> (source firewall.schedule.onetime.name firewall.schedule.recurring.name firewall.schedule.group.name)" service: - - name: "default_name_12 (source firewall.service.custom.name firewall.service.group.name)" + name: "default_name_14 (source firewall.service.custom.name firewall.service.group.name)" service_negate: "enable" srcaddr: - - name: "default_name_15 (source firewall.address6.name firewall.addrgrp6.name system.external-resource.name)" + name: "default_name_17 (source firewall.address6.name firewall.addrgrp6.name system.external-resource.name)" srcaddr_negate: "enable" status: "enable" uuid: "<your_own_value>" @@ -313,6 +327,7 @@ def filter_firewall_local_in_policy6_data(json): "dstaddr", "dstaddr_negate", "intf", + "intf_dict", "policyid", "schedule", "service", @@ -347,15 +362,41 @@ def underscore_to_hyphen(data): return data +def remap_attribute_name(data): + speciallist = {"intf-dict": "intf"} + + if data in speciallist: + return speciallist[data] + return data + + +def remap_attribute_names(data): + if isinstance(data, list): + new_data = [] + for elem in data: + elem = remap_attribute_names(elem) + new_data.append(elem) + data = new_data + elif isinstance(data, dict): + new_data = {} + for k, v in data.items(): + new_data[remap_attribute_name(k)] = remap_attribute_names(v) + data = new_data + + return data + + def firewall_local_in_policy6(data, fos, check_mode=False): vdom = data["vdom"] state = data["state"] firewall_local_in_policy6_data = data["firewall_local_in_policy6"] - filtered_data = underscore_to_hyphen( - filter_firewall_local_in_policy6_data(firewall_local_in_policy6_data) + filtered_data = filter_firewall_local_in_policy6_data( + firewall_local_in_policy6_data ) + converted_data = underscore_to_hyphen(filtered_data) + converted_data = remap_attribute_names(converted_data) # check_mode starts from here if check_mode: @@ -419,7 +460,7 @@ def firewall_local_in_policy6(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall", "local-in-policy6", data=filtered_data, vdom=vdom) + return fos.set("firewall", "local-in-policy6", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( @@ -466,7 +507,18 @@ versioned_schema = { "children": { "policyid": {"v_range": [["v6.0.0", ""]], "type": "integer", "required": True}, "uuid": {"v_range": [["v6.4.0", ""]], "type": "string"}, - "intf": {"v_range": [["v6.0.0", ""]], "type": "string"}, + "intf_dict": { + "type": "list", + "elements": "dict", + "children": { + "name": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "required": True, + } + }, + "v_range": [["v7.4.2", ""]], + }, "srcaddr": { "type": "list", "elements": "dict", @@ -535,6 +587,7 @@ versioned_schema = { "options": [{"value": "enable"}, {"value": "disable"}], }, "comments": {"v_range": [["v6.0.0", ""]], "type": "string"}, + "intf": {"v_range": [["v6.0.0", "v7.4.1"]], "type": "string"}, }, "v_range": [["v6.0.0", ""]], } diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_mms_profile.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_mms_profile.py index a69ad1e3e..3ef9d6377 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_mms_profile.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_mms_profile.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -1230,12 +1230,11 @@ def firewall_mms_profile(data, fos): firewall_mms_profile_data = data["firewall_mms_profile"] firewall_mms_profile_data = flatten_multilists_attributes(firewall_mms_profile_data) - filtered_data = underscore_to_hyphen( - filter_firewall_mms_profile_data(firewall_mms_profile_data) - ) + filtered_data = filter_firewall_mms_profile_data(firewall_mms_profile_data) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: - return fos.set("firewall", "mms-profile", data=filtered_data, vdom=vdom) + return fos.set("firewall", "mms-profile", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_multicast_address.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_multicast_address.py index a001b0e73..41d9b45df 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_multicast_address.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_multicast_address.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -316,9 +316,10 @@ def firewall_multicast_address(data, fos, check_mode=False): state = data["state"] firewall_multicast_address_data = data["firewall_multicast_address"] - filtered_data = underscore_to_hyphen( - filter_firewall_multicast_address_data(firewall_multicast_address_data) + filtered_data = filter_firewall_multicast_address_data( + firewall_multicast_address_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -382,7 +383,7 @@ def firewall_multicast_address(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall", "multicast-address", data=filtered_data, vdom=vdom) + return fos.set("firewall", "multicast-address", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_multicast_address6.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_multicast_address6.py index 4c57af20c..ef3a925b2 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_multicast_address6.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_multicast_address6.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -281,9 +281,10 @@ def firewall_multicast_address6(data, fos, check_mode=False): state = data["state"] firewall_multicast_address6_data = data["firewall_multicast_address6"] - filtered_data = underscore_to_hyphen( - filter_firewall_multicast_address6_data(firewall_multicast_address6_data) + filtered_data = filter_firewall_multicast_address6_data( + firewall_multicast_address6_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -347,7 +348,7 @@ def firewall_multicast_address6(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall", "multicast-address6", data=filtered_data, vdom=vdom) + return fos.set("firewall", "multicast-address6", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_multicast_policy.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_multicast_policy.py index 2d4fade7c..7c3e4efaf 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_multicast_policy.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_multicast_policy.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -136,13 +136,19 @@ options: - Policy ID ((0 - 4294967294). see <a href='#notes'>Notes</a>. required: true type: int + ips_sensor: + description: + - Name of an existing IPS sensor. Source ips.sensor.name. + type: str logtraffic: description: - - Enable/disable logging traffic accepted by this policy. + - Enable or disable logging. Log all sessions or security profile sessions. type: str choices: - - 'enable' + - 'all' + - 'utm' - 'disable' + - 'enable' name: description: - Policy name. @@ -192,6 +198,13 @@ options: description: - Traffic shaper to apply to traffic forwarded by the multicast policy. Source firewall.shaper.traffic-shaper.name. type: str + utm_status: + description: + - Enable to add an IPS security profile to the policy. + type: str + choices: + - 'enable' + - 'disable' uuid: description: - Universally Unique Identifier (UUID; automatically assigned but can be manually reset). @@ -215,18 +228,20 @@ EXAMPLES = """ dstintf: "<your_own_value> (source system.interface.name system.zone.name)" end_port: "65535" id: "11" - logtraffic: "enable" - name: "default_name_13" + ips_sensor: "<your_own_value> (source ips.sensor.name)" + logtraffic: "all" + name: "default_name_14" protocol: "0" snat: "enable" snat_ip: "<your_own_value>" srcaddr: - - name: "default_name_18 (source firewall.address.name firewall.addrgrp.name)" + name: "default_name_19 (source firewall.address.name firewall.addrgrp.name)" srcintf: "<your_own_value> (source system.interface.name system.zone.name)" start_port: "1" status: "enable" traffic_shaper: "<your_own_value> (source firewall.shaper.traffic-shaper.name)" + utm_status: "enable" uuid: "<your_own_value>" """ @@ -328,6 +343,7 @@ def filter_firewall_multicast_policy_data(json): "dstintf", "end_port", "id", + "ips_sensor", "logtraffic", "name", "protocol", @@ -338,6 +354,7 @@ def filter_firewall_multicast_policy_data(json): "start_port", "status", "traffic_shaper", + "utm_status", "uuid", ] @@ -370,9 +387,10 @@ def firewall_multicast_policy(data, fos, check_mode=False): state = data["state"] firewall_multicast_policy_data = data["firewall_multicast_policy"] - filtered_data = underscore_to_hyphen( - filter_firewall_multicast_policy_data(firewall_multicast_policy_data) + filtered_data = filter_firewall_multicast_policy_data( + firewall_multicast_policy_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -436,7 +454,7 @@ def firewall_multicast_policy(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall", "multicast-policy", data=filtered_data, vdom=vdom) + return fos.set("firewall", "multicast-policy", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( @@ -490,11 +508,6 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, - "logtraffic": { - "v_range": [["v6.0.0", ""]], - "type": "string", - "options": [{"value": "enable"}, {"value": "disable"}], - }, "srcintf": {"v_range": [["v6.0.0", ""]], "type": "string"}, "dstintf": {"v_range": [["v6.0.0", ""]], "type": "string"}, "srcaddr": { @@ -536,6 +549,22 @@ versioned_schema = { "protocol": {"v_range": [["v6.0.0", ""]], "type": "integer"}, "start_port": {"v_range": [["v6.0.0", ""]], "type": "integer"}, "end_port": {"v_range": [["v6.0.0", ""]], "type": "integer"}, + "utm_status": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "ips_sensor": {"v_range": [["v7.4.2", ""]], "type": "string"}, + "logtraffic": { + "v_range": [["v6.0.0", ""]], + "type": "string", + "options": [ + {"value": "all", "v_range": [["v7.4.2", ""]]}, + {"value": "utm", "v_range": [["v7.4.2", ""]]}, + {"value": "disable"}, + {"value": "enable", "v_range": [["v6.0.0", "v7.4.1"]]}, + ], + }, "auto_asic_offload": { "v_range": [["v6.0.0", ""]], "type": "string", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_multicast_policy6.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_multicast_policy6.py index a1479f852..ed36a9f2a 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_multicast_policy6.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_multicast_policy6.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -132,13 +132,19 @@ options: - Policy ID (0 - 4294967294). see <a href='#notes'>Notes</a>. required: true type: int + ips_sensor: + description: + - Name of an existing IPS sensor. Source ips.sensor.name. + type: str logtraffic: description: - - Enable/disable logging traffic accepted by this policy. + - Enable or disable logging. Log all sessions or security profile sessions. type: str choices: - - 'enable' + - 'all' + - 'utm' - 'disable' + - 'enable' name: description: - Policy name. @@ -173,6 +179,13 @@ options: choices: - 'enable' - 'disable' + utm_status: + description: + - Enable to add an IPS security profile to the policy. + type: str + choices: + - 'enable' + - 'disable' uuid: description: - Universally Unique Identifier (UUID; automatically assigned but can be manually reset). @@ -195,15 +208,17 @@ EXAMPLES = """ dstintf: "<your_own_value> (source system.interface.name system.zone.name)" end_port: "65535" id: "10" - logtraffic: "enable" - name: "default_name_12" + ips_sensor: "<your_own_value> (source ips.sensor.name)" + logtraffic: "all" + name: "default_name_13" protocol: "0" srcaddr: - - name: "default_name_15 (source firewall.address6.name firewall.addrgrp6.name)" + name: "default_name_16 (source firewall.address6.name firewall.addrgrp6.name)" srcintf: "<your_own_value> (source system.interface.name system.zone.name)" start_port: "1" status: "enable" + utm_status: "enable" uuid: "<your_own_value>" """ @@ -304,6 +319,7 @@ def filter_firewall_multicast_policy6_data(json): "dstintf", "end_port", "id", + "ips_sensor", "logtraffic", "name", "protocol", @@ -311,6 +327,7 @@ def filter_firewall_multicast_policy6_data(json): "srcintf", "start_port", "status", + "utm_status", "uuid", ] @@ -343,9 +360,10 @@ def firewall_multicast_policy6(data, fos, check_mode=False): state = data["state"] firewall_multicast_policy6_data = data["firewall_multicast_policy6"] - filtered_data = underscore_to_hyphen( - filter_firewall_multicast_policy6_data(firewall_multicast_policy6_data) + filtered_data = filter_firewall_multicast_policy6_data( + firewall_multicast_policy6_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -409,7 +427,7 @@ def firewall_multicast_policy6(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall", "multicast-policy6", data=filtered_data, vdom=vdom) + return fos.set("firewall", "multicast-policy6", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( @@ -462,11 +480,6 @@ versioned_schema = { "options": [{"value": "enable"}, {"value": "disable"}], }, "name": {"v_range": [["v6.4.0", "v6.4.0"], ["v6.4.4", ""]], "type": "string"}, - "logtraffic": { - "v_range": [["v6.0.0", ""]], - "type": "string", - "options": [{"value": "enable"}, {"value": "disable"}], - }, "srcintf": {"v_range": [["v6.0.0", ""]], "type": "string"}, "dstintf": {"v_range": [["v6.0.0", ""]], "type": "string"}, "srcaddr": { @@ -501,6 +514,22 @@ versioned_schema = { "protocol": {"v_range": [["v6.0.0", ""]], "type": "integer"}, "start_port": {"v_range": [["v6.0.0", ""]], "type": "integer"}, "end_port": {"v_range": [["v6.0.0", ""]], "type": "integer"}, + "utm_status": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "ips_sensor": {"v_range": [["v7.4.2", ""]], "type": "string"}, + "logtraffic": { + "v_range": [["v6.0.0", ""]], + "type": "string", + "options": [ + {"value": "all", "v_range": [["v7.4.2", ""]]}, + {"value": "utm", "v_range": [["v7.4.2", ""]]}, + {"value": "disable"}, + {"value": "enable", "v_range": [["v6.0.0", "v7.4.1"]]}, + ], + }, "auto_asic_offload": { "v_range": [["v6.0.0", ""]], "type": "string", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_network_service_dynamic.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_network_service_dynamic.py index 57157cf69..1ed2b19ed 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_network_service_dynamic.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_network_service_dynamic.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -231,15 +231,14 @@ def firewall_network_service_dynamic(data, fos): state = data["state"] firewall_network_service_dynamic_data = data["firewall_network_service_dynamic"] - filtered_data = underscore_to_hyphen( - filter_firewall_network_service_dynamic_data( - firewall_network_service_dynamic_data - ) + filtered_data = filter_firewall_network_service_dynamic_data( + firewall_network_service_dynamic_data ) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: return fos.set( - "firewall", "network-service-dynamic", data=filtered_data, vdom=vdom + "firewall", "network-service-dynamic", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_pfcp.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_pfcp.py index f8f14258f..a7dc22a02 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_pfcp.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_pfcp.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -303,10 +303,11 @@ def firewall_pfcp(data, fos): state = data["state"] firewall_pfcp_data = data["firewall_pfcp"] - filtered_data = underscore_to_hyphen(filter_firewall_pfcp_data(firewall_pfcp_data)) + filtered_data = filter_firewall_pfcp_data(firewall_pfcp_data) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: - return fos.set("firewall", "pfcp", data=filtered_data, vdom=vdom) + return fos.set("firewall", "pfcp", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("firewall", "pfcp", mkey=filtered_data["name"], vdom=vdom) @@ -347,62 +348,62 @@ versioned_schema = { "elements": "dict", "children": { "name": { - "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "required": True, }, "min_message_length": { - "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "integer", }, "max_message_length": { - "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "integer", }, "monitor_mode": { - "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}, {"value": "vdom"}], }, "message_filter": { - "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", }, "pfcp_timeout": { - "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "integer", }, "unknown_version": { - "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "invalid_reserved_field": { - "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "forwarded_log": { - "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, "denied_log": { - "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, "traffic_count_log": { - "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, "log_freq": { - "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "integer", }, }, - "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], } diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_policy.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_policy.py index 422220b53..3799f92cf 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_policy.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_policy.py @@ -42,7 +42,7 @@ notes: - Only one of [after, before] must be specified when action is moving an object. requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -254,6 +254,10 @@ options: - Device or group name. Source user.device.alias user.device-group.name user.device-category.name. required: true type: str + diameter_filter_profile: + description: + - Name of an existing Diameter filter profile. Source diameter-filter.profile.name. + type: str diffserv_copy: description: - Enable to copy packet"s DiffServ values from session"s original direction to its reply direction. @@ -1548,6 +1552,7 @@ EXAMPLES = """ devices: - name: "default_name_28 (source user.device.alias user.device-group.name user.device-category.name)" + diameter_filter_profile: "<your_own_value> (source diameter-filter.profile.name)" diffserv_copy: "enable" diffserv_forward: "enable" diffserv_reverse: "enable" @@ -1563,17 +1568,17 @@ EXAMPLES = """ dsri: "enable" dstaddr: - - name: "default_name_43 (source firewall.address.name firewall.addrgrp.name firewall.vip.name firewall.vipgrp.name system.external-resource + name: "default_name_44 (source firewall.address.name firewall.addrgrp.name firewall.vip.name firewall.vipgrp.name system.external-resource .name)" dstaddr_negate: "enable" dstaddr6: - - name: "default_name_46 (source firewall.address6.name firewall.vipgrp6.name firewall.vip6.name system.external-resource.name firewall + name: "default_name_47 (source firewall.address6.name firewall.vipgrp6.name firewall.vip6.name system.external-resource.name firewall .addrgrp6.name)" dstaddr6_negate: "enable" dstintf: - - name: "default_name_49 (source system.interface.name system.zone.name system.sdwan.zone.name)" + name: "default_name_50 (source system.interface.name system.zone.name system.sdwan.zone.name)" dynamic_shaping: "enable" email_collect: "enable" emailfilter_profile: "<your_own_value> (source emailfilter.profile.name)" @@ -1585,13 +1590,13 @@ EXAMPLES = """ fsso_agent_for_ntlm: "<your_own_value> (source user.fsso.name)" fsso_groups: - - name: "default_name_60 (source user.adgrp.name)" + name: "default_name_61 (source user.adgrp.name)" geoip_anycast: "enable" geoip_match: "physical-location" global_label: "<your_own_value>" groups: - - name: "default_name_65 (source user.group.name)" + name: "default_name_66 (source user.group.name)" gtp_profile: "<your_own_value> (source firewall.gtp.name)" http_policy_redirect: "enable" icap_profile: "<your_own_value> (source icap.profile.name)" @@ -1601,64 +1606,64 @@ EXAMPLES = """ internet_service: "enable" internet_service_custom: - - name: "default_name_74 (source firewall.internet-service-custom.name)" + name: "default_name_75 (source firewall.internet-service-custom.name)" internet_service_custom_group: - - name: "default_name_76 (source firewall.internet-service-custom-group.name)" + name: "default_name_77 (source firewall.internet-service-custom-group.name)" internet_service_group: - - name: "default_name_78 (source firewall.internet-service-group.name)" + name: "default_name_79 (source firewall.internet-service-group.name)" internet_service_id: - - id: "80 (source firewall.internet-service.id)" + id: "81 (source firewall.internet-service.id)" internet_service_name: - - name: "default_name_82 (source firewall.internet-service-name.name)" + name: "default_name_83 (source firewall.internet-service-name.name)" internet_service_negate: "enable" internet_service_src: "enable" internet_service_src_custom: - - name: "default_name_86 (source firewall.internet-service-custom.name)" + name: "default_name_87 (source firewall.internet-service-custom.name)" internet_service_src_custom_group: - - name: "default_name_88 (source firewall.internet-service-custom-group.name)" + name: "default_name_89 (source firewall.internet-service-custom-group.name)" internet_service_src_group: - - name: "default_name_90 (source firewall.internet-service-group.name)" + name: "default_name_91 (source firewall.internet-service-group.name)" internet_service_src_id: - - id: "92 (source firewall.internet-service.id)" + id: "93 (source firewall.internet-service.id)" internet_service_src_name: - - name: "default_name_94 (source firewall.internet-service-name.name)" + name: "default_name_95 (source firewall.internet-service-name.name)" internet_service_src_negate: "enable" internet_service6: "enable" internet_service6_custom: - - name: "default_name_98 (source firewall.internet-service-custom.name)" + name: "default_name_99 (source firewall.internet-service-custom.name)" internet_service6_custom_group: - - name: "default_name_100 (source firewall.internet-service-custom-group.name)" + name: "default_name_101 (source firewall.internet-service-custom-group.name)" internet_service6_group: - - name: "default_name_102 (source firewall.internet-service-group.name)" + name: "default_name_103 (source firewall.internet-service-group.name)" internet_service6_name: - - name: "default_name_104 (source firewall.internet-service-name.name)" + name: "default_name_105 (source firewall.internet-service-name.name)" internet_service6_negate: "enable" internet_service6_src: "enable" internet_service6_src_custom: - - name: "default_name_108 (source firewall.internet-service-custom.name)" + name: "default_name_109 (source firewall.internet-service-custom.name)" internet_service6_src_custom_group: - - name: "default_name_110 (source firewall.internet-service-custom-group.name)" + name: "default_name_111 (source firewall.internet-service-custom-group.name)" internet_service6_src_group: - - name: "default_name_112 (source firewall.internet-service-group.name)" + name: "default_name_113 (source firewall.internet-service-group.name)" internet_service6_src_name: - - name: "default_name_114 (source firewall.internet-service-name.name)" + name: "default_name_115 (source firewall.internet-service-name.name)" internet_service6_src_negate: "enable" ippool: "enable" ips_sensor: "<your_own_value> (source ips.sensor.name)" @@ -1670,7 +1675,7 @@ EXAMPLES = """ match_vip: "enable" match_vip_only: "enable" mms_profile: "<your_own_value> (source firewall.mms-profile.name)" - name: "default_name_126" + name: "default_name_127" nat: "enable" nat46: "enable" nat64: "enable" @@ -1679,10 +1684,10 @@ EXAMPLES = """ natoutbound: "enable" network_service_dynamic: - - name: "default_name_134 (source firewall.network-service-dynamic.name)" + name: "default_name_135 (source firewall.network-service-dynamic.name)" network_service_src_dynamic: - - name: "default_name_136 (source firewall.network-service-dynamic.name)" + name: "default_name_137 (source firewall.network-service-dynamic.name)" np_acceleration: "enable" ntlm: "enable" ntlm_enabled_browsers: @@ -1695,7 +1700,7 @@ EXAMPLES = """ pcp_outbound: "enable" pcp_poolname: - - name: "default_name_147 (source system.pcp-server.pools.name)" + name: "default_name_148 (source system.pcp-server.pools.name)" per_ip_shaper: "<your_own_value> (source firewall.shaper.per-ip-shaper.name)" permit_any_host: "enable" permit_stun_host: "enable" @@ -1706,10 +1711,10 @@ EXAMPLES = """ policyid: "<you_own_value>" poolname: - - name: "default_name_157 (source firewall.ippool.name)" + name: "default_name_158 (source firewall.ippool.name)" poolname6: - - name: "default_name_159 (source firewall.ippool6.name)" + name: "default_name_160 (source firewall.ippool6.name)" profile_group: "<your_own_value> (source firewall.profile-group.name)" profile_protocol_options: "<your_own_value> (source firewall.profile-protocol-options.name)" profile_type: "single" @@ -1723,7 +1728,7 @@ EXAMPLES = """ rsso: "enable" rtp_addr: - - name: "default_name_172 (source firewall.internet-service-custom-group.name firewall.addrgrp.name)" + name: "default_name_173 (source firewall.internet-service-custom-group.name firewall.addrgrp.name)" rtp_nat: "disable" scan_botnet_connections: "disable" schedule: "<your_own_value> (source firewall.schedule.onetime.name firewall.schedule.recurring.name firewall.schedule.group.name)" @@ -1732,34 +1737,34 @@ EXAMPLES = """ send_deny_packet: "disable" service: - - name: "default_name_180 (source firewall.service.custom.name firewall.service.group.name)" + name: "default_name_181 (source firewall.service.custom.name firewall.service.group.name)" service_negate: "enable" session_ttl: "<your_own_value>" sgt: - - id: "184" + id: "185" sgt_check: "enable" spamfilter_profile: "<your_own_value> (source spamfilter.profile.name)" src_vendor_mac: - - id: "188 (source firewall.vendor-mac.id)" + id: "189 (source firewall.vendor-mac.id)" srcaddr: - - name: "default_name_190 (source firewall.address.name firewall.addrgrp.name system.external-resource.name)" + name: "default_name_191 (source firewall.address.name firewall.addrgrp.name system.external-resource.name)" srcaddr_negate: "enable" srcaddr6: - - name: "default_name_193 (source firewall.address6.name system.external-resource.name firewall.addrgrp6.name)" + name: "default_name_194 (source firewall.address6.name system.external-resource.name firewall.addrgrp6.name)" srcaddr6_negate: "enable" srcintf: - - name: "default_name_196 (source system.interface.name system.zone.name system.sdwan.zone.name)" + name: "default_name_197 (source system.interface.name system.zone.name system.sdwan.zone.name)" ssh_filter_profile: "<your_own_value> (source ssh-filter.profile.name)" ssh_policy_redirect: "enable" ssl_mirror: "enable" ssl_mirror_intf: - - name: "default_name_201 (source system.interface.name system.zone.name)" + name: "default_name_202 (source system.interface.name system.zone.name)" ssl_ssh_profile: "<your_own_value> (source firewall.ssl-ssh-profile.name)" status: "enable" tcp_mss_receiver: "0" @@ -1773,10 +1778,10 @@ EXAMPLES = """ traffic_shaper_reverse: "<your_own_value> (source firewall.shaper.traffic-shaper.name)" url_category: - - id: "214" + id: "215" users: - - name: "default_name_216 (source user.local.name user.certificate.name)" + name: "default_name_217 (source user.local.name user.certificate.name)" utm_status: "enable" uuid: "<your_own_value>" videofilter_profile: "<your_own_value> (source videofilter.profile.name)" @@ -1802,13 +1807,13 @@ EXAMPLES = """ ztna_device_ownership: "enable" ztna_ems_tag: - - name: "default_name_241 (source firewall.address.name firewall.addrgrp.name)" + name: "default_name_242 (source firewall.address.name firewall.addrgrp.name)" ztna_ems_tag_secondary: - - name: "default_name_243 (source firewall.address.name firewall.addrgrp.name)" + name: "default_name_244 (source firewall.address.name firewall.addrgrp.name)" ztna_geo_tag: - - name: "default_name_245 (source firewall.address.name firewall.addrgrp.name)" + name: "default_name_246 (source firewall.address.name firewall.addrgrp.name)" ztna_policy_redirect: "enable" ztna_status: "enable" ztna_tags_match_logic: "or" @@ -1925,6 +1930,7 @@ def filter_firewall_policy_data(json): "decrypted_traffic_mirror", "delay_tcp_npu_session", "devices", + "diameter_filter_profile", "diffserv_copy", "diffserv_forward", "diffserv_reverse", @@ -2134,9 +2140,8 @@ def firewall_policy(data, fos, check_mode=False): state = data["state"] firewall_policy_data = data["firewall_policy"] - filtered_data = underscore_to_hyphen( - filter_firewall_policy_data(firewall_policy_data) - ) + filtered_data = filter_firewall_policy_data(firewall_policy_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -2200,7 +2205,7 @@ def firewall_policy(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall", "policy", data=filtered_data, vdom=vdom) + return fos.set("firewall", "policy", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( @@ -2804,6 +2809,7 @@ versioned_schema = { "voip_profile": {"v_range": [["v6.0.0", ""]], "type": "string"}, "ips_voip_filter": {"v_range": [["v7.4.0", ""]], "type": "string"}, "sctp_filter_profile": {"v_range": [["v7.0.1", ""]], "type": "string"}, + "diameter_filter_profile": {"v_range": [["v7.4.2", ""]], "type": "string"}, "virtual_patch_profile": {"v_range": [["v7.4.1", ""]], "type": "string"}, "icap_profile": {"v_range": [["v6.0.0", ""]], "type": "string"}, "cifs_profile": {"v_range": [["v6.2.0", ""]], "type": "string"}, @@ -2822,9 +2828,12 @@ versioned_schema = { "options": [{"value": "enable"}, {"value": "disable"}], }, "capture_packet": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", - "options": [{"value": "enable"}, {"value": "disable"}], + "options": [ + {"value": "enable", "v_range": [["v6.0.0", ""]]}, + {"value": "disable", "v_range": [["v6.0.0", ""]]}, + ], }, "auto_asic_offload": { "v_range": [["v6.0.0", ""]], @@ -2832,35 +2841,54 @@ versioned_schema = { "options": [{"value": "enable"}, {"value": "disable"}], }, "wanopt": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", - "options": [{"value": "enable"}, {"value": "disable"}], + "options": [ + {"value": "enable", "v_range": [["v6.0.0", ""]]}, + {"value": "disable", "v_range": [["v6.0.0", ""]]}, + ], }, "wanopt_detection": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", - "options": [{"value": "active"}, {"value": "passive"}, {"value": "off"}], + "options": [ + {"value": "active", "v_range": [["v6.0.0", ""]]}, + {"value": "passive", "v_range": [["v6.0.0", ""]]}, + {"value": "off", "v_range": [["v6.0.0", ""]]}, + ], }, "wanopt_passive_opt": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [ - {"value": "default"}, - {"value": "transparent"}, - {"value": "non-transparent"}, + {"value": "default", "v_range": [["v6.0.0", ""]]}, + {"value": "transparent", "v_range": [["v6.0.0", ""]]}, + {"value": "non-transparent", "v_range": [["v6.0.0", ""]]}, ], }, - "wanopt_profile": {"v_range": [["v6.0.0", ""]], "type": "string"}, - "wanopt_peer": {"v_range": [["v6.0.0", ""]], "type": "string"}, + "wanopt_profile": { + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], + "type": "string", + }, + "wanopt_peer": { + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], + "type": "string", + }, "webcache": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", - "options": [{"value": "enable"}, {"value": "disable"}], + "options": [ + {"value": "enable", "v_range": [["v6.0.0", ""]]}, + {"value": "disable", "v_range": [["v6.0.0", ""]]}, + ], }, "webcache_https": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", - "options": [{"value": "disable"}, {"value": "enable"}], + "options": [ + {"value": "disable", "v_range": [["v6.0.0", ""]]}, + {"value": "enable", "v_range": [["v6.0.0", ""]]}, + ], }, "webproxy_forward_server": {"v_range": [["v6.2.0", ""]], "type": "string"}, "traffic_shaper": {"v_range": [["v6.0.0", ""]], "type": "string"}, @@ -3189,11 +3217,11 @@ versioned_schema = { "options": [{"value": "enable"}, {"value": "disable"}], }, "gtp_profile": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", }, "pfcp_profile": { - "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", }, "dlp_sensor": {"v_range": [["v6.0.0", "v7.0.12"]], "type": "string"}, diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_policy46.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_policy46.py index 04f22584b..ffaf31461 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_policy46.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_policy46.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -418,9 +418,8 @@ def firewall_policy46(data, fos, check_mode=False): state = data["state"] firewall_policy46_data = data["firewall_policy46"] - filtered_data = underscore_to_hyphen( - filter_firewall_policy46_data(firewall_policy46_data) - ) + filtered_data = filter_firewall_policy46_data(firewall_policy46_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -484,7 +483,7 @@ def firewall_policy46(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall", "policy46", data=filtered_data, vdom=vdom) + return fos.set("firewall", "policy46", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_policy6.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_policy6.py index 08ae67bd0..ac4953429 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_policy6.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_policy6.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -1044,9 +1044,8 @@ def firewall_policy6(data, fos, check_mode=False): state = data["state"] firewall_policy6_data = data["firewall_policy6"] - filtered_data = underscore_to_hyphen( - filter_firewall_policy6_data(firewall_policy6_data) - ) + filtered_data = filter_firewall_policy6_data(firewall_policy6_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -1110,7 +1109,7 @@ def firewall_policy6(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall", "policy6", data=filtered_data, vdom=vdom) + return fos.set("firewall", "policy6", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_policy64.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_policy64.py index e69dd28ab..f68b1986a 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_policy64.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_policy64.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -418,9 +418,8 @@ def firewall_policy64(data, fos, check_mode=False): state = data["state"] firewall_policy64_data = data["firewall_policy64"] - filtered_data = underscore_to_hyphen( - filter_firewall_policy64_data(firewall_policy64_data) - ) + filtered_data = filter_firewall_policy64_data(firewall_policy64_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -484,7 +483,7 @@ def firewall_policy64(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall", "policy64", data=filtered_data, vdom=vdom) + return fos.set("firewall", "policy64", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_profile_group.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_profile_group.py index b6c77b5d5..c7c954e1b 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_profile_group.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_profile_group.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -104,6 +104,10 @@ options: description: - Name of an existing CIFS profile. Source cifs.profile.name. type: str + diameter_filter_profile: + description: + - Name of an existing Diameter filter profile. Source diameter-filter.profile.name. + type: str dlp_profile: description: - Name of an existing DLP profile. Source dlp.profile.name. @@ -198,6 +202,7 @@ EXAMPLES = """ av_profile: "<your_own_value> (source antivirus.profile.name)" casb_profile: "<your_own_value> (source casb.profile.name)" cifs_profile: "<your_own_value> (source cifs.profile.name)" + diameter_filter_profile: "<your_own_value> (source diameter-filter.profile.name)" dlp_profile: "<your_own_value> (source dlp.profile.name)" dlp_sensor: "<your_own_value> (source dlp.sensor.name)" dnsfilter_profile: "<your_own_value> (source dnsfilter.profile.name)" @@ -207,7 +212,7 @@ EXAMPLES = """ ips_sensor: "<your_own_value> (source ips.sensor.name)" ips_voip_filter: "<your_own_value> (source voip.profile.name)" mms_profile: "<your_own_value> (source firewall.mms-profile.name)" - name: "default_name_16" + name: "default_name_17" profile_protocol_options: "<your_own_value> (source firewall.profile-protocol-options.name)" sctp_filter_profile: "<your_own_value> (source sctp-filter.profile.name)" spamfilter_profile: "<your_own_value> (source spamfilter.profile.name)" @@ -314,6 +319,7 @@ def filter_firewall_profile_group_data(json): "av_profile", "casb_profile", "cifs_profile", + "diameter_filter_profile", "dlp_profile", "dlp_sensor", "dnsfilter_profile", @@ -365,9 +371,8 @@ def firewall_profile_group(data, fos, check_mode=False): state = data["state"] firewall_profile_group_data = data["firewall_profile_group"] - filtered_data = underscore_to_hyphen( - filter_firewall_profile_group_data(firewall_profile_group_data) - ) + filtered_data = filter_firewall_profile_group_data(firewall_profile_group_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -431,7 +436,7 @@ def firewall_profile_group(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall", "profile-group", data=filtered_data, vdom=vdom) + return fos.set("firewall", "profile-group", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( @@ -488,6 +493,7 @@ versioned_schema = { "voip_profile": {"v_range": [["v6.0.0", ""]], "type": "string"}, "ips_voip_filter": {"v_range": [["v7.4.0", ""]], "type": "string"}, "sctp_filter_profile": {"v_range": [["v7.0.1", ""]], "type": "string"}, + "diameter_filter_profile": {"v_range": [["v7.4.2", ""]], "type": "string"}, "virtual_patch_profile": {"v_range": [["v7.4.1", ""]], "type": "string"}, "icap_profile": {"v_range": [["v6.0.0", ""]], "type": "string"}, "cifs_profile": {"v_range": [["v6.2.0", ""]], "type": "string"}, diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_profile_protocol_options.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_profile_protocol_options.py index d6651d190..cd903dcda 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_profile_protocol_options.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_profile_protocol_options.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -177,7 +177,7 @@ options: type: int uncompressed_oversize_limit: description: - - Maximum in-memory uncompressed file size that can be scanned. + - Maximum in-memory uncompressed file size that can be scanned (MB). type: int comment: description: @@ -300,7 +300,7 @@ options: type: int uncompressed_oversize_limit: description: - - Maximum in-memory uncompressed file size that can be scanned. + - Maximum in-memory uncompressed file size that can be scanned (MB). type: int http: description: @@ -504,7 +504,7 @@ options: type: int uncompressed_oversize_limit: description: - - Maximum in-memory uncompressed file size that can be scanned. + - Maximum in-memory uncompressed file size that can be scanned (MB). type: int unknown_content_encoding: description: @@ -592,7 +592,7 @@ options: type: int uncompressed_oversize_limit: description: - - Maximum in-memory uncompressed file size that can be scanned. + - Maximum in-memory uncompressed file size that can be scanned (MB). type: int mail_signature: description: @@ -652,7 +652,7 @@ options: type: int uncompressed_oversize_limit: description: - - Maximum in-memory uncompressed file size that can be scanned. + - Maximum in-memory uncompressed file size that can be scanned (MB). type: int name: description: @@ -715,7 +715,7 @@ options: type: int uncompressed_oversize_limit: description: - - Maximum in-memory uncompressed file size that can be scanned. + - Maximum in-memory uncompressed file size that can be scanned (MB). type: int oversize_log: description: @@ -787,7 +787,7 @@ options: type: int uncompressed_oversize_limit: description: - - Maximum in-memory uncompressed file size that can be scanned. + - Maximum in-memory uncompressed file size that can be scanned (MB). type: int replacemsg_group: description: @@ -871,7 +871,7 @@ options: type: int uncompressed_oversize_limit: description: - - Maximum in-memory uncompressed file size that can be scanned. + - Maximum in-memory uncompressed file size that can be scanned (MB). type: int ssh: description: @@ -945,7 +945,7 @@ options: type: int uncompressed_oversize_limit: description: - - Maximum in-memory uncompressed file size that can be scanned. + - Maximum in-memory uncompressed file size that can be scanned (MB). type: int switching_protocols_log: description: @@ -1301,11 +1301,10 @@ def firewall_profile_protocol_options(data, fos, check_mode=False): firewall_profile_protocol_options_data = flatten_multilists_attributes( firewall_profile_protocol_options_data ) - filtered_data = underscore_to_hyphen( - filter_firewall_profile_protocol_options_data( - firewall_profile_protocol_options_data - ) + filtered_data = filter_firewall_profile_protocol_options_data( + firewall_profile_protocol_options_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -1374,7 +1373,7 @@ def firewall_profile_protocol_options(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "firewall", "profile-protocol-options", data=filtered_data, vdom=vdom + "firewall", "profile-protocol-options", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_proute.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_proute.py index caabf449d..2a832191b 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_proute.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_proute.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -200,9 +200,9 @@ def underscore_to_hyphen(data): def valid_attr_to_invalid_attr(data): - specillist = {"<policy route id>": "policy_route_id"} + speciallist = {"<policy route id>": "policy_route_id"} - for k, v in specillist.items(): + for k, v in speciallist.items(): if v == data: return k @@ -211,8 +211,11 @@ def valid_attr_to_invalid_attr(data): def valid_attr_to_invalid_attrs(data): if isinstance(data, list): + new_data = [] for elem in data: elem = valid_attr_to_invalid_attrs(elem) + new_data.append(elem) + data = new_data elif isinstance(data, dict): new_data = {} for k, v in data.items(): @@ -225,10 +228,8 @@ def valid_attr_to_invalid_attrs(data): def firewall_proute(data, fos): vdom = data["vdom"] firewall_proute_data = data["firewall_proute"] - filtered_data = underscore_to_hyphen( - filter_firewall_proute_data(firewall_proute_data) - ) - converted_data = valid_attr_to_invalid_attrs(filtered_data) + filtered_data = filter_firewall_proute_data(firewall_proute_data) + converted_data = underscore_to_hyphen(valid_attr_to_invalid_attrs(filtered_data)) return fos.set("firewall", "proute", data=converted_data, vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_proxy_address.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_proxy_address.py index 2d7c7b4b9..060705e0b 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_proxy_address.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_proxy_address.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -499,9 +499,8 @@ def firewall_proxy_address(data, fos, check_mode=False): firewall_proxy_address_data = flatten_multilists_attributes( firewall_proxy_address_data ) - filtered_data = underscore_to_hyphen( - filter_firewall_proxy_address_data(firewall_proxy_address_data) - ) + filtered_data = filter_firewall_proxy_address_data(firewall_proxy_address_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -565,7 +564,7 @@ def firewall_proxy_address(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall", "proxy-address", data=filtered_data, vdom=vdom) + return fos.set("firewall", "proxy-address", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_proxy_addrgrp.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_proxy_addrgrp.py index debc54045..6a6210b58 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_proxy_addrgrp.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_proxy_addrgrp.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -312,9 +312,8 @@ def firewall_proxy_addrgrp(data, fos, check_mode=False): state = data["state"] firewall_proxy_addrgrp_data = data["firewall_proxy_addrgrp"] - filtered_data = underscore_to_hyphen( - filter_firewall_proxy_addrgrp_data(firewall_proxy_addrgrp_data) - ) + filtered_data = filter_firewall_proxy_addrgrp_data(firewall_proxy_addrgrp_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -378,7 +377,7 @@ def firewall_proxy_addrgrp(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall", "proxy-addrgrp", data=filtered_data, vdom=vdom) + return fos.set("firewall", "proxy-addrgrp", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_proxy_policy.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_proxy_policy.py index 8c01a42be..9ec85ca81 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_proxy_policy.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_proxy_policy.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -165,6 +165,10 @@ options: choices: - 'enable' - 'disable' + diameter_filter_profile: + description: + - Name of an existing Diameter filter profile. Source diameter-filter.profile.name. + type: str disclaimer: description: - 'Web proxy disclaimer setting: by domain, policy, or user.' @@ -690,59 +694,60 @@ EXAMPLES = """ decrypted_traffic_mirror: "<your_own_value> (source firewall.decrypted-traffic-mirror.name)" detect_https_in_http_request: "enable" device_ownership: "enable" + diameter_filter_profile: "<your_own_value> (source diameter-filter.profile.name)" disclaimer: "disable" dlp_profile: "<your_own_value> (source dlp.profile.name)" dlp_sensor: "<your_own_value> (source dlp.sensor.name)" dstaddr: - - name: "default_name_21 (source firewall.address.name firewall.addrgrp.name firewall.proxy-address.name firewall.proxy-addrgrp.name firewall + name: "default_name_22 (source firewall.address.name firewall.addrgrp.name firewall.proxy-address.name firewall.proxy-addrgrp.name firewall .vip.name firewall.vipgrp.name system.external-resource.name)" dstaddr_negate: "enable" dstaddr6: - - name: "default_name_24 (source firewall.address6.name firewall.addrgrp6.name firewall.vip6.name firewall.vipgrp6.name system + name: "default_name_25 (source firewall.address6.name firewall.addrgrp6.name firewall.vip6.name firewall.vipgrp6.name system .external-resource.name)" dstintf: - - name: "default_name_26 (source system.interface.name system.zone.name system.sdwan.zone.name)" + name: "default_name_27 (source system.interface.name system.zone.name system.sdwan.zone.name)" emailfilter_profile: "<your_own_value> (source emailfilter.profile.name)" file_filter_profile: "<your_own_value> (source file-filter.profile.name)" global_label: "<your_own_value>" groups: - - name: "default_name_31 (source user.group.name)" + name: "default_name_32 (source user.group.name)" http_tunnel_auth: "enable" icap_profile: "<your_own_value> (source icap.profile.name)" internet_service: "enable" internet_service_custom: - - name: "default_name_36 (source firewall.internet-service-custom.name)" + name: "default_name_37 (source firewall.internet-service-custom.name)" internet_service_custom_group: - - name: "default_name_38 (source firewall.internet-service-custom-group.name)" + name: "default_name_39 (source firewall.internet-service-custom-group.name)" internet_service_group: - - name: "default_name_40 (source firewall.internet-service-group.name)" + name: "default_name_41 (source firewall.internet-service-group.name)" internet_service_id: - - id: "42 (source firewall.internet-service.id)" + id: "43 (source firewall.internet-service.id)" internet_service_name: - - name: "default_name_44 (source firewall.internet-service-name.name)" + name: "default_name_45 (source firewall.internet-service-name.name)" internet_service_negate: "enable" internet_service6: "enable" internet_service6_custom: - - name: "default_name_48 (source firewall.internet-service-custom.name)" + name: "default_name_49 (source firewall.internet-service-custom.name)" internet_service6_custom_group: - - name: "default_name_50 (source firewall.internet-service-custom-group.name)" + name: "default_name_51 (source firewall.internet-service-custom-group.name)" internet_service6_group: - - name: "default_name_52 (source firewall.internet-service-group.name)" + name: "default_name_53 (source firewall.internet-service-group.name)" internet_service6_name: - - name: "default_name_54 (source firewall.internet-service-name.name)" + name: "default_name_55 (source firewall.internet-service-name.name)" internet_service6_negate: "enable" ips_sensor: "<your_own_value> (source ips.sensor.name)" ips_voip_filter: "<your_own_value> (source voip.profile.name)" @@ -750,11 +755,11 @@ EXAMPLES = """ logtraffic: "all" logtraffic_start: "enable" mms_profile: "<your_own_value> (source firewall.mms-profile.name)" - name: "default_name_62" + name: "default_name_63" policyid: "<you_own_value>" poolname: - - name: "default_name_65 (source firewall.ippool.name)" + name: "default_name_66 (source firewall.ippool.name)" profile_group: "<your_own_value> (source firewall.profile-group.name)" profile_protocol_options: "<your_own_value> (source firewall.profile-protocol-options.name)" profile_type: "single" @@ -766,21 +771,21 @@ EXAMPLES = """ sctp_filter_profile: "<your_own_value> (source sctp-filter.profile.name)" service: - - name: "default_name_76 (source firewall.service.custom.name firewall.service.group.name)" + name: "default_name_77 (source firewall.service.custom.name firewall.service.group.name)" service_negate: "enable" session_ttl: "0" spamfilter_profile: "<your_own_value> (source spamfilter.profile.name)" srcaddr: - - name: "default_name_81 (source firewall.address.name firewall.addrgrp.name firewall.proxy-address.name firewall.proxy-addrgrp.name system + name: "default_name_82 (source firewall.address.name firewall.addrgrp.name firewall.proxy-address.name firewall.proxy-addrgrp.name system .external-resource.name)" srcaddr_negate: "enable" srcaddr6: - - name: "default_name_84 (source firewall.address6.name firewall.addrgrp6.name system.external-resource.name)" + name: "default_name_85 (source firewall.address6.name firewall.addrgrp6.name system.external-resource.name)" srcintf: - - name: "default_name_86 (source system.interface.name system.zone.name system.sdwan.zone.name)" + name: "default_name_87 (source system.interface.name system.zone.name system.sdwan.zone.name)" ssh_filter_profile: "<your_own_value> (source ssh-filter.profile.name)" ssh_policy_redirect: "enable" ssl_ssh_profile: "<your_own_value> (source firewall.ssl-ssh-profile.name)" @@ -788,7 +793,7 @@ EXAMPLES = """ transparent: "enable" users: - - name: "default_name_93 (source user.local.name user.certificate.name)" + name: "default_name_94 (source user.local.name user.certificate.name)" utm_status: "enable" uuid: "<your_own_value>" videofilter_profile: "<your_own_value> (source videofilter.profile.name)" @@ -802,7 +807,7 @@ EXAMPLES = """ webproxy_profile: "<your_own_value> (source web-proxy.profile.name)" ztna_ems_tag: - - name: "default_name_106 (source firewall.address.name firewall.addrgrp.name)" + name: "default_name_107 (source firewall.address.name firewall.addrgrp.name)" ztna_tags_match_logic: "or" """ @@ -908,6 +913,7 @@ def filter_firewall_proxy_policy_data(json): "decrypted_traffic_mirror", "detect_https_in_http_request", "device_ownership", + "diameter_filter_profile", "disclaimer", "dlp_profile", "dlp_sensor", @@ -1010,9 +1016,8 @@ def firewall_proxy_policy(data, fos, check_mode=False): state = data["state"] firewall_proxy_policy_data = data["firewall_proxy_policy"] - filtered_data = underscore_to_hyphen( - filter_firewall_proxy_policy_data(firewall_proxy_policy_data) - ) + filtered_data = filter_firewall_proxy_policy_data(firewall_proxy_policy_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -1076,7 +1081,7 @@ def firewall_proxy_policy(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall", "proxy-policy", data=filtered_data, vdom=vdom) + return fos.set("firewall", "proxy-policy", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( @@ -1132,7 +1137,7 @@ versioned_schema = { {"value": "ssh"}, {"value": "ssh-tunnel"}, {"value": "access-proxy", "v_range": [["v7.0.0", ""]]}, - {"value": "wanopt"}, + {"value": "wanopt", "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]]}, ], }, "access_proxy": { @@ -1467,14 +1472,20 @@ versioned_schema = { "options": [{"value": "enable"}, {"value": "disable"}], }, "webcache": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", - "options": [{"value": "enable"}, {"value": "disable"}], + "options": [ + {"value": "enable", "v_range": [["v6.0.0", ""]]}, + {"value": "disable", "v_range": [["v6.0.0", ""]]}, + ], }, "webcache_https": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", - "options": [{"value": "disable"}, {"value": "enable"}], + "options": [ + {"value": "disable", "v_range": [["v6.0.0", ""]]}, + {"value": "enable", "v_range": [["v6.0.0", ""]]}, + ], }, "disclaimer": { "v_range": [["v6.0.0", ""]], @@ -1508,7 +1519,7 @@ versioned_schema = { "application_list": {"v_range": [["v6.0.0", ""]], "type": "string"}, "ips_voip_filter": {"v_range": [["v7.4.0", ""]], "type": "string"}, "sctp_filter_profile": {"v_range": [["v7.0.1", ""]], "type": "string"}, - "virtual_patch_profile": {"v_range": [["v7.4.1", ""]], "type": "string"}, + "diameter_filter_profile": {"v_range": [["v7.4.2", ""]], "type": "string"}, "icap_profile": {"v_range": [["v6.0.0", ""]], "type": "string"}, "cifs_profile": {"v_range": [["v6.2.0", ""]], "type": "string"}, "videofilter_profile": {"v_range": [["v7.0.0", ""]], "type": "string"}, @@ -1534,6 +1545,7 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "virtual_patch_profile": {"v_range": [["v7.4.1", "v7.4.1"]], "type": "string"}, "voip_profile": {"v_range": [["v7.0.0", "v7.2.4"]], "type": "string"}, "dlp_sensor": {"v_range": [["v6.0.0", "v7.0.12"]], "type": "string"}, "internet_service_id": { diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_region.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_region.py index 03d0734dd..2e0c156d0 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_region.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_region.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -246,9 +246,8 @@ def firewall_region(data, fos, check_mode=False): state = data["state"] firewall_region_data = data["firewall_region"] - filtered_data = underscore_to_hyphen( - filter_firewall_region_data(firewall_region_data) - ) + filtered_data = filter_firewall_region_data(firewall_region_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -312,7 +311,7 @@ def firewall_region(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall", "region", data=filtered_data, vdom=vdom) + return fos.set("firewall", "region", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("firewall", "region", mkey=filtered_data["id"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_schedule_group.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_schedule_group.py index 4163edfac..ab75607c3 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_schedule_group.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_schedule_group.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -252,9 +252,8 @@ def firewall_schedule_group(data, fos, check_mode=False): state = data["state"] firewall_schedule_group_data = data["firewall_schedule_group"] - filtered_data = underscore_to_hyphen( - filter_firewall_schedule_group_data(firewall_schedule_group_data) - ) + filtered_data = filter_firewall_schedule_group_data(firewall_schedule_group_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -318,7 +317,7 @@ def firewall_schedule_group(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall.schedule", "group", data=filtered_data, vdom=vdom) + return fos.set("firewall.schedule", "group", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_schedule_onetime.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_schedule_onetime.py index c67a03428..394948e8b 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_schedule_onetime.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_schedule_onetime.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -272,9 +272,10 @@ def firewall_schedule_onetime(data, fos, check_mode=False): state = data["state"] firewall_schedule_onetime_data = data["firewall_schedule_onetime"] - filtered_data = underscore_to_hyphen( - filter_firewall_schedule_onetime_data(firewall_schedule_onetime_data) + filtered_data = filter_firewall_schedule_onetime_data( + firewall_schedule_onetime_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -338,7 +339,7 @@ def firewall_schedule_onetime(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall.schedule", "onetime", data=filtered_data, vdom=vdom) + return fos.set("firewall.schedule", "onetime", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_schedule_recurring.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_schedule_recurring.py index 309dc8766..90ac35d95 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_schedule_recurring.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_schedule_recurring.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -295,9 +295,10 @@ def firewall_schedule_recurring(data, fos, check_mode=False): firewall_schedule_recurring_data = flatten_multilists_attributes( firewall_schedule_recurring_data ) - filtered_data = underscore_to_hyphen( - filter_firewall_schedule_recurring_data(firewall_schedule_recurring_data) + filtered_data = filter_firewall_schedule_recurring_data( + firewall_schedule_recurring_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -361,7 +362,7 @@ def firewall_schedule_recurring(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall.schedule", "recurring", data=filtered_data, vdom=vdom) + return fos.set("firewall.schedule", "recurring", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_security_policy.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_security_policy.py index acf6d793c..86a5af244 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_security_policy.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_security_policy.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -150,6 +150,10 @@ options: description: - Comment. type: str + diameter_filter_profile: + description: + - Name of an existing Diameter filter profile. Source diameter-filter.profile.name. + type: str dlp_profile: description: - Name of an existing DLP profile. Source dlp.profile.name. @@ -772,97 +776,98 @@ EXAMPLES = """ casb_profile: "<your_own_value> (source casb.profile.name)" cifs_profile: "<your_own_value> (source cifs.profile.name)" comments: "<your_own_value>" + diameter_filter_profile: "<your_own_value> (source diameter-filter.profile.name)" dlp_profile: "<your_own_value> (source dlp.profile.name)" dlp_sensor: "<your_own_value> (source dlp.sensor.name)" dnsfilter_profile: "<your_own_value> (source dnsfilter.profile.name)" dstaddr: - - name: "default_name_19 (source firewall.address.name firewall.addrgrp.name firewall.vip.name firewall.vipgrp.name system.external-resource + name: "default_name_20 (source firewall.address.name firewall.addrgrp.name firewall.vip.name firewall.vipgrp.name system.external-resource .name)" dstaddr_negate: "enable" dstaddr4: - - name: "default_name_22 (source firewall.address.name firewall.addrgrp.name firewall.vip.name firewall.vipgrp.name)" + name: "default_name_23 (source firewall.address.name firewall.addrgrp.name firewall.vip.name firewall.vipgrp.name)" dstaddr6: - - name: "default_name_24 (source firewall.address6.name firewall.addrgrp6.name firewall.vip6.name firewall.vipgrp6.name system + name: "default_name_25 (source firewall.address6.name firewall.addrgrp6.name firewall.vip6.name firewall.vipgrp6.name system .external-resource.name)" dstaddr6_negate: "enable" dstintf: - - name: "default_name_27 (source system.interface.name system.zone.name system.sdwan.zone.name)" + name: "default_name_28 (source system.interface.name system.zone.name system.sdwan.zone.name)" emailfilter_profile: "<your_own_value> (source emailfilter.profile.name)" enforce_default_app_port: "enable" file_filter_profile: "<your_own_value> (source file-filter.profile.name)" fsso_groups: - - name: "default_name_32 (source user.adgrp.name)" + name: "default_name_33 (source user.adgrp.name)" global_label: "<your_own_value>" groups: - - name: "default_name_35 (source user.group.name)" + name: "default_name_36 (source user.group.name)" icap_profile: "<your_own_value> (source icap.profile.name)" internet_service: "enable" internet_service_custom: - - name: "default_name_39 (source firewall.internet-service-custom.name)" + name: "default_name_40 (source firewall.internet-service-custom.name)" internet_service_custom_group: - - name: "default_name_41 (source firewall.internet-service-custom-group.name)" + name: "default_name_42 (source firewall.internet-service-custom-group.name)" internet_service_group: - - name: "default_name_43 (source firewall.internet-service-group.name)" + name: "default_name_44 (source firewall.internet-service-group.name)" internet_service_id: - - id: "45 (source firewall.internet-service.id)" + id: "46 (source firewall.internet-service.id)" internet_service_name: - - name: "default_name_47 (source firewall.internet-service-name.name)" + name: "default_name_48 (source firewall.internet-service-name.name)" internet_service_negate: "enable" internet_service_src: "enable" internet_service_src_custom: - - name: "default_name_51 (source firewall.internet-service-custom.name)" + name: "default_name_52 (source firewall.internet-service-custom.name)" internet_service_src_custom_group: - - name: "default_name_53 (source firewall.internet-service-custom-group.name)" + name: "default_name_54 (source firewall.internet-service-custom-group.name)" internet_service_src_group: - - name: "default_name_55 (source firewall.internet-service-group.name)" + name: "default_name_56 (source firewall.internet-service-group.name)" internet_service_src_id: - - id: "57 (source firewall.internet-service.id)" + id: "58 (source firewall.internet-service.id)" internet_service_src_name: - - name: "default_name_59 (source firewall.internet-service-name.name)" + name: "default_name_60 (source firewall.internet-service-name.name)" internet_service_src_negate: "enable" internet_service6: "enable" internet_service6_custom: - - name: "default_name_63 (source firewall.internet-service-custom.name)" + name: "default_name_64 (source firewall.internet-service-custom.name)" internet_service6_custom_group: - - name: "default_name_65 (source firewall.internet-service-custom-group.name)" + name: "default_name_66 (source firewall.internet-service-custom-group.name)" internet_service6_group: - - name: "default_name_67 (source firewall.internet-service-group.name)" + name: "default_name_68 (source firewall.internet-service-group.name)" internet_service6_name: - - name: "default_name_69 (source firewall.internet-service-name.name)" + name: "default_name_70 (source firewall.internet-service-name.name)" internet_service6_negate: "enable" internet_service6_src: "enable" internet_service6_src_custom: - - name: "default_name_73 (source firewall.internet-service-custom.name)" + name: "default_name_74 (source firewall.internet-service-custom.name)" internet_service6_src_custom_group: - - name: "default_name_75 (source firewall.internet-service-custom-group.name)" + name: "default_name_76 (source firewall.internet-service-custom-group.name)" internet_service6_src_group: - - name: "default_name_77 (source firewall.internet-service-group.name)" + name: "default_name_78 (source firewall.internet-service-group.name)" internet_service6_src_name: - - name: "default_name_79 (source firewall.internet-service-name.name)" + name: "default_name_80 (source firewall.internet-service-name.name)" internet_service6_src_negate: "enable" ips_sensor: "<your_own_value> (source ips.sensor.name)" ips_voip_filter: "<your_own_value> (source voip.profile.name)" @@ -870,7 +875,7 @@ EXAMPLES = """ logtraffic: "all" logtraffic_start: "enable" mms_profile: "<your_own_value> (source firewall.mms-profile.name)" - name: "default_name_87" + name: "default_name_88" nat46: "enable" nat64: "enable" policyid: "<you_own_value>" @@ -882,29 +887,29 @@ EXAMPLES = """ send_deny_packet: "disable" service: - - name: "default_name_98 (source firewall.service.custom.name firewall.service.group.name)" + name: "default_name_99 (source firewall.service.custom.name firewall.service.group.name)" service_negate: "enable" srcaddr: - - name: "default_name_101 (source firewall.address.name firewall.addrgrp.name system.external-resource.name)" + name: "default_name_102 (source firewall.address.name firewall.addrgrp.name system.external-resource.name)" srcaddr_negate: "enable" srcaddr4: - - name: "default_name_104 (source firewall.address.name firewall.addrgrp.name)" + name: "default_name_105 (source firewall.address.name firewall.addrgrp.name)" srcaddr6: - - name: "default_name_106 (source firewall.address6.name firewall.addrgrp6.name system.external-resource.name)" + name: "default_name_107 (source firewall.address6.name firewall.addrgrp6.name system.external-resource.name)" srcaddr6_negate: "enable" srcintf: - - name: "default_name_109 (source system.interface.name system.zone.name system.sdwan.zone.name)" + name: "default_name_110 (source system.interface.name system.zone.name system.sdwan.zone.name)" ssh_filter_profile: "<your_own_value> (source ssh-filter.profile.name)" ssl_ssh_profile: "<your_own_value> (source firewall.ssl-ssh-profile.name)" status: "enable" url_category: "<your_own_value>" users: - - name: "default_name_115 (source user.local.name)" + name: "default_name_116 (source user.local.name)" utm_status: "enable" uuid: "<your_own_value>" uuid_idx: "2147483647" @@ -1013,6 +1018,7 @@ def filter_firewall_security_policy_data(json): "casb_profile", "cifs_profile", "comments", + "diameter_filter_profile", "dlp_profile", "dlp_sensor", "dnsfilter_profile", @@ -1154,9 +1160,8 @@ def firewall_security_policy(data, fos, check_mode=False): firewall_security_policy_data = flatten_multilists_attributes( firewall_security_policy_data ) - filtered_data = underscore_to_hyphen( - filter_firewall_security_policy_data(firewall_security_policy_data) - ) + filtered_data = filter_firewall_security_policy_data(firewall_security_policy_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -1220,7 +1225,7 @@ def firewall_security_policy(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall", "security-policy", data=filtered_data, vdom=vdom) + return fos.set("firewall", "security-policy", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( @@ -1670,6 +1675,7 @@ versioned_schema = { "voip_profile": {"v_range": [["v6.2.0", ""]], "type": "string"}, "ips_voip_filter": {"v_range": [["v7.4.0", ""]], "type": "string"}, "sctp_filter_profile": {"v_range": [["v7.0.1", ""]], "type": "string"}, + "diameter_filter_profile": {"v_range": [["v7.4.2", ""]], "type": "string"}, "virtual_patch_profile": {"v_range": [["v7.4.1", ""]], "type": "string"}, "icap_profile": {"v_range": [["v6.2.0", ""]], "type": "string"}, "cifs_profile": {"v_range": [["v6.2.0", ""]], "type": "string"}, diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_service_category.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_service_category.py index c2ca20285..ed37ecd67 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_service_category.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_service_category.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -238,9 +238,10 @@ def firewall_service_category(data, fos, check_mode=False): state = data["state"] firewall_service_category_data = data["firewall_service_category"] - filtered_data = underscore_to_hyphen( - filter_firewall_service_category_data(firewall_service_category_data) + filtered_data = filter_firewall_service_category_data( + firewall_service_category_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -304,7 +305,7 @@ def firewall_service_category(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall.service", "category", data=filtered_data, vdom=vdom) + return fos.set("firewall.service", "category", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_service_custom.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_service_custom.py index a68aed381..42d7c54d4 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_service_custom.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_service_custom.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -254,6 +254,10 @@ options: description: - Multiple UDP port ranges. type: str + uuid: + description: + - Universally Unique Identifier (UUID; automatically assigned but can be manually reset). + type: str visibility: description: - Enable/disable the visibility of the service on the GUI. @@ -300,6 +304,7 @@ EXAMPLES = """ tcp_timewait_timer: "0" udp_idle_timer: "0" udp_portrange: "<your_own_value>" + uuid: "<your_own_value>" visibility: "enable" """ @@ -419,6 +424,7 @@ def filter_firewall_service_custom_data(json): "tcp_timewait_timer", "udp_idle_timer", "udp_portrange", + "uuid", "visibility", ] @@ -451,9 +457,8 @@ def firewall_service_custom(data, fos, check_mode=False): state = data["state"] firewall_service_custom_data = data["firewall_service_custom"] - filtered_data = underscore_to_hyphen( - filter_firewall_service_custom_data(firewall_service_custom_data) - ) + filtered_data = filter_firewall_service_custom_data(firewall_service_custom_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -517,7 +522,7 @@ def firewall_service_custom(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall.service", "custom", data=filtered_data, vdom=vdom) + return fos.set("firewall.service", "custom", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( @@ -561,6 +566,7 @@ versioned_schema = { "elements": "dict", "children": { "name": {"v_range": [["v6.0.0", ""]], "type": "string", "required": True}, + "uuid": {"v_range": [["v7.4.2", ""]], "type": "string"}, "proxy": { "v_range": [["v6.0.0", ""]], "type": "string", @@ -606,19 +612,35 @@ versioned_schema = { {"value": "mgcp"}, { "value": "gtp-c", - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], }, { "value": "gtp-u", - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], }, { "value": "gtp-b", - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], }, { "value": "pfcp", - "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v7.0.1", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], }, ], }, diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_service_group.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_service_group.py index b952b84d8..34bca3348 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_service_group.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_service_group.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -126,6 +126,10 @@ options: choices: - 'enable' - 'disable' + uuid: + description: + - Universally Unique Identifier (UUID; automatically assigned but can be manually reset). + type: str """ EXAMPLES = """ @@ -143,6 +147,7 @@ EXAMPLES = """ name: "default_name_7 (source firewall.service.custom.name firewall.service.group.name)" name: "default_name_8" proxy: "enable" + uuid: "<your_own_value>" """ RETURN = """ @@ -234,7 +239,15 @@ from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.compariso def filter_firewall_service_group_data(json): - option_list = ["color", "comment", "fabric_object", "member", "name", "proxy"] + option_list = [ + "color", + "comment", + "fabric_object", + "member", + "name", + "proxy", + "uuid", + ] json = remove_invalid_fields(json) dictionary = {} @@ -265,9 +278,8 @@ def firewall_service_group(data, fos, check_mode=False): state = data["state"] firewall_service_group_data = data["firewall_service_group"] - filtered_data = underscore_to_hyphen( - filter_firewall_service_group_data(firewall_service_group_data) - ) + filtered_data = filter_firewall_service_group_data(firewall_service_group_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -331,7 +343,7 @@ def firewall_service_group(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall.service", "group", data=filtered_data, vdom=vdom) + return fos.set("firewall.service", "group", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( @@ -375,6 +387,7 @@ versioned_schema = { "elements": "dict", "children": { "name": {"v_range": [["v6.0.0", ""]], "type": "string", "required": True}, + "uuid": {"v_range": [["v7.4.2", ""]], "type": "string"}, "proxy": { "v_range": [["v6.0.0", ""]], "type": "string", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_shaper_per_ip_shaper.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_shaper_per_ip_shaper.py index c74879d90..c4bca8e19 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_shaper_per_ip_shaper.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_shaper_per_ip_shaper.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -291,9 +291,10 @@ def firewall_shaper_per_ip_shaper(data, fos, check_mode=False): state = data["state"] firewall_shaper_per_ip_shaper_data = data["firewall_shaper_per_ip_shaper"] - filtered_data = underscore_to_hyphen( - filter_firewall_shaper_per_ip_shaper_data(firewall_shaper_per_ip_shaper_data) + filtered_data = filter_firewall_shaper_per_ip_shaper_data( + firewall_shaper_per_ip_shaper_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -360,7 +361,7 @@ def firewall_shaper_per_ip_shaper(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "firewall.shaper", "per-ip-shaper", data=filtered_data, vdom=vdom + "firewall.shaper", "per-ip-shaper", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_shaper_traffic_shaper.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_shaper_traffic_shaper.py index 95478eea6..838f4c075 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_shaper_traffic_shaper.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_shaper_traffic_shaper.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -359,9 +359,10 @@ def firewall_shaper_traffic_shaper(data, fos, check_mode=False): state = data["state"] firewall_shaper_traffic_shaper_data = data["firewall_shaper_traffic_shaper"] - filtered_data = underscore_to_hyphen( - filter_firewall_shaper_traffic_shaper_data(firewall_shaper_traffic_shaper_data) + filtered_data = filter_firewall_shaper_traffic_shaper_data( + firewall_shaper_traffic_shaper_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -430,7 +431,7 @@ def firewall_shaper_traffic_shaper(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "firewall.shaper", "traffic-shaper", data=filtered_data, vdom=vdom + "firewall.shaper", "traffic-shaper", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_shaping_policy.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_shaping_policy.py index 76fde19ce..d3279654f 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_shaping_policy.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_shaping_policy.py @@ -42,7 +42,7 @@ notes: - Only one of [after, before] must be specified when action is moving an object. requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -751,9 +751,8 @@ def firewall_shaping_policy(data, fos, check_mode=False): state = data["state"] firewall_shaping_policy_data = data["firewall_shaping_policy"] - filtered_data = underscore_to_hyphen( - filter_firewall_shaping_policy_data(firewall_shaping_policy_data) - ) + filtered_data = filter_firewall_shaping_policy_data(firewall_shaping_policy_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -817,7 +816,7 @@ def firewall_shaping_policy(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall", "shaping-policy", data=filtered_data, vdom=vdom) + return fos.set("firewall", "shaping-policy", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_shaping_profile.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_shaping_profile.py index ef1951557..acd7ad754 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_shaping_profile.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_shaping_profile.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -319,9 +319,8 @@ def firewall_shaping_profile(data, fos, check_mode=False): state = data["state"] firewall_shaping_profile_data = data["firewall_shaping_profile"] - filtered_data = underscore_to_hyphen( - filter_firewall_shaping_profile_data(firewall_shaping_profile_data) - ) + filtered_data = filter_firewall_shaping_profile_data(firewall_shaping_profile_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -385,7 +384,7 @@ def firewall_shaping_profile(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall", "shaping-profile", data=filtered_data, vdom=vdom) + return fos.set("firewall", "shaping-profile", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_sniffer.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_sniffer.py index 1faa6bebd..2a645f373 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_sniffer.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_sniffer.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -141,6 +141,92 @@ options: choices: - 'disable' - 'enable' + synproxy_tcp_mss: + description: + - Determine TCP maximum segment size (MSS) value for packets replied by syn proxy module. + type: str + choices: + - '0' + - '256' + - '512' + - '1024' + - '1300' + - '1360' + - '1460' + - '1500' + synproxy_tcp_sack: + description: + - enable/disable TCP selective acknowledage (SACK) for packets replied by syn proxy module. + type: str + choices: + - 'enable' + - 'disable' + synproxy_tcp_timestamp: + description: + - enable/disable TCP timestamp option for packets replied by syn proxy module. + type: str + choices: + - 'enable' + - 'disable' + synproxy_tcp_window: + description: + - Determine TCP Window size for packets replied by syn proxy module. + type: str + choices: + - '4096' + - '8192' + - '16384' + - '32768' + synproxy_tcp_windowscale: + description: + - Determine TCP window scale option value for packets replied by syn proxy module. + type: str + choices: + - '0' + - '1' + - '2' + - '3' + - '4' + - '5' + - '6' + - '7' + - '8' + - '9' + - '10' + - '11' + - '12' + - '13' + - '14' + synproxy_tos: + description: + - Determine TCP differentiated services code point value (type of service). + type: str + choices: + - '0' + - '10' + - '12' + - '14' + - '18' + - '20' + - '22' + - '26' + - '28' + - '30' + - '34' + - '36' + - '38' + - '40' + - '46' + - '255' + synproxy_ttl: + description: + - Determine Time to live (TTL) value for packets replied by syn proxy module. + type: str + choices: + - '32' + - '64' + - '128' + - '255' threshold: description: - Anomaly threshold. Number of detected instances (packets per second or concurrent session number) that triggers the anomaly @@ -344,6 +430,10 @@ options: choices: - 'enable' - 'disable' + uuid: + description: + - Universally Unique Identifier (UUID; automatically assigned but can be manually reset). + type: str vlan: description: - List of VLANs to sniff. @@ -377,6 +467,13 @@ EXAMPLES = """ quarantine_expiry: "<your_own_value>" quarantine_log: "disable" status: "disable" + synproxy_tcp_mss: "0" + synproxy_tcp_sack: "enable" + synproxy_tcp_timestamp: "enable" + synproxy_tcp_window: "4096" + synproxy_tcp_windowscale: "0" + synproxy_tos: "0" + synproxy_ttl: "32" threshold: "0" threshold_default: "0" application_list: "<your_own_value> (source application.list.name)" @@ -395,11 +492,11 @@ EXAMPLES = """ file_filter_profile: "<your_own_value> (source file-filter.profile.name)" file_filter_profile_status: "enable" host: "myhostname" - id: "29" + id: "36" interface: "<your_own_value> (source system.interface.name)" ip_threatfeed: - - name: "default_name_32 (source system.external-resource.name)" + name: "default_name_39 (source system.external-resource.name)" ip_threatfeed_status: "enable" ips_dos_status: "enable" ips_sensor: "<your_own_value> (source ips.sensor.name)" @@ -414,6 +511,7 @@ EXAMPLES = """ spamfilter_profile: "<your_own_value> (source spamfilter.profile.name)" spamfilter_profile_status: "enable" status: "enable" + uuid: "<your_own_value>" vlan: "<your_own_value>" webfilter_profile: "<your_own_value> (source webfilter.profile.name)" webfilter_profile_status: "enable" @@ -543,6 +641,7 @@ def filter_firewall_sniffer_data(json): "spamfilter_profile", "spamfilter_profile_status", "status", + "uuid", "vlan", "webfilter_profile", "webfilter_profile_status", @@ -572,9 +671,9 @@ def underscore_to_hyphen(data): def valid_attr_to_invalid_attr(data): - specillist = {"threshold(default)": "threshold_default"} + speciallist = {"threshold(default)": "threshold_default"} - for k, v in specillist.items(): + for k, v in speciallist.items(): if v == data: return k @@ -583,8 +682,11 @@ def valid_attr_to_invalid_attr(data): def valid_attr_to_invalid_attrs(data): if isinstance(data, list): + new_data = [] for elem in data: elem = valid_attr_to_invalid_attrs(elem) + new_data.append(elem) + data = new_data elif isinstance(data, dict): new_data = {} for k, v in data.items(): @@ -600,10 +702,8 @@ def firewall_sniffer(data, fos, check_mode=False): state = data["state"] firewall_sniffer_data = data["firewall_sniffer"] - filtered_data = underscore_to_hyphen( - filter_firewall_sniffer_data(firewall_sniffer_data) - ) - converted_data = valid_attr_to_invalid_attrs(filtered_data) + filtered_data = filter_firewall_sniffer_data(firewall_sniffer_data) + converted_data = underscore_to_hyphen(valid_attr_to_invalid_attrs(filtered_data)) # check_mode starts from here if check_mode: @@ -709,6 +809,7 @@ versioned_schema = { "elements": "dict", "children": { "id": {"v_range": [["v6.0.0", ""]], "type": "integer", "required": True}, + "uuid": {"v_range": [["v7.4.2", ""]], "type": "string"}, "status": { "v_range": [["v6.0.0", ""]], "type": "string", @@ -760,12 +861,6 @@ versioned_schema = { "options": [{"value": "enable"}, {"value": "disable"}], }, "av_profile": {"v_range": [["v6.0.0", ""]], "type": "string"}, - "casb_profile_status": { - "v_range": [["v7.4.1", ""]], - "type": "string", - "options": [{"value": "enable"}, {"value": "disable"}], - }, - "casb_profile": {"v_range": [["v7.4.1", ""]], "type": "string"}, "webfilter_profile_status": { "v_range": [["v6.0.0", ""]], "type": "string", @@ -852,6 +947,93 @@ versioned_schema = { "options": [{"value": "disable"}, {"value": "enable"}], }, "threshold": {"v_range": [["v6.0.0", ""]], "type": "integer"}, + "synproxy_ttl": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "32"}, + {"value": "64"}, + {"value": "128"}, + {"value": "255"}, + ], + }, + "synproxy_tos": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "0"}, + {"value": "10"}, + {"value": "12"}, + {"value": "14"}, + {"value": "18"}, + {"value": "20"}, + {"value": "22"}, + {"value": "26"}, + {"value": "28"}, + {"value": "30"}, + {"value": "34"}, + {"value": "36"}, + {"value": "38"}, + {"value": "40"}, + {"value": "46"}, + {"value": "255"}, + ], + }, + "synproxy_tcp_mss": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "0"}, + {"value": "256"}, + {"value": "512"}, + {"value": "1024"}, + {"value": "1300"}, + {"value": "1360"}, + {"value": "1460"}, + {"value": "1500"}, + ], + }, + "synproxy_tcp_sack": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "synproxy_tcp_timestamp": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "synproxy_tcp_window": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "4096"}, + {"value": "8192"}, + {"value": "16384"}, + {"value": "32768"}, + ], + }, + "synproxy_tcp_windowscale": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "0"}, + {"value": "1"}, + {"value": "2"}, + {"value": "3"}, + {"value": "4"}, + {"value": "5"}, + {"value": "6"}, + {"value": "7"}, + {"value": "8"}, + {"value": "9"}, + {"value": "10"}, + {"value": "11"}, + {"value": "12"}, + {"value": "13"}, + {"value": "14"}, + ], + }, "threshold_default": { "v_range": [["v6.0.0", "v7.0.5"], ["v7.2.0", "v7.2.0"]], "type": "integer", @@ -859,6 +1041,12 @@ versioned_schema = { }, "v_range": [["v6.0.0", ""]], }, + "casb_profile_status": { + "v_range": [["v7.4.1", "v7.4.1"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "casb_profile": {"v_range": [["v7.4.1", "v7.4.1"]], "type": "string"}, "dlp_sensor_status": { "v_range": [["v6.0.0", "v7.0.12"]], "type": "string", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ssh_host_key.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ssh_host_key.py index 73b601ccf..53b66adbd 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ssh_host_key.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ssh_host_key.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -294,9 +294,8 @@ def firewall_ssh_host_key(data, fos, check_mode=False): state = data["state"] firewall_ssh_host_key_data = data["firewall_ssh_host_key"] - filtered_data = underscore_to_hyphen( - filter_firewall_ssh_host_key_data(firewall_ssh_host_key_data) - ) + filtered_data = filter_firewall_ssh_host_key_data(firewall_ssh_host_key_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -360,7 +359,7 @@ def firewall_ssh_host_key(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall.ssh", "host-key", data=filtered_data, vdom=vdom) + return fos.set("firewall.ssh", "host-key", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ssh_local_ca.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ssh_local_ca.py index cd4e55c89..63a7da52f 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ssh_local_ca.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ssh_local_ca.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -248,9 +248,8 @@ def firewall_ssh_local_ca(data, fos, check_mode=False): state = data["state"] firewall_ssh_local_ca_data = data["firewall_ssh_local_ca"] - filtered_data = underscore_to_hyphen( - filter_firewall_ssh_local_ca_data(firewall_ssh_local_ca_data) - ) + filtered_data = filter_firewall_ssh_local_ca_data(firewall_ssh_local_ca_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -314,7 +313,7 @@ def firewall_ssh_local_ca(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall.ssh", "local-ca", data=filtered_data, vdom=vdom) + return fos.set("firewall.ssh", "local-ca", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ssh_local_key.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ssh_local_key.py index fd3d483de..fb6ef65d7 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ssh_local_key.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ssh_local_key.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -248,9 +248,8 @@ def firewall_ssh_local_key(data, fos, check_mode=False): state = data["state"] firewall_ssh_local_key_data = data["firewall_ssh_local_key"] - filtered_data = underscore_to_hyphen( - filter_firewall_ssh_local_key_data(firewall_ssh_local_key_data) - ) + filtered_data = filter_firewall_ssh_local_key_data(firewall_ssh_local_key_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -314,7 +313,7 @@ def firewall_ssh_local_key(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall.ssh", "local-key", data=filtered_data, vdom=vdom) + return fos.set("firewall.ssh", "local-key", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ssh_setting.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ssh_setting.py index ac50dc13d..55092662e 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ssh_setting.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ssh_setting.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -255,11 +255,10 @@ def underscore_to_hyphen(data): def firewall_ssh_setting(data, fos): vdom = data["vdom"] firewall_ssh_setting_data = data["firewall_ssh_setting"] - filtered_data = underscore_to_hyphen( - filter_firewall_ssh_setting_data(firewall_ssh_setting_data) - ) + filtered_data = filter_firewall_ssh_setting_data(firewall_ssh_setting_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("firewall.ssh", "setting", data=filtered_data, vdom=vdom) + return fos.set("firewall.ssh", "setting", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ssl_server.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ssl_server.py index c98d4f1c2..fa3f6b118 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ssl_server.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ssl_server.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -124,6 +124,18 @@ options: description: - Name of certificate for SSL connections to this server . Source vpn.certificate.local.name. type: str + ssl_cert_dict: + description: + - List of certificate names to use for SSL connections to this server. . Use the parameter ssl_cert if the fortiOS firmware version <= 7.4 + .1 + type: list + elements: dict + suboptions: + name: + description: + - Certificate list. Source vpn.certificate.local.name. + required: true + type: str ssl_client_renegotiation: description: - Allow or block client renegotiation by server. @@ -196,6 +208,9 @@ EXAMPLES = """ port: "443" ssl_algorithm: "high" ssl_cert: "<your_own_value> (source vpn.certificate.local.name)" + ssl_cert_dict: + - + name: "default_name_11 (source vpn.certificate.local.name)" ssl_client_renegotiation: "allow" ssl_dh_bits: "768" ssl_max_version: "tls-1.0" @@ -302,6 +317,7 @@ def filter_firewall_ssl_server_data(json): "port", "ssl_algorithm", "ssl_cert", + "ssl_cert_dict", "ssl_client_renegotiation", "ssl_dh_bits", "ssl_max_version", @@ -334,15 +350,39 @@ def underscore_to_hyphen(data): return data +def remap_attribute_name(data): + speciallist = {"ssl-cert-dict": "ssl-cert"} + + if data in speciallist: + return speciallist[data] + return data + + +def remap_attribute_names(data): + if isinstance(data, list): + new_data = [] + for elem in data: + elem = remap_attribute_names(elem) + new_data.append(elem) + data = new_data + elif isinstance(data, dict): + new_data = {} + for k, v in data.items(): + new_data[remap_attribute_name(k)] = remap_attribute_names(v) + data = new_data + + return data + + def firewall_ssl_server(data, fos, check_mode=False): vdom = data["vdom"] state = data["state"] firewall_ssl_server_data = data["firewall_ssl_server"] - filtered_data = underscore_to_hyphen( - filter_firewall_ssl_server_data(firewall_ssl_server_data) - ) + filtered_data = filter_firewall_ssl_server_data(firewall_ssl_server_data) + converted_data = underscore_to_hyphen(filtered_data) + converted_data = remap_attribute_names(converted_data) # check_mode starts from here if check_mode: @@ -406,7 +446,7 @@ def firewall_ssl_server(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall", "ssl-server", data=filtered_data, vdom=vdom) + return fos.set("firewall", "ssl-server", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( @@ -463,7 +503,18 @@ versioned_schema = { "options": [{"value": "enable"}, {"value": "disable"}], }, "mapped_port": {"v_range": [["v6.0.0", ""]], "type": "integer"}, - "ssl_cert": {"v_range": [["v6.0.0", ""]], "type": "string"}, + "ssl_cert_dict": { + "type": "list", + "elements": "dict", + "children": { + "name": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "required": True, + } + }, + "v_range": [["v7.4.2", ""]], + }, "ssl_dh_bits": { "v_range": [["v6.0.0", ""]], "type": "string", @@ -514,6 +565,7 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "ssl_cert": {"v_range": [["v6.0.0", "v7.4.1"]], "type": "string"}, }, "v_range": [["v6.0.0", ""]], } diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ssl_setting.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ssl_setting.py index 86b3d92cf..c2388376d 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ssl_setting.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ssl_setting.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -278,11 +278,10 @@ def underscore_to_hyphen(data): def firewall_ssl_setting(data, fos): vdom = data["vdom"] firewall_ssl_setting_data = data["firewall_ssl_setting"] - filtered_data = underscore_to_hyphen( - filter_firewall_ssl_setting_data(firewall_ssl_setting_data) - ) + filtered_data = filter_firewall_ssl_setting_data(firewall_ssl_setting_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("firewall.ssl", "setting", data=filtered_data, vdom=vdom) + return fos.set("firewall.ssl", "setting", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ssl_ssh_profile.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ssl_ssh_profile.py index fac1f496e..3b14ef1ad 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ssl_ssh_profile.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ssl_ssh_profile.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -163,9 +163,12 @@ options: - 'disable' quic: description: - - Enable/disable QUIC inspection . + - QUIC inspection status . type: str choices: + - 'inspect' + - 'bypass' + - 'block' - 'disable' - 'enable' revoked_server_cert: @@ -454,9 +457,12 @@ options: - 'disable' quic: description: - - Enable/disable QUIC inspection . + - QUIC inspection status . type: str choices: + - 'inspect' + - 'bypass' + - 'block' - 'disable' - 'enable' revoked_server_cert: @@ -1446,7 +1452,7 @@ EXAMPLES = """ client_certificate: "bypass" expired_server_cert: "allow" proxy_after_tcp_handshake: "enable" - quic: "disable" + quic: "inspect" revoked_server_cert: "allow" sni_server_cert_check: "enable" status: "disable" @@ -1485,7 +1491,7 @@ EXAMPLES = """ min_allowed_ssl_version: "ssl-3.0" ports: "<your_own_value>" proxy_after_tcp_handshake: "enable" - quic: "disable" + quic: "inspect" revoked_server_cert: "allow" sni_server_cert_check: "enable" status: "disable" @@ -1816,9 +1822,8 @@ def firewall_ssl_ssh_profile(data, fos, check_mode=False): firewall_ssl_ssh_profile_data = flatten_multilists_attributes( firewall_ssl_ssh_profile_data ) - filtered_data = underscore_to_hyphen( - filter_firewall_ssl_ssh_profile_data(firewall_ssl_ssh_profile_data) - ) + filtered_data = filter_firewall_ssl_ssh_profile_data(firewall_ssl_ssh_profile_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -1882,7 +1887,7 @@ def firewall_ssl_ssh_profile(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall", "ssl-ssh-profile", data=filtered_data, vdom=vdom) + return fos.set("firewall", "ssl-ssh-profile", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( @@ -2101,7 +2106,13 @@ versioned_schema = { "quic": { "v_range": [["v7.4.1", ""]], "type": "string", - "options": [{"value": "disable"}, {"value": "enable"}], + "options": [ + {"value": "inspect", "v_range": [["v7.4.2", ""]]}, + {"value": "bypass", "v_range": [["v7.4.2", ""]]}, + {"value": "block", "v_range": [["v7.4.2", ""]]}, + {"value": "disable", "v_range": [["v7.4.1", "v7.4.1"]]}, + {"value": "enable", "v_range": [["v7.4.1", "v7.4.1"]]}, + ], }, "proxy_after_tcp_handshake": { "v_range": [["v6.4.0", ""]], @@ -2874,7 +2885,13 @@ versioned_schema = { "quic": { "v_range": [["v7.4.1", ""]], "type": "string", - "options": [{"value": "disable"}, {"value": "enable"}], + "options": [ + {"value": "inspect", "v_range": [["v7.4.2", ""]]}, + {"value": "bypass", "v_range": [["v7.4.2", ""]]}, + {"value": "block", "v_range": [["v7.4.2", ""]]}, + {"value": "disable", "v_range": [["v7.4.1", "v7.4.1"]]}, + {"value": "enable", "v_range": [["v7.4.1", "v7.4.1"]]}, + ], }, "proxy_after_tcp_handshake": { "v_range": [["v7.0.0", ""]], diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_traffic_class.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_traffic_class.py index 3e70b17ac..536d42d8a 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_traffic_class.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_traffic_class.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -232,9 +232,8 @@ def firewall_traffic_class(data, fos, check_mode=False): state = data["state"] firewall_traffic_class_data = data["firewall_traffic_class"] - filtered_data = underscore_to_hyphen( - filter_firewall_traffic_class_data(firewall_traffic_class_data) - ) + filtered_data = filter_firewall_traffic_class_data(firewall_traffic_class_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -298,7 +297,7 @@ def firewall_traffic_class(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall", "traffic-class", data=filtered_data, vdom=vdom) + return fos.set("firewall", "traffic-class", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ttl_policy.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ttl_policy.py index 3922cbf4e..dcb174070 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ttl_policy.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_ttl_policy.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -296,9 +296,8 @@ def firewall_ttl_policy(data, fos, check_mode=False): state = data["state"] firewall_ttl_policy_data = data["firewall_ttl_policy"] - filtered_data = underscore_to_hyphen( - filter_firewall_ttl_policy_data(firewall_ttl_policy_data) - ) + filtered_data = filter_firewall_ttl_policy_data(firewall_ttl_policy_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -362,7 +361,7 @@ def firewall_ttl_policy(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall", "ttl-policy", data=filtered_data, vdom=vdom) + return fos.set("firewall", "ttl-policy", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("firewall", "ttl-policy", mkey=filtered_data["id"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_vendor_mac.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_vendor_mac.py index 6dc0b3d14..d21b53aa3 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_vendor_mac.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_vendor_mac.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -242,9 +242,8 @@ def firewall_vendor_mac(data, fos, check_mode=False): state = data["state"] firewall_vendor_mac_data = data["firewall_vendor_mac"] - filtered_data = underscore_to_hyphen( - filter_firewall_vendor_mac_data(firewall_vendor_mac_data) - ) + filtered_data = filter_firewall_vendor_mac_data(firewall_vendor_mac_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -308,7 +307,7 @@ def firewall_vendor_mac(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall", "vendor-mac", data=filtered_data, vdom=vdom) + return fos.set("firewall", "vendor-mac", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("firewall", "vendor-mac", mkey=filtered_data["id"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_vip.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_vip.py index a26b5db44..43d2a811c 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_vip.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_vip.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -142,6 +142,29 @@ options: description: - Enable to have the VIP send gratuitous ARPs. 0=disabled. Set from 5 up to 8640000 seconds to enable. type: int + gslb_domain_name: + description: + - Domain to use when integrating with FortiGSLB. + type: str + gslb_hostname: + description: + - Hostname to use within the configured FortiGSLB domain. + type: str + gslb_public_ips: + description: + - Publicly accessible IP addresses for the FortiGSLB service. + type: list + elements: dict + suboptions: + index: + description: + - Index of this public IP setting. see <a href='#notes'>Notes</a>. + required: true + type: int + ip: + description: + - The publicly accessible IP address. + type: str h2_support: description: - Enable/disable HTTP2 support . @@ -323,6 +346,13 @@ options: choices: - 'disable' - 'enable' + one_click_gslb_server: + description: + - Enable/disable one click GSLB server integration with FortiGSLB. + type: str + choices: + - 'disable' + - 'enable' outlook_web_access: description: - Enable to add the Front-End-Https header for Microsoft Outlook Web Access. @@ -557,6 +587,17 @@ options: description: - The name of the certificate to use for SSL handshake. Source vpn.certificate.local.name. type: str + ssl_certificate_dict: + description: + - Name of the certificate to use for SSL handshake. Use the parameter ssl-certificate instead if the fortiOS firmwear <= 7.4.1 + type: list + elements: dict + suboptions: + name: + description: + - Certificate list. Source vpn.certificate.local.name. + required: true + type: str ssl_cipher_suites: description: - SSL/TLS cipher suites acceptable from a client, ordered by priority. @@ -1020,6 +1061,12 @@ EXAMPLES = """ extip: "<your_own_value>" extport: "<your_own_value>" gratuitous_arp_interval: "0" + gslb_domain_name: "<your_own_value>" + gslb_hostname: "myhostname" + gslb_public_ips: + - + index: "<you_own_value>" + ip: "<your_own_value>" h2_support: "enable" h3_support: "enable" http_cookie_age: "60" @@ -1037,7 +1084,7 @@ EXAMPLES = """ http_redirect: "enable" http_supported_max_version: "http1" https_cookie_secure: "disable" - id: "31" + id: "36" ipv6_mappedip: "<your_own_value>" ipv6_mappedport: "<your_own_value>" ldb_method: "static" @@ -1049,11 +1096,12 @@ EXAMPLES = """ max_embryonic_connections: "1000" monitor: - - name: "default_name_41 (source firewall.ldb-monitor.name)" - name: "default_name_42" + name: "default_name_46 (source firewall.ldb-monitor.name)" + name: "default_name_47" nat_source_vip: "disable" nat44: "disable" nat46: "disable" + one_click_gslb_server: "disable" outlook_web_access: "disable" persistence: "none" portforward: "disable" @@ -1075,12 +1123,12 @@ EXAMPLES = """ healthcheck: "disable" holddown_interval: "300" http_host: "myhostname" - id: "66" + id: "72" ip: "<your_own_value>" max_connections: "0" monitor: - - name: "default_name_70 (source firewall.ldb-monitor.name)" + name: "default_name_76 (source firewall.ldb-monitor.name)" port: "0" status: "active" translate_host: "enable" @@ -1089,7 +1137,7 @@ EXAMPLES = """ server_type: "http" service: - - name: "default_name_78 (source firewall.service.custom.name firewall.service.group.name)" + name: "default_name_84 (source firewall.service.custom.name firewall.service.group.name)" src_filter: - range: "<your_own_value>" @@ -1099,6 +1147,9 @@ EXAMPLES = """ ssl_accept_ffdhe_groups: "enable" ssl_algorithm: "high" ssl_certificate: "<your_own_value> (source vpn.certificate.local.name)" + ssl_certificate_dict: + - + name: "default_name_93 (source vpn.certificate.local.name)" ssl_cipher_suites: - cipher: "TLS-AES-128-GCM-SHA256" @@ -1246,6 +1297,9 @@ def filter_firewall_vip_data(json): "extip", "extport", "gratuitous_arp_interval", + "gslb_domain_name", + "gslb_hostname", + "gslb_public_ips", "h2_support", "h3_support", "http_cookie_age", @@ -1276,6 +1330,7 @@ def filter_firewall_vip_data(json): "nat_source_vip", "nat44", "nat46", + "one_click_gslb_server", "outlook_web_access", "persistence", "portforward", @@ -1290,6 +1345,7 @@ def filter_firewall_vip_data(json): "ssl_accept_ffdhe_groups", "ssl_algorithm", "ssl_certificate", + "ssl_certificate_dict", "ssl_cipher_suites", "ssl_client_fallback", "ssl_client_rekey_count", @@ -1382,6 +1438,30 @@ def underscore_to_hyphen(data): return data +def remap_attribute_name(data): + speciallist = {"ssl-certificate-dict": "ssl-certificate"} + + if data in speciallist: + return speciallist[data] + return data + + +def remap_attribute_names(data): + if isinstance(data, list): + new_data = [] + for elem in data: + elem = remap_attribute_names(elem) + new_data.append(elem) + data = new_data + elif isinstance(data, dict): + new_data = {} + for k, v in data.items(): + new_data[remap_attribute_name(k)] = remap_attribute_names(v) + data = new_data + + return data + + def firewall_vip(data, fos, check_mode=False): vdom = data["vdom"] @@ -1389,7 +1469,9 @@ def firewall_vip(data, fos, check_mode=False): firewall_vip_data = data["firewall_vip"] firewall_vip_data = flatten_multilists_attributes(firewall_vip_data) - filtered_data = underscore_to_hyphen(filter_firewall_vip_data(firewall_vip_data)) + filtered_data = filter_firewall_vip_data(firewall_vip_data) + converted_data = underscore_to_hyphen(filtered_data) + converted_data = remap_attribute_names(converted_data) # check_mode starts from here if check_mode: @@ -1453,7 +1535,7 @@ def firewall_vip(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall", "vip", data=filtered_data, vdom=vdom) + return fos.set("firewall", "vip", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("firewall", "vip", mkey=filtered_data["name"], vdom=vdom) @@ -1827,7 +1909,18 @@ versioned_schema = { "type": "string", "options": [{"value": "half"}, {"value": "full"}], }, - "ssl_certificate": {"v_range": [["v6.0.0", ""]], "type": "string"}, + "ssl_certificate_dict": { + "type": "list", + "elements": "dict", + "children": { + "name": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "required": True, + } + }, + "v_range": [["v7.4.2", ""]], + }, "ssl_dh_bits": { "v_range": [["v6.0.0", ""]], "type": "string", @@ -2257,6 +2350,27 @@ versioned_schema = { "color": {"v_range": [["v6.0.0", ""]], "type": "integer"}, "ipv6_mappedip": {"v_range": [["v7.0.1", ""]], "type": "string"}, "ipv6_mappedport": {"v_range": [["v7.0.1", ""]], "type": "string"}, + "one_click_gslb_server": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "disable"}, {"value": "enable"}], + }, + "gslb_hostname": {"v_range": [["v7.4.2", ""]], "type": "string"}, + "gslb_domain_name": {"v_range": [["v7.4.2", ""]], "type": "string"}, + "gslb_public_ips": { + "type": "list", + "elements": "dict", + "children": { + "index": { + "v_range": [["v7.4.2", ""]], + "type": "integer", + "required": True, + }, + "ip": {"v_range": [["v7.4.2", ""]], "type": "string"}, + }, + "v_range": [["v7.4.2", ""]], + }, + "ssl_certificate": {"v_range": [["v6.0.0", "v7.4.1"]], "type": "string"}, "http_supported_max_version": { "v_range": [["v7.2.4", "v7.4.0"]], "type": "string", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_vip46.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_vip46.py index 6eedf95d5..5abeb7d2a 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_vip46.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_vip46.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -457,9 +457,8 @@ def firewall_vip46(data, fos, check_mode=False): state = data["state"] firewall_vip46_data = data["firewall_vip46"] - filtered_data = underscore_to_hyphen( - filter_firewall_vip46_data(firewall_vip46_data) - ) + filtered_data = filter_firewall_vip46_data(firewall_vip46_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -523,7 +522,7 @@ def firewall_vip46(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall", "vip46", data=filtered_data, vdom=vdom) + return fos.set("firewall", "vip46", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("firewall", "vip46", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_vip6.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_vip6.py index 916d93599..dc3343463 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_vip6.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_vip6.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -125,6 +125,20 @@ options: description: - Incoming port number range that you want to map to a port number range on the destination network. type: str + h2_support: + description: + - Enable/disable HTTP2 support . + type: str + choices: + - 'enable' + - 'disable' + h3_support: + description: + - Enable/disable HTTP3/QUIC support . + type: str + choices: + - 'enable' + - 'disable' http_cookie_age: description: - Time in minutes that client web browsers should keep a cookie. Default is 60 minutes. 0 = no time limit. @@ -299,6 +313,49 @@ options: - 'tcp' - 'udp' - 'sctp' + quic: + description: + - QUIC setting. + type: dict + suboptions: + ack_delay_exponent: + description: + - ACK delay exponent (1 - 20). + type: int + active_connection_id_limit: + description: + - Active connection ID limit (1 - 8). + type: int + active_migration: + description: + - Enable/disable active migration . + type: str + choices: + - 'enable' + - 'disable' + grease_quic_bit: + description: + - Enable/disable grease QUIC bit . + type: str + choices: + - 'enable' + - 'disable' + max_ack_delay: + description: + - Maximum ACK delay in milliseconds (1 - 16383). + type: int + max_datagram_frame_size: + description: + - Maximum datagram frame size in bytes (1 - 1500). + type: int + max_idle_timeout: + description: + - Maximum idle timeout milliseconds (1 - 60000). + type: int + max_udp_payload_size: + description: + - Maximum UDP payload size in bytes (1200 - 1500). + type: int realservers: description: - Select the real servers that this server load balancing VIP will distribute traffic to. @@ -418,6 +475,17 @@ options: description: - The name of the certificate to use for SSL handshake. Source vpn.certificate.local.name. type: str + ssl_certificate_dict: + description: + - Name of the certificate to use for SSL handshake. Use the parameter ssl-certificate instead if the fortiOS firmwear <= 7.4.1 + type: list + elements: dict + suboptions: + name: + description: + - Certificate list. Source vpn.certificate.local.name. + required: true + type: str ssl_cipher_suites: description: - SSL/TLS cipher suites acceptable from a client, ordered by priority. @@ -866,6 +934,8 @@ EXAMPLES = """ embedded_ipv4_address: "disable" extip: "<your_own_value>" extport: "<your_own_value>" + h2_support: "enable" + h3_support: "enable" http_cookie_age: "60" http_cookie_domain: "<your_own_value>" http_cookie_domain_from_host: "disable" @@ -877,7 +947,7 @@ EXAMPLES = """ http_multiplex: "enable" http_redirect: "enable" https_cookie_secure: "disable" - id: "21" + id: "23" ipv4_mappedip: "<your_own_value>" ipv4_mappedport: "<your_own_value>" ldb_method: "static" @@ -886,8 +956,8 @@ EXAMPLES = """ max_embryonic_connections: "1000" monitor: - - name: "default_name_29 (source firewall.ldb-monitor.name)" - name: "default_name_30" + name: "default_name_31 (source firewall.ldb-monitor.name)" + name: "default_name_32" nat_source_vip: "disable" nat64: "disable" nat66: "disable" @@ -896,18 +966,27 @@ EXAMPLES = """ persistence: "none" portforward: "disable" protocol: "tcp" + quic: + ack_delay_exponent: "3" + active_connection_id_limit: "2" + active_migration: "enable" + grease_quic_bit: "enable" + max_ack_delay: "25" + max_datagram_frame_size: "1500" + max_idle_timeout: "30000" + max_udp_payload_size: "1500" realservers: - client_ip: "<your_own_value>" healthcheck: "disable" holddown_interval: "300" http_host: "myhostname" - id: "44" + id: "55" ip: "<your_own_value>" max_connections: "0" monitor: - - name: "default_name_48 (source firewall.ldb-monitor.name)" + name: "default_name_59 (source firewall.ldb-monitor.name)" port: "0" status: "active" translate_host: "enable" @@ -919,6 +998,9 @@ EXAMPLES = """ ssl_accept_ffdhe_groups: "enable" ssl_algorithm: "high" ssl_certificate: "<your_own_value> (source vpn.certificate.local.name)" + ssl_certificate_dict: + - + name: "default_name_71 (source vpn.certificate.local.name)" ssl_cipher_suites: - cipher: "TLS-AES-128-GCM-SHA256" @@ -1062,6 +1144,8 @@ def filter_firewall_vip6_data(json): "embedded_ipv4_address", "extip", "extport", + "h2_support", + "h3_support", "http_cookie_age", "http_cookie_domain", "http_cookie_domain_from_host", @@ -1090,12 +1174,14 @@ def filter_firewall_vip6_data(json): "persistence", "portforward", "protocol", + "quic", "realservers", "server_type", "src_filter", "ssl_accept_ffdhe_groups", "ssl_algorithm", "ssl_certificate", + "ssl_certificate_dict", "ssl_cipher_suites", "ssl_client_fallback", "ssl_client_rekey_count", @@ -1187,6 +1273,30 @@ def underscore_to_hyphen(data): return data +def remap_attribute_name(data): + speciallist = {"ssl-certificate-dict": "ssl-certificate"} + + if data in speciallist: + return speciallist[data] + return data + + +def remap_attribute_names(data): + if isinstance(data, list): + new_data = [] + for elem in data: + elem = remap_attribute_names(elem) + new_data.append(elem) + data = new_data + elif isinstance(data, dict): + new_data = {} + for k, v in data.items(): + new_data[remap_attribute_name(k)] = remap_attribute_names(v) + data = new_data + + return data + + def firewall_vip6(data, fos, check_mode=False): vdom = data["vdom"] @@ -1194,7 +1304,9 @@ def firewall_vip6(data, fos, check_mode=False): firewall_vip6_data = data["firewall_vip6"] firewall_vip6_data = flatten_multilists_attributes(firewall_vip6_data) - filtered_data = underscore_to_hyphen(filter_firewall_vip6_data(firewall_vip6_data)) + filtered_data = filter_firewall_vip6_data(firewall_vip6_data) + converted_data = underscore_to_hyphen(filtered_data) + converted_data = remap_attribute_names(converted_data) # check_mode starts from here if check_mode: @@ -1258,7 +1370,7 @@ def firewall_vip6(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall", "vip6", data=filtered_data, vdom=vdom) + return fos.set("firewall", "vip6", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("firewall", "vip6", mkey=filtered_data["name"], vdom=vdom) @@ -1391,6 +1503,47 @@ versioned_schema = { {"value": "ssl-session-id"}, ], }, + "h2_support": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "h3_support": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "quic": { + "v_range": [["v7.4.2", ""]], + "type": "dict", + "children": { + "max_idle_timeout": {"v_range": [["v7.4.2", ""]], "type": "integer"}, + "max_udp_payload_size": { + "v_range": [["v7.4.2", ""]], + "type": "integer", + }, + "active_connection_id_limit": { + "v_range": [["v7.4.2", ""]], + "type": "integer", + }, + "ack_delay_exponent": {"v_range": [["v7.4.2", ""]], "type": "integer"}, + "max_ack_delay": {"v_range": [["v7.4.2", ""]], "type": "integer"}, + "max_datagram_frame_size": { + "v_range": [["v7.4.2", ""]], + "type": "integer", + }, + "active_migration": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "grease_quic_bit": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + }, + }, "nat66": { "v_range": [["v7.0.1", ""]], "type": "string", @@ -1510,7 +1663,18 @@ versioned_schema = { "type": "string", "options": [{"value": "half"}, {"value": "full"}], }, - "ssl_certificate": {"v_range": [["v6.0.0", ""]], "type": "string"}, + "ssl_certificate_dict": { + "type": "list", + "elements": "dict", + "children": { + "name": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "required": True, + } + }, + "v_range": [["v7.4.2", ""]], + }, "ssl_dh_bits": { "v_range": [["v6.0.0", ""]], "type": "string", @@ -1944,6 +2108,7 @@ versioned_schema = { }, "ipv4_mappedip": {"v_range": [["v7.0.1", ""]], "type": "string"}, "ipv4_mappedport": {"v_range": [["v7.0.1", ""]], "type": "string"}, + "ssl_certificate": {"v_range": [["v6.0.0", "v7.4.1"]], "type": "string"}, "arp_reply": { "v_range": [["v6.0.0", "v7.0.7"], ["v7.2.0", "v7.2.2"]], "type": "string", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_vip64.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_vip64.py index d184b9d33..2beb57f86 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_vip64.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_vip64.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -442,9 +442,8 @@ def firewall_vip64(data, fos, check_mode=False): state = data["state"] firewall_vip64_data = data["firewall_vip64"] - filtered_data = underscore_to_hyphen( - filter_firewall_vip64_data(firewall_vip64_data) - ) + filtered_data = filter_firewall_vip64_data(firewall_vip64_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -508,7 +507,7 @@ def firewall_vip64(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall", "vip64", data=filtered_data, vdom=vdom) + return fos.set("firewall", "vip64", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("firewall", "vip64", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_vipgrp.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_vipgrp.py index 3ab54edf5..3ac304e64 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_vipgrp.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_vipgrp.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -259,9 +259,8 @@ def firewall_vipgrp(data, fos, check_mode=False): state = data["state"] firewall_vipgrp_data = data["firewall_vipgrp"] - filtered_data = underscore_to_hyphen( - filter_firewall_vipgrp_data(firewall_vipgrp_data) - ) + filtered_data = filter_firewall_vipgrp_data(firewall_vipgrp_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -325,7 +324,7 @@ def firewall_vipgrp(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall", "vipgrp", data=filtered_data, vdom=vdom) + return fos.set("firewall", "vipgrp", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("firewall", "vipgrp", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_vipgrp46.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_vipgrp46.py index 82b5d673f..09f81363c 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_vipgrp46.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_vipgrp46.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -254,9 +254,8 @@ def firewall_vipgrp46(data, fos, check_mode=False): state = data["state"] firewall_vipgrp46_data = data["firewall_vipgrp46"] - filtered_data = underscore_to_hyphen( - filter_firewall_vipgrp46_data(firewall_vipgrp46_data) - ) + filtered_data = filter_firewall_vipgrp46_data(firewall_vipgrp46_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -320,7 +319,7 @@ def firewall_vipgrp46(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall", "vipgrp46", data=filtered_data, vdom=vdom) + return fos.set("firewall", "vipgrp46", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("firewall", "vipgrp46", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_vipgrp6.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_vipgrp6.py index d68662679..b3da61e19 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_vipgrp6.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_vipgrp6.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -254,9 +254,8 @@ def firewall_vipgrp6(data, fos, check_mode=False): state = data["state"] firewall_vipgrp6_data = data["firewall_vipgrp6"] - filtered_data = underscore_to_hyphen( - filter_firewall_vipgrp6_data(firewall_vipgrp6_data) - ) + filtered_data = filter_firewall_vipgrp6_data(firewall_vipgrp6_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -320,7 +319,7 @@ def firewall_vipgrp6(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall", "vipgrp6", data=filtered_data, vdom=vdom) + return fos.set("firewall", "vipgrp6", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("firewall", "vipgrp6", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_vipgrp64.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_vipgrp64.py index f7057cd4f..315d3a6d5 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_vipgrp64.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_vipgrp64.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -254,9 +254,8 @@ def firewall_vipgrp64(data, fos, check_mode=False): state = data["state"] firewall_vipgrp64_data = data["firewall_vipgrp64"] - filtered_data = underscore_to_hyphen( - filter_firewall_vipgrp64_data(firewall_vipgrp64_data) - ) + filtered_data = filter_firewall_vipgrp64_data(firewall_vipgrp64_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -320,7 +319,7 @@ def firewall_vipgrp64(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall", "vipgrp64", data=filtered_data, vdom=vdom) + return fos.set("firewall", "vipgrp64", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("firewall", "vipgrp64", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_wildcard_fqdn_custom.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_wildcard_fqdn_custom.py index a32fa7dcd..e4f609018 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_wildcard_fqdn_custom.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_wildcard_fqdn_custom.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -253,9 +253,10 @@ def firewall_wildcard_fqdn_custom(data, fos, check_mode=False): state = data["state"] firewall_wildcard_fqdn_custom_data = data["firewall_wildcard_fqdn_custom"] - filtered_data = underscore_to_hyphen( - filter_firewall_wildcard_fqdn_custom_data(firewall_wildcard_fqdn_custom_data) + filtered_data = filter_firewall_wildcard_fqdn_custom_data( + firewall_wildcard_fqdn_custom_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -322,7 +323,7 @@ def firewall_wildcard_fqdn_custom(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "firewall.wildcard-fqdn", "custom", data=filtered_data, vdom=vdom + "firewall.wildcard-fqdn", "custom", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_wildcard_fqdn_group.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_wildcard_fqdn_group.py index 18bc8141d..a7f211883 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_wildcard_fqdn_group.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_firewall_wildcard_fqdn_group.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -262,9 +262,10 @@ def firewall_wildcard_fqdn_group(data, fos, check_mode=False): state = data["state"] firewall_wildcard_fqdn_group_data = data["firewall_wildcard_fqdn_group"] - filtered_data = underscore_to_hyphen( - filter_firewall_wildcard_fqdn_group_data(firewall_wildcard_fqdn_group_data) + filtered_data = filter_firewall_wildcard_fqdn_group_data( + firewall_wildcard_fqdn_group_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -328,7 +329,9 @@ def firewall_wildcard_fqdn_group(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("firewall.wildcard-fqdn", "group", data=filtered_data, vdom=vdom) + return fos.set( + "firewall.wildcard-fqdn", "group", data=converted_data, vdom=vdom + ) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_ftp_proxy_explicit.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_ftp_proxy_explicit.py index 6cd4860de..8d11fb777 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_ftp_proxy_explicit.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_ftp_proxy_explicit.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -126,6 +126,17 @@ options: description: - Name of certificate for SSL connections to this server . Source certificate.local.name. type: str + ssl_cert_dict: + description: + - List of certificate names to use for SSL connections to this server. Use the parameter ssl-cert if the fortiOS firmware version <= 7.4.1 + type: list + elements: dict + suboptions: + name: + description: + - Certificate list. Source vpn.certificate.local.name. + required: true + type: str ssl_dh_bits: description: - Bit-size of Diffie-Hellman (DH) prime used in DHE-RSA negotiation . @@ -157,6 +168,9 @@ EXAMPLES = """ ssl: "enable" ssl_algorithm: "high" ssl_cert: "<your_own_value> (source certificate.local.name)" + ssl_cert_dict: + - + name: "default_name_12 (source vpn.certificate.local.name)" ssl_dh_bits: "768" status: "enable" """ @@ -250,6 +264,7 @@ def filter_ftp_proxy_explicit_data(json): "ssl", "ssl_algorithm", "ssl_cert", + "ssl_cert_dict", "ssl_dh_bits", "status", ] @@ -306,15 +321,39 @@ def underscore_to_hyphen(data): return data +def remap_attribute_name(data): + speciallist = {"ssl-cert-dict": "ssl-cert"} + + if data in speciallist: + return speciallist[data] + return data + + +def remap_attribute_names(data): + if isinstance(data, list): + new_data = [] + for elem in data: + elem = remap_attribute_names(elem) + new_data.append(elem) + data = new_data + elif isinstance(data, dict): + new_data = {} + for k, v in data.items(): + new_data[remap_attribute_name(k)] = remap_attribute_names(v) + data = new_data + + return data + + def ftp_proxy_explicit(data, fos): vdom = data["vdom"] ftp_proxy_explicit_data = data["ftp_proxy_explicit"] ftp_proxy_explicit_data = flatten_multilists_attributes(ftp_proxy_explicit_data) - filtered_data = underscore_to_hyphen( - filter_ftp_proxy_explicit_data(ftp_proxy_explicit_data) - ) + filtered_data = filter_ftp_proxy_explicit_data(ftp_proxy_explicit_data) + converted_data = underscore_to_hyphen(filtered_data) + converted_data = remap_attribute_names(converted_data) - return fos.set("ftp-proxy", "explicit", data=filtered_data, vdom=vdom) + return fos.set("ftp-proxy", "explicit", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -377,7 +416,18 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, - "ssl_cert": {"v_range": [["v6.2.0", ""]], "type": "string"}, + "ssl_cert_dict": { + "type": "list", + "elements": "dict", + "children": { + "name": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "required": True, + } + }, + "v_range": [["v7.4.2", ""]], + }, "ssl_dh_bits": { "v_range": [["v6.2.0", ""]], "type": "string", @@ -393,6 +443,7 @@ versioned_schema = { "type": "string", "options": [{"value": "high"}, {"value": "medium"}, {"value": "low"}], }, + "ssl_cert": {"v_range": [["v6.2.0", "v7.4.1"]], "type": "string"}, }, } diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_gtp_apn.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_gtp_apn.py index e307af936..b055c52ad 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_gtp_apn.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_gtp_apn.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -230,7 +230,8 @@ def gtp_apn(data, fos, check_mode=False): state = data["state"] gtp_apn_data = data["gtp_apn"] - filtered_data = underscore_to_hyphen(filter_gtp_apn_data(gtp_apn_data)) + filtered_data = filter_gtp_apn_data(gtp_apn_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -294,7 +295,7 @@ def gtp_apn(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("gtp", "apn", data=filtered_data, vdom=vdom) + return fos.set("gtp", "apn", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("gtp", "apn", mkey=filtered_data["name"], vdom=vdom) @@ -336,16 +337,16 @@ versioned_schema = { "elements": "dict", "children": { "name": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "required": True, }, "apn": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", }, }, - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], } diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_gtp_apn_shaper.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_gtp_apn_shaper.py index 2bac6ddd7..9cbc9ddea 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_gtp_apn_shaper.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_gtp_apn_shaper.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -259,9 +259,8 @@ def gtp_apn_shaper(data, fos, check_mode=False): state = data["state"] gtp_apn_shaper_data = data["gtp_apn_shaper"] - filtered_data = underscore_to_hyphen( - filter_gtp_apn_shaper_data(gtp_apn_shaper_data) - ) + filtered_data = filter_gtp_apn_shaper_data(gtp_apn_shaper_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -325,7 +324,7 @@ def gtp_apn_shaper(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("gtp", "apn-shaper", data=filtered_data, vdom=vdom) + return fos.set("gtp", "apn-shaper", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("gtp", "apn-shaper", mkey=filtered_data["id"], vdom=vdom) @@ -367,7 +366,7 @@ versioned_schema = { "elements": "dict", "children": { "id": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "integer", "required": True, }, @@ -376,28 +375,32 @@ versioned_schema = { "elements": "dict", "children": { "name": { - "v_range": [["v6.2.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.2.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "string", "required": True, } }, - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], }, "rate_limit": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "integer", }, "action": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "drop"}, {"value": "reject"}], }, "back_off_time": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "integer", }, }, - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], } diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_gtp_apngrp.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_gtp_apngrp.py index 91980c3d2..9750d1506 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_gtp_apngrp.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_gtp_apngrp.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -239,7 +239,8 @@ def gtp_apngrp(data, fos, check_mode=False): state = data["state"] gtp_apngrp_data = data["gtp_apngrp"] - filtered_data = underscore_to_hyphen(filter_gtp_apngrp_data(gtp_apngrp_data)) + filtered_data = filter_gtp_apngrp_data(gtp_apngrp_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -303,7 +304,7 @@ def gtp_apngrp(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("gtp", "apngrp", data=filtered_data, vdom=vdom) + return fos.set("gtp", "apngrp", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("gtp", "apngrp", mkey=filtered_data["name"], vdom=vdom) @@ -345,7 +346,7 @@ versioned_schema = { "elements": "dict", "children": { "name": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "required": True, }, @@ -354,15 +355,19 @@ versioned_schema = { "elements": "dict", "children": { "name": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "string", "required": True, } }, - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], }, }, - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], } diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_gtp_ie_allow_list.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_gtp_ie_allow_list.py index fbcc7cccb..86c552a00 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_gtp_ie_allow_list.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_gtp_ie_allow_list.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -235,9 +235,9 @@ def underscore_to_hyphen(data): def valid_attr_to_invalid_attr(data): - specillist = {"message": "fos_message"} + speciallist = {"message": "fos_message"} - for k, v in specillist.items(): + for k, v in speciallist.items(): if v == data: return k @@ -246,8 +246,11 @@ def valid_attr_to_invalid_attr(data): def valid_attr_to_invalid_attrs(data): if isinstance(data, list): + new_data = [] for elem in data: elem = valid_attr_to_invalid_attrs(elem) + new_data.append(elem) + data = new_data elif isinstance(data, dict): new_data = {} for k, v in data.items(): @@ -263,10 +266,8 @@ def gtp_ie_allow_list(data, fos): state = data["state"] gtp_ie_allow_list_data = data["gtp_ie_allow_list"] - filtered_data = underscore_to_hyphen( - filter_gtp_ie_allow_list_data(gtp_ie_allow_list_data) - ) - converted_data = valid_attr_to_invalid_attrs(filtered_data) + filtered_data = filter_gtp_ie_allow_list_data(gtp_ie_allow_list_data) + converted_data = underscore_to_hyphen(valid_attr_to_invalid_attrs(filtered_data)) if state == "present" or state is True: return fos.set("gtp", "ie-allow-list", data=converted_data, vdom=vdom) @@ -310,7 +311,7 @@ versioned_schema = { "elements": "dict", "children": { "name": { - "v_range": [["v7.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v7.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "required": True, }, @@ -319,23 +320,35 @@ versioned_schema = { "elements": "dict", "children": { "id": { - "v_range": [["v7.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v7.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", "required": True, }, "ie": { - "v_range": [["v7.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v7.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, "fos_message": { - "v_range": [["v7.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v7.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", }, }, - "v_range": [["v7.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v7.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], }, }, - "v_range": [["v7.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v7.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], } diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_gtp_ie_white_list.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_gtp_ie_white_list.py index 91f819d3f..57c47d986 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_gtp_ie_white_list.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_gtp_ie_white_list.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -244,9 +244,9 @@ def underscore_to_hyphen(data): def valid_attr_to_invalid_attr(data): - specillist = {"message": "fos_message"} + speciallist = {"message": "fos_message"} - for k, v in specillist.items(): + for k, v in speciallist.items(): if v == data: return k @@ -255,8 +255,11 @@ def valid_attr_to_invalid_attr(data): def valid_attr_to_invalid_attrs(data): if isinstance(data, list): + new_data = [] for elem in data: elem = valid_attr_to_invalid_attrs(elem) + new_data.append(elem) + data = new_data elif isinstance(data, dict): new_data = {} for k, v in data.items(): @@ -272,10 +275,8 @@ def gtp_ie_white_list(data, fos, check_mode=False): state = data["state"] gtp_ie_white_list_data = data["gtp_ie_white_list"] - filtered_data = underscore_to_hyphen( - filter_gtp_ie_white_list_data(gtp_ie_white_list_data) - ) - converted_data = valid_attr_to_invalid_attrs(filtered_data) + filtered_data = filter_gtp_ie_white_list_data(gtp_ie_white_list_data) + converted_data = underscore_to_hyphen(valid_attr_to_invalid_attrs(filtered_data)) # check_mode starts from here if check_mode: diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_gtp_message_filter_v0v1.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_gtp_message_filter_v0v1.py index be87b955d..02373cde9 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_gtp_message_filter_v0v1.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_gtp_message_filter_v0v1.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -566,9 +566,8 @@ def gtp_message_filter_v0v1(data, fos, check_mode=False): state = data["state"] gtp_message_filter_v0v1_data = data["gtp_message_filter_v0v1"] - filtered_data = underscore_to_hyphen( - filter_gtp_message_filter_v0v1_data(gtp_message_filter_v0v1_data) - ) + filtered_data = filter_gtp_message_filter_v0v1_data(gtp_message_filter_v0v1_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -632,7 +631,7 @@ def gtp_message_filter_v0v1(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("gtp", "message-filter-v0v1", data=filtered_data, vdom=vdom) + return fos.set("gtp", "message-filter-v0v1", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( @@ -676,12 +675,12 @@ versioned_schema = { "elements": "dict", "children": { "name": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "required": True, }, "unknown_message": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, @@ -690,190 +689,194 @@ versioned_schema = { "elements": "dict", "children": { "id": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", "required": True, } }, - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], }, "echo": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "version_not_support": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "node_alive": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "redirection": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "create_pdp": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "update_pdp": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "delete_pdp": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "v0_create_aa_pdp__v1_init_pdp_ctx": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "delete_aa_pdp": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "error_indication": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "pdu_notification": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "support_extension": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "send_route": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "failure_report": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "note_ms_present": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "identification": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "sgsn_context": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "fwd_relocation": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "relocation_cancel": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "fwd_srns_context": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "ue_registration_query": { - "v_range": [["v7.2.1", "v7.2.4"]], + "v_range": [["v7.2.1", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "ran_info": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "mbms_notification": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "create_mbms": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "update_mbms": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "delete_mbms": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "mbms_registration": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "mbms_de_registration": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "mbms_session_start": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "mbms_session_stop": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "mbms_session_update": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "ms_info_change_notif": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "data_record": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "end_marker": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "gtp_pdu": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, }, - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], } diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_gtp_message_filter_v2.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_gtp_message_filter_v2.py index db35de0e6..26ef6d2d8 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_gtp_message_filter_v2.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_gtp_message_filter_v2.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -665,9 +665,8 @@ def gtp_message_filter_v2(data, fos, check_mode=False): state = data["state"] gtp_message_filter_v2_data = data["gtp_message_filter_v2"] - filtered_data = underscore_to_hyphen( - filter_gtp_message_filter_v2_data(gtp_message_filter_v2_data) - ) + filtered_data = filter_gtp_message_filter_v2_data(gtp_message_filter_v2_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -731,7 +730,7 @@ def gtp_message_filter_v2(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("gtp", "message-filter-v2", data=filtered_data, vdom=vdom) + return fos.set("gtp", "message-filter-v2", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( @@ -775,12 +774,12 @@ versioned_schema = { "elements": "dict", "children": { "name": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "required": True, }, "unknown_message": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, @@ -789,245 +788,249 @@ versioned_schema = { "elements": "dict", "children": { "id": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", "required": True, } }, - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], }, "echo": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "version_not_support": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "create_session": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "modify_bearer_req_resp": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "delete_session": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "change_notification": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "remote_ue_report_notif_ack": { - "v_range": [["v7.2.1", "v7.2.4"]], + "v_range": [["v7.2.1", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "modify_bearer_cmd_fail": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "delete_bearer_cmd_fail": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "bearer_resource_cmd_fail": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "dlink_notif_failure": { - "v_range": [["v7.2.1", "v7.2.4"]], + "v_range": [["v7.2.1", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "trace_session": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "stop_paging_indication": { - "v_range": [["v7.2.1", "v7.2.4"]], + "v_range": [["v7.2.1", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "create_bearer": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "update_bearer": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "delete_bearer_req_resp": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "delete_pdn_connection_set": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "pgw_dlink_notif_ack": { - "v_range": [["v7.2.1", "v7.2.4"]], + "v_range": [["v7.2.1", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "identification_req_resp": { - "v_range": [["v7.2.1", "v7.2.4"]], + "v_range": [["v7.2.1", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "context_req_res_ack": { - "v_range": [["v7.0.2", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v7.0.2", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "forward_relocation_req_res": { - "v_range": [["v7.0.2", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v7.0.2", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "forward_relocation_cmp_notif_ack": { - "v_range": [["v7.0.2", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v7.0.2", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "forward_access_notif_ack": { - "v_range": [["v7.2.1", "v7.2.4"]], + "v_range": [["v7.2.1", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "relocation_cancel_req_resp": { - "v_range": [["v7.2.1", "v7.2.4"]], + "v_range": [["v7.2.1", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "configuration_transfer_tunnel": { - "v_range": [["v7.2.1", "v7.2.4"]], + "v_range": [["v7.2.1", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "detach_notif_ack": { - "v_range": [["v7.2.1", "v7.2.4"]], + "v_range": [["v7.2.1", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "cs_paging": { - "v_range": [["v7.2.1", "v7.2.4"]], + "v_range": [["v7.2.1", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "ran_info_relay": { - "v_range": [["v7.2.1", "v7.2.4"]], + "v_range": [["v7.2.1", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "alert_mme_notif_ack": { - "v_range": [["v7.2.1", "v7.2.4"]], + "v_range": [["v7.2.1", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "ue_activity_notif_ack": { - "v_range": [["v7.2.1", "v7.2.4"]], + "v_range": [["v7.2.1", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "isr_status": { - "v_range": [["v7.2.1", "v7.2.4"]], + "v_range": [["v7.2.1", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "ue_registration_query_req_resp": { - "v_range": [["v7.2.1", "v7.2.4"]], + "v_range": [["v7.2.1", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "create_forwarding_tunnel_req_resp": { - "v_range": [["v7.2.1", "v7.2.4"]], + "v_range": [["v7.2.1", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "suspend": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "resume": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "create_indirect_forwarding_tunnel_req_resp": { - "v_range": [["v7.2.1", "v7.2.4"]], + "v_range": [["v7.2.1", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "delete_indirect_forwarding_tunnel_req_resp": { - "v_range": [["v7.2.1", "v7.2.4"]], + "v_range": [["v7.2.1", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "release_access_bearer_req_resp": { - "v_range": [["v7.2.1", "v7.2.4"]], + "v_range": [["v7.2.1", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "dlink_data_notif_ack": { - "v_range": [["v7.2.1", "v7.2.4"]], + "v_range": [["v7.2.1", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "reserved_for_earlier_version": { - "v_range": [["v7.2.1", "v7.2.4"]], + "v_range": [["v7.2.1", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "pgw_restart_notif_ack": { - "v_range": [["v7.2.1", "v7.2.4"]], + "v_range": [["v7.2.1", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "update_pdn_connection_set": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "modify_access_req_resp": { - "v_range": [["v7.2.1", "v7.2.4"]], + "v_range": [["v7.2.1", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "mbms_session_start_req_resp": { - "v_range": [["v7.2.1", "v7.2.4"]], + "v_range": [["v7.2.1", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "mbms_session_update_req_resp": { - "v_range": [["v7.2.1", "v7.2.4"]], + "v_range": [["v7.2.1", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "mbms_session_stop_req_resp": { - "v_range": [["v7.2.1", "v7.2.4"]], + "v_range": [["v7.2.1", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, }, - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], } diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_gtp_rat_timeout_profile.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_gtp_rat_timeout_profile.py index cba847d32..9167141ed 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_gtp_rat_timeout_profile.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_gtp_rat_timeout_profile.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -278,12 +278,11 @@ def gtp_rat_timeout_profile(data, fos): state = data["state"] gtp_rat_timeout_profile_data = data["gtp_rat_timeout_profile"] - filtered_data = underscore_to_hyphen( - filter_gtp_rat_timeout_profile_data(gtp_rat_timeout_profile_data) - ) + filtered_data = filter_gtp_rat_timeout_profile_data(gtp_rat_timeout_profile_data) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: - return fos.set("gtp", "rat-timeout-profile", data=filtered_data, vdom=vdom) + return fos.set("gtp", "rat-timeout-profile", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( @@ -326,52 +325,52 @@ versioned_schema = { "elements": "dict", "children": { "name": { - "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "required": True, }, "utran_timeout": { - "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "integer", }, "geran_timeout": { - "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "integer", }, "wlan_timeout": { - "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "integer", }, "gan_timeout": { - "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "integer", }, "hspa_timeout": { - "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "integer", }, "eutran_timeout": { - "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "integer", }, "virtual_timeout": { - "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "integer", }, "nbiot_timeout": { - "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "integer", }, "ltem_timeout": { - "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "integer", }, "nr_timeout": { - "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "integer", }, }, - "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], } diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_gtp_tunnel_limit.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_gtp_tunnel_limit.py index 9e675ba64..16184b978 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_gtp_tunnel_limit.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_gtp_tunnel_limit.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -230,9 +230,8 @@ def gtp_tunnel_limit(data, fos, check_mode=False): state = data["state"] gtp_tunnel_limit_data = data["gtp_tunnel_limit"] - filtered_data = underscore_to_hyphen( - filter_gtp_tunnel_limit_data(gtp_tunnel_limit_data) - ) + filtered_data = filter_gtp_tunnel_limit_data(gtp_tunnel_limit_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -296,7 +295,7 @@ def gtp_tunnel_limit(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("gtp", "tunnel-limit", data=filtered_data, vdom=vdom) + return fos.set("gtp", "tunnel-limit", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("gtp", "tunnel-limit", mkey=filtered_data["name"], vdom=vdom) @@ -338,16 +337,16 @@ versioned_schema = { "elements": "dict", "children": { "name": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "required": True, }, "tunnel_limit": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "integer", }, }, - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], } diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_hardware_nic.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_hardware_nic.py index 4e56d4591..07dbc3ab9 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_hardware_nic.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_hardware_nic.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -200,9 +200,9 @@ def underscore_to_hyphen(data): def valid_attr_to_invalid_attr(data): - specillist = {"<nic>": "nic"} + speciallist = {"<nic>": "nic"} - for k, v in specillist.items(): + for k, v in speciallist.items(): if v == data: return k @@ -211,8 +211,11 @@ def valid_attr_to_invalid_attr(data): def valid_attr_to_invalid_attrs(data): if isinstance(data, list): + new_data = [] for elem in data: elem = valid_attr_to_invalid_attrs(elem) + new_data.append(elem) + data = new_data elif isinstance(data, dict): new_data = {} for k, v in data.items(): @@ -225,8 +228,8 @@ def valid_attr_to_invalid_attrs(data): def hardware_nic(data, fos): vdom = data["vdom"] hardware_nic_data = data["hardware_nic"] - filtered_data = underscore_to_hyphen(filter_hardware_nic_data(hardware_nic_data)) - converted_data = valid_attr_to_invalid_attrs(filtered_data) + filtered_data = filter_hardware_nic_data(hardware_nic_data) + converted_data = underscore_to_hyphen(valid_attr_to_invalid_attrs(filtered_data)) return fos.set("hardware", "nic", data=converted_data, vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_hardware_npu_np6_dce.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_hardware_npu_np6_dce.py index 10e399dfe..4e7a16b40 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_hardware_npu_np6_dce.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_hardware_npu_np6_dce.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -200,9 +200,9 @@ def underscore_to_hyphen(data): def valid_attr_to_invalid_attr(data): - specillist = {"<dev_id>": "dev_id"} + speciallist = {"<dev_id>": "dev_id"} - for k, v in specillist.items(): + for k, v in speciallist.items(): if v == data: return k @@ -211,8 +211,11 @@ def valid_attr_to_invalid_attr(data): def valid_attr_to_invalid_attrs(data): if isinstance(data, list): + new_data = [] for elem in data: elem = valid_attr_to_invalid_attrs(elem) + new_data.append(elem) + data = new_data elif isinstance(data, dict): new_data = {} for k, v in data.items(): @@ -225,10 +228,8 @@ def valid_attr_to_invalid_attrs(data): def hardware_npu_np6_dce(data, fos): vdom = data["vdom"] hardware_npu_np6_dce_data = data["hardware_npu_np6_dce"] - filtered_data = underscore_to_hyphen( - filter_hardware_npu_np6_dce_data(hardware_npu_np6_dce_data) - ) - converted_data = valid_attr_to_invalid_attrs(filtered_data) + filtered_data = filter_hardware_npu_np6_dce_data(hardware_npu_np6_dce_data) + converted_data = underscore_to_hyphen(valid_attr_to_invalid_attrs(filtered_data)) return fos.set("hardware.npu.np6", "dce", data=converted_data, vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_hardware_npu_np6_session_stats.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_hardware_npu_np6_session_stats.py index 04b3cf2d8..45d049ca4 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_hardware_npu_np6_session_stats.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_hardware_npu_np6_session_stats.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -200,9 +200,9 @@ def underscore_to_hyphen(data): def valid_attr_to_invalid_attr(data): - specillist = {"<dev_id>": "dev_id"} + speciallist = {"<dev_id>": "dev_id"} - for k, v in specillist.items(): + for k, v in speciallist.items(): if v == data: return k @@ -211,8 +211,11 @@ def valid_attr_to_invalid_attr(data): def valid_attr_to_invalid_attrs(data): if isinstance(data, list): + new_data = [] for elem in data: elem = valid_attr_to_invalid_attrs(elem) + new_data.append(elem) + data = new_data elif isinstance(data, dict): new_data = {} for k, v in data.items(): @@ -225,10 +228,10 @@ def valid_attr_to_invalid_attrs(data): def hardware_npu_np6_session_stats(data, fos): vdom = data["vdom"] hardware_npu_np6_session_stats_data = data["hardware_npu_np6_session_stats"] - filtered_data = underscore_to_hyphen( - filter_hardware_npu_np6_session_stats_data(hardware_npu_np6_session_stats_data) + filtered_data = filter_hardware_npu_np6_session_stats_data( + hardware_npu_np6_session_stats_data ) - converted_data = valid_attr_to_invalid_attrs(filtered_data) + converted_data = underscore_to_hyphen(valid_attr_to_invalid_attrs(filtered_data)) return fos.set("hardware.npu.np6", "session-stats", data=converted_data, vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_hardware_npu_np6_sse_stats.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_hardware_npu_np6_sse_stats.py index 77da4fe6a..19bbd4c26 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_hardware_npu_np6_sse_stats.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_hardware_npu_np6_sse_stats.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -200,9 +200,9 @@ def underscore_to_hyphen(data): def valid_attr_to_invalid_attr(data): - specillist = {"<dev_id>": "dev_id"} + speciallist = {"<dev_id>": "dev_id"} - for k, v in specillist.items(): + for k, v in speciallist.items(): if v == data: return k @@ -211,8 +211,11 @@ def valid_attr_to_invalid_attr(data): def valid_attr_to_invalid_attrs(data): if isinstance(data, list): + new_data = [] for elem in data: elem = valid_attr_to_invalid_attrs(elem) + new_data.append(elem) + data = new_data elif isinstance(data, dict): new_data = {} for k, v in data.items(): @@ -225,10 +228,10 @@ def valid_attr_to_invalid_attrs(data): def hardware_npu_np6_sse_stats(data, fos): vdom = data["vdom"] hardware_npu_np6_sse_stats_data = data["hardware_npu_np6_sse_stats"] - filtered_data = underscore_to_hyphen( - filter_hardware_npu_np6_sse_stats_data(hardware_npu_np6_sse_stats_data) + filtered_data = filter_hardware_npu_np6_sse_stats_data( + hardware_npu_np6_sse_stats_data ) - converted_data = valid_attr_to_invalid_attrs(filtered_data) + converted_data = underscore_to_hyphen(valid_attr_to_invalid_attrs(filtered_data)) return fos.set("hardware.npu.np6", "sse-stats", data=converted_data, vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_icap_profile.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_icap_profile.py index 1d08a301a..ea1cbeb93 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_icap_profile.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_icap_profile.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -576,9 +576,9 @@ def underscore_to_hyphen(data): def valid_attr_to_invalid_attr(data): - specillist = {"204_response": "response_204", "204_size_limit": "size_limit_204"} + speciallist = {"204_response": "response_204", "204_size_limit": "size_limit_204"} - for k, v in specillist.items(): + for k, v in speciallist.items(): if v == data: return k @@ -587,8 +587,11 @@ def valid_attr_to_invalid_attr(data): def valid_attr_to_invalid_attrs(data): if isinstance(data, list): + new_data = [] for elem in data: elem = valid_attr_to_invalid_attrs(elem) + new_data.append(elem) + data = new_data elif isinstance(data, dict): new_data = {} for k, v in data.items(): @@ -605,8 +608,8 @@ def icap_profile(data, fos, check_mode=False): icap_profile_data = data["icap_profile"] icap_profile_data = flatten_multilists_attributes(icap_profile_data) - filtered_data = underscore_to_hyphen(filter_icap_profile_data(icap_profile_data)) - converted_data = valid_attr_to_invalid_attrs(filtered_data) + filtered_data = filter_icap_profile_data(icap_profile_data) + converted_data = underscore_to_hyphen(valid_attr_to_invalid_attrs(filtered_data)) # check_mode starts from here if check_mode: diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_icap_server.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_icap_server.py index 905bd3464..4ed1fe1fa 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_icap_server.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_icap_server.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -307,7 +307,8 @@ def icap_server(data, fos, check_mode=False): state = data["state"] icap_server_data = data["icap_server"] - filtered_data = underscore_to_hyphen(filter_icap_server_data(icap_server_data)) + filtered_data = filter_icap_server_data(icap_server_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -371,7 +372,7 @@ def icap_server(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("icap", "server", data=filtered_data, vdom=vdom) + return fos.set("icap", "server", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("icap", "server", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_icap_server_group.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_icap_server_group.py index 4d55bacf1..d18165ea5 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_icap_server_group.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_icap_server_group.py @@ -39,7 +39,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -245,12 +245,11 @@ def icap_server_group(data, fos): state = data["state"] icap_server_group_data = data["icap_server_group"] - filtered_data = underscore_to_hyphen( - filter_icap_server_group_data(icap_server_group_data) - ) + filtered_data = filter_icap_server_group_data(icap_server_group_data) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: - return fos.set("icap", "server-group", data=filtered_data, vdom=vdom) + return fos.set("icap", "server-group", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("icap", "server-group", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_ips_custom.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_ips_custom.py index 85dea7158..980e4ccbb 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_ips_custom.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_ips_custom.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -352,7 +352,8 @@ def ips_custom(data, fos, check_mode=False): ips_custom_data = data["ips_custom"] ips_custom_data = flatten_multilists_attributes(ips_custom_data) - filtered_data = underscore_to_hyphen(filter_ips_custom_data(ips_custom_data)) + filtered_data = filter_ips_custom_data(ips_custom_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -416,7 +417,7 @@ def ips_custom(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("ips", "custom", data=filtered_data, vdom=vdom) + return fos.set("ips", "custom", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("ips", "custom", mkey=filtered_data["tag"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_ips_decoder.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_ips_decoder.py index 07ff2219b..7b135f6d0 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_ips_decoder.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_ips_decoder.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -244,7 +244,8 @@ def ips_decoder(data, fos, check_mode=False): state = data["state"] ips_decoder_data = data["ips_decoder"] - filtered_data = underscore_to_hyphen(filter_ips_decoder_data(ips_decoder_data)) + filtered_data = filter_ips_decoder_data(ips_decoder_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -308,7 +309,7 @@ def ips_decoder(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("ips", "decoder", data=filtered_data, vdom=vdom) + return fos.set("ips", "decoder", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("ips", "decoder", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_ips_global.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_ips_global.py index dfb46e8db..d8d8c9464 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_ips_global.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_ips_global.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -87,6 +87,11 @@ options: choices: - 'periodical' - 'continuous' + av_mem_limit: + description: + - Maximum percentage of system memory allowed for use on AV scanning (10 - 50). To disable set to zero. When disabled, there is no limit + on the AV memory usage. + type: int cp_accel_mode: description: - IPS Pattern matching acceleration/offloading to CPx processors. @@ -227,6 +232,7 @@ EXAMPLES = """ vdom: "{{ vdom }}" ips_global: anomaly_mode: "periodical" + av_mem_limit: "0" cp_accel_mode: "none" database: "regular" deep_app_insp_db_limit: "0" @@ -334,6 +340,7 @@ from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.data_post def filter_ips_global_data(json): option_list = [ "anomaly_mode", + "av_mem_limit", "cp_accel_mode", "database", "deep_app_insp_db_limit", @@ -380,9 +387,10 @@ def underscore_to_hyphen(data): def ips_global(data, fos): vdom = data["vdom"] ips_global_data = data["ips_global"] - filtered_data = underscore_to_hyphen(filter_ips_global_data(ips_global_data)) + filtered_data = filter_ips_global_data(ips_global_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("ips", "global", data=filtered_data, vdom=vdom) + return fos.set("ips", "global", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -462,6 +470,7 @@ versioned_schema = { }, "packet_log_queue_depth": {"v_range": [["v6.2.7", ""]], "type": "integer"}, "ngfw_max_scan_range": {"v_range": [["v6.4.4", ""]], "type": "integer"}, + "av_mem_limit": {"v_range": [["v7.4.2", ""]], "type": "integer"}, "tls_active_probe": { "v_range": [["v6.2.7", "v6.2.7"], ["v6.4.4", ""]], "type": "dict", @@ -499,7 +508,7 @@ versioned_schema = { "options": [{"value": "none"}, {"value": "basic"}], }, "ips_reserve_cpu": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "disable"}, {"value": "enable"}], }, diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_ips_rule.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_ips_rule.py index dba44c177..5f4c8e953 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_ips_rule.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_ips_rule.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -373,7 +373,8 @@ def ips_rule(data, fos, check_mode=False): ips_rule_data = data["ips_rule"] ips_rule_data = flatten_multilists_attributes(ips_rule_data) - filtered_data = underscore_to_hyphen(filter_ips_rule_data(ips_rule_data)) + filtered_data = filter_ips_rule_data(ips_rule_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -437,7 +438,7 @@ def ips_rule(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("ips", "rule", data=filtered_data, vdom=vdom) + return fos.set("ips", "rule", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("ips", "rule", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_ips_rule_settings.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_ips_rule_settings.py index 833997f50..741cb84fb 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_ips_rule_settings.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_ips_rule_settings.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -227,9 +227,8 @@ def ips_rule_settings(data, fos, check_mode=False): state = data["state"] ips_rule_settings_data = data["ips_rule_settings"] - filtered_data = underscore_to_hyphen( - filter_ips_rule_settings_data(ips_rule_settings_data) - ) + filtered_data = filter_ips_rule_settings_data(ips_rule_settings_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -293,7 +292,7 @@ def ips_rule_settings(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("ips", "rule-settings", data=filtered_data, vdom=vdom) + return fos.set("ips", "rule-settings", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("ips", "rule-settings", mkey=filtered_data["id"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_ips_sensor.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_ips_sensor.py index 6327156b8..216a0c57e 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_ips_sensor.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_ips_sensor.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -718,7 +718,8 @@ def ips_sensor(data, fos, check_mode=False): ips_sensor_data = data["ips_sensor"] ips_sensor_data = flatten_multilists_attributes(ips_sensor_data) - filtered_data = underscore_to_hyphen(filter_ips_sensor_data(ips_sensor_data)) + filtered_data = filter_ips_sensor_data(ips_sensor_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -782,7 +783,7 @@ def ips_sensor(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("ips", "sensor", data=filtered_data, vdom=vdom) + return fos.set("ips", "sensor", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("ips", "sensor", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_ips_settings.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_ips_settings.py index ee1f86b2f..47fca1bfe 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_ips_settings.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_ips_settings.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -96,6 +96,13 @@ options: description: - Number of packets to log after the IPS signature is detected (0 - 255). type: int + proxy_inline_ips: + description: + - Enable/disable proxy-mode policy inline IPS support. + type: str + choices: + - 'disable' + - 'enable' """ EXAMPLES = """ @@ -107,6 +114,7 @@ EXAMPLES = """ packet_log_history: "1" packet_log_memory: "256" packet_log_post_attack: "0" + proxy_inline_ips: "disable" """ RETURN = """ @@ -194,6 +202,7 @@ def filter_ips_settings_data(json): "packet_log_history", "packet_log_memory", "packet_log_post_attack", + "proxy_inline_ips", ] json = remove_invalid_fields(json) @@ -222,9 +231,10 @@ def underscore_to_hyphen(data): def ips_settings(data, fos): vdom = data["vdom"] ips_settings_data = data["ips_settings"] - filtered_data = underscore_to_hyphen(filter_ips_settings_data(ips_settings_data)) + filtered_data = filter_ips_settings_data(ips_settings_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("ips", "settings", data=filtered_data, vdom=vdom) + return fos.set("ips", "settings", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -263,6 +273,11 @@ versioned_schema = { "packet_log_post_attack": {"v_range": [["v6.0.0", ""]], "type": "integer"}, "packet_log_memory": {"v_range": [["v6.0.0", ""]], "type": "integer"}, "ips_packet_quota": {"v_range": [["v6.0.0", ""]], "type": "integer"}, + "proxy_inline_ips": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "disable"}, {"value": "enable"}], + }, }, } diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_ips_view_map.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_ips_view_map.py index dd1460ee9..72980ef6d 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_ips_view_map.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_ips_view_map.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -255,7 +255,8 @@ def ips_view_map(data, fos, check_mode=False): state = data["state"] ips_view_map_data = data["ips_view_map"] - filtered_data = underscore_to_hyphen(filter_ips_view_map_data(ips_view_map_data)) + filtered_data = filter_ips_view_map_data(ips_view_map_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -319,7 +320,7 @@ def ips_view_map(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("ips", "view-map", data=filtered_data, vdom=vdom) + return fos.set("ips", "view-map", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("ips", "view-map", mkey=filtered_data["id"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_custom_field.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_custom_field.py index f0c480c6c..45f6a35df 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_custom_field.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_custom_field.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -235,9 +235,8 @@ def log_custom_field(data, fos, check_mode=False): state = data["state"] log_custom_field_data = data["log_custom_field"] - filtered_data = underscore_to_hyphen( - filter_log_custom_field_data(log_custom_field_data) - ) + filtered_data = filter_log_custom_field_data(log_custom_field_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -301,7 +300,7 @@ def log_custom_field(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("log", "custom-field", data=filtered_data, vdom=vdom) + return fos.set("log", "custom-field", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("log", "custom-field", mkey=filtered_data["id"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_disk_filter.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_disk_filter.py index 8dd65297b..854cce9f8 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_disk_filter.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_disk_filter.py @@ -39,7 +39,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -148,6 +148,13 @@ options: choices: - 'include' - 'exclude' + forti_switch: + description: + - Enable/disable Forti-Switch logging. + type: str + choices: + - 'enable' + - 'disable' forward_traffic: description: - Enable/disable forward traffic logging. @@ -386,13 +393,14 @@ EXAMPLES = """ event: "enable" filter: "<your_own_value>" filter_type: "include" + forti_switch: "enable" forward_traffic: "enable" free_style: - category: "traffic" filter: "<your_own_value>" filter_type: "include" - id: "18" + id: "19" gtp: "enable" ha: "enable" ipsec: "enable" @@ -510,6 +518,7 @@ def filter_log_disk_filter_data(json): "event", "filter", "filter_type", + "forti_switch", "forward_traffic", "free_style", "gtp", @@ -564,11 +573,10 @@ def underscore_to_hyphen(data): def log_disk_filter(data, fos): vdom = data["vdom"] log_disk_filter_data = data["log_disk_filter"] - filtered_data = underscore_to_hyphen( - filter_log_disk_filter_data(log_disk_filter_data) - ) + filtered_data = filter_log_disk_filter_data(log_disk_filter_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("log.disk", "filter", data=filtered_data, vdom=vdom) + return fos.set("log.disk", "filter", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -653,15 +661,23 @@ versioned_schema = { "options": [{"value": "enable"}, {"value": "disable"}], }, "dlp_archive": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", - "options": [{"value": "enable"}, {"value": "disable"}], + "options": [ + {"value": "enable", "v_range": [["v6.0.0", ""]]}, + {"value": "disable", "v_range": [["v6.0.0", ""]]}, + ], }, "gtp": { "v_range": [["v6.0.0", ""]], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "forti_switch": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "free_style": { "type": "list", "elements": "dict", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_disk_setting.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_disk_setting.py index e23fba23e..20e43407e 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_disk_setting.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_disk_setting.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -475,11 +475,10 @@ def log_disk_setting(data, fos): vdom = data["vdom"] log_disk_setting_data = data["log_disk_setting"] log_disk_setting_data = flatten_multilists_attributes(log_disk_setting_data) - filtered_data = underscore_to_hyphen( - filter_log_disk_setting_data(log_disk_setting_data) - ) + filtered_data = filter_log_disk_setting_data(log_disk_setting_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("log.disk", "setting", data=filtered_data, vdom=vdom) + return fos.set("log.disk", "setting", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -557,7 +556,10 @@ versioned_schema = { }, "log_quota": {"v_range": [["v6.0.0", ""]], "type": "integer"}, "dlp_archive_quota": {"v_range": [["v6.0.0", ""]], "type": "integer"}, - "report_quota": {"v_range": [["v6.0.0", ""]], "type": "integer"}, + "report_quota": { + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], + "type": "integer", + }, "maximum_log_age": {"v_range": [["v6.0.0", ""]], "type": "integer"}, "upload": { "v_range": [["v6.0.0", ""]], diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_eventfilter.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_eventfilter.py index 5327dfac0..a11c29418 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_eventfilter.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_eventfilter.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -360,11 +360,10 @@ def underscore_to_hyphen(data): def log_eventfilter(data, fos): vdom = data["vdom"] log_eventfilter_data = data["log_eventfilter"] - filtered_data = underscore_to_hyphen( - filter_log_eventfilter_data(log_eventfilter_data) - ) + filtered_data = filter_log_eventfilter_data(log_eventfilter_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("log", "eventfilter", data=filtered_data, vdom=vdom) + return fos.set("log", "eventfilter", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer2_filter.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer2_filter.py index 2a1e904fc..3e3b44ba8 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer2_filter.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer2_filter.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -112,6 +112,13 @@ options: choices: - 'include' - 'exclude' + forti_switch: + description: + - Enable/disable Forti-Switch logging. + type: str + choices: + - 'enable' + - 'disable' forward_traffic: description: - Enable/disable forward traffic logging. @@ -247,13 +254,14 @@ EXAMPLES = """ dns: "enable" filter: "<your_own_value>" filter_type: "include" + forti_switch: "enable" forward_traffic: "enable" free_style: - category: "traffic" filter: "<your_own_value>" filter_type: "include" - id: "13" + id: "14" gtp: "enable" local_traffic: "enable" multicast_traffic: "enable" @@ -352,6 +360,7 @@ def filter_log_fortianalyzer2_filter_data(json): "dns", "filter", "filter_type", + "forti_switch", "forward_traffic", "free_style", "gtp", @@ -392,11 +401,12 @@ def underscore_to_hyphen(data): def log_fortianalyzer2_filter(data, fos): vdom = data["vdom"] log_fortianalyzer2_filter_data = data["log_fortianalyzer2_filter"] - filtered_data = underscore_to_hyphen( - filter_log_fortianalyzer2_filter_data(log_fortianalyzer2_filter_data) + filtered_data = filter_log_fortianalyzer2_filter_data( + log_fortianalyzer2_filter_data ) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("log.fortianalyzer2", "filter", data=filtered_data, vdom=vdom) + return fos.set("log.fortianalyzer2", "filter", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -492,6 +502,11 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "forti_switch": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "free_style": { "type": "list", "elements": "dict", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer2_override_filter.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer2_override_filter.py index fd0afd893..8b78e11b1 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer2_override_filter.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer2_override_filter.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -105,6 +105,13 @@ options: choices: - 'include' - 'exclude' + forti_switch: + description: + - Enable/disable Forti-Switch logging. + type: str + choices: + - 'enable' + - 'disable' forward_traffic: description: - Enable/disable forward traffic logging. @@ -224,13 +231,14 @@ EXAMPLES = """ dlp_archive: "enable" filter: "<your_own_value>" filter_type: "include" + forti_switch: "enable" forward_traffic: "enable" free_style: - category: "traffic" filter: "<your_own_value>" filter_type: "include" - id: "12" + id: "13" gtp: "enable" local_traffic: "enable" multicast_traffic: "enable" @@ -325,6 +333,7 @@ def filter_log_fortianalyzer2_override_filter_data(json): "dlp_archive", "filter", "filter_type", + "forti_switch", "forward_traffic", "free_style", "gtp", @@ -362,14 +371,13 @@ def underscore_to_hyphen(data): def log_fortianalyzer2_override_filter(data, fos): vdom = data["vdom"] log_fortianalyzer2_override_filter_data = data["log_fortianalyzer2_override_filter"] - filtered_data = underscore_to_hyphen( - filter_log_fortianalyzer2_override_filter_data( - log_fortianalyzer2_override_filter_data - ) + filtered_data = filter_log_fortianalyzer2_override_filter_data( + log_fortianalyzer2_override_filter_data ) + converted_data = underscore_to_hyphen(filtered_data) return fos.set( - "log.fortianalyzer2", "override-filter", data=filtered_data, vdom=vdom + "log.fortianalyzer2", "override-filter", data=converted_data, vdom=vdom ) @@ -466,6 +474,11 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "forti_switch": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "free_style": { "type": "list", "elements": "dict", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer2_override_setting.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer2_override_setting.py index fa57164d2..88290a61b 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer2_override_setting.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer2_override_setting.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -211,6 +211,10 @@ options: description: - The remote FortiAnalyzer. type: str + server_cert_ca: + description: + - Mandatory CA on FortiGate in certificate chain of server. Source certificate.ca.name vpn.certificate.ca.name. + type: str source_ip: description: - Source IPv4 or IPv6 address used to communicate with FortiAnalyzer. @@ -297,6 +301,7 @@ EXAMPLES = """ - name: "default_name_25" server: "192.168.100.40" + server_cert_ca: "<your_own_value> (source certificate.ca.name vpn.certificate.ca.name)" source_ip: "84.230.14.43" ssl_min_proto_version: "default" status: "enable" @@ -411,6 +416,7 @@ def filter_log_fortianalyzer2_override_setting_data(json): "reliable", "serial", "server", + "server_cert_ca", "source_ip", "ssl_min_proto_version", "status", @@ -449,14 +455,13 @@ def log_fortianalyzer2_override_setting(data, fos): log_fortianalyzer2_override_setting_data = data[ "log_fortianalyzer2_override_setting" ] - filtered_data = underscore_to_hyphen( - filter_log_fortianalyzer2_override_setting_data( - log_fortianalyzer2_override_setting_data - ) + filtered_data = filter_log_fortianalyzer2_override_setting_data( + log_fortianalyzer2_override_setting_data ) + converted_data = underscore_to_hyphen(filtered_data) return fos.set( - "log.fortianalyzer2", "override-setting", data=filtered_data, vdom=vdom + "log.fortianalyzer2", "override-setting", data=converted_data, vdom=vdom ) @@ -533,6 +538,7 @@ versioned_schema = { }, "v_range": [["v6.2.0", ""]], }, + "server_cert_ca": {"v_range": [["v7.4.2", ""]], "type": "string"}, "preshared_key": {"v_range": [["v7.0.0", ""]], "type": "string"}, "access_config": { "v_range": [["v6.2.0", ""]], diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer2_setting.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer2_setting.py index 49a856256..60b247eb8 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer2_setting.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer2_setting.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -204,6 +204,10 @@ options: description: - The remote FortiAnalyzer. type: str + server_cert_ca: + description: + - Mandatory CA on FortiGate in certificate chain of server. Source certificate.ca.name vpn.certificate.ca.name. + type: str source_ip: description: - Source IPv4 or IPv6 address used to communicate with FortiAnalyzer. @@ -282,6 +286,7 @@ EXAMPLES = """ - name: "default_name_24" server: "192.168.100.40" + server_cert_ca: "<your_own_value> (source certificate.ca.name vpn.certificate.ca.name)" source_ip: "84.230.14.43" ssl_min_proto_version: "default" status: "enable" @@ -394,6 +399,7 @@ def filter_log_fortianalyzer2_setting_data(json): "reliable", "serial", "server", + "server_cert_ca", "source_ip", "ssl_min_proto_version", "status", @@ -429,11 +435,12 @@ def underscore_to_hyphen(data): def log_fortianalyzer2_setting(data, fos): vdom = data["vdom"] log_fortianalyzer2_setting_data = data["log_fortianalyzer2_setting"] - filtered_data = underscore_to_hyphen( - filter_log_fortianalyzer2_setting_data(log_fortianalyzer2_setting_data) + filtered_data = filter_log_fortianalyzer2_setting_data( + log_fortianalyzer2_setting_data ) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("log.fortianalyzer2", "setting", data=filtered_data, vdom=vdom) + return fos.set("log.fortianalyzer2", "setting", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -504,6 +511,7 @@ versioned_schema = { }, "v_range": [["v6.2.0", ""]], }, + "server_cert_ca": {"v_range": [["v7.4.2", ""]], "type": "string"}, "preshared_key": {"v_range": [["v7.0.0", ""]], "type": "string"}, "access_config": { "v_range": [["v6.2.0", ""]], diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer3_filter.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer3_filter.py index c57dd5685..f900cfec0 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer3_filter.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer3_filter.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -112,6 +112,13 @@ options: choices: - 'include' - 'exclude' + forti_switch: + description: + - Enable/disable Forti-Switch logging. + type: str + choices: + - 'enable' + - 'disable' forward_traffic: description: - Enable/disable forward traffic logging. @@ -247,13 +254,14 @@ EXAMPLES = """ dns: "enable" filter: "<your_own_value>" filter_type: "include" + forti_switch: "enable" forward_traffic: "enable" free_style: - category: "traffic" filter: "<your_own_value>" filter_type: "include" - id: "13" + id: "14" gtp: "enable" local_traffic: "enable" multicast_traffic: "enable" @@ -352,6 +360,7 @@ def filter_log_fortianalyzer3_filter_data(json): "dns", "filter", "filter_type", + "forti_switch", "forward_traffic", "free_style", "gtp", @@ -392,11 +401,12 @@ def underscore_to_hyphen(data): def log_fortianalyzer3_filter(data, fos): vdom = data["vdom"] log_fortianalyzer3_filter_data = data["log_fortianalyzer3_filter"] - filtered_data = underscore_to_hyphen( - filter_log_fortianalyzer3_filter_data(log_fortianalyzer3_filter_data) + filtered_data = filter_log_fortianalyzer3_filter_data( + log_fortianalyzer3_filter_data ) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("log.fortianalyzer3", "filter", data=filtered_data, vdom=vdom) + return fos.set("log.fortianalyzer3", "filter", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -492,6 +502,11 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "forti_switch": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "free_style": { "type": "list", "elements": "dict", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer3_override_filter.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer3_override_filter.py index 35edeeee7..9cf151b62 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer3_override_filter.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer3_override_filter.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -105,6 +105,13 @@ options: choices: - 'include' - 'exclude' + forti_switch: + description: + - Enable/disable Forti-Switch logging. + type: str + choices: + - 'enable' + - 'disable' forward_traffic: description: - Enable/disable forward traffic logging. @@ -224,13 +231,14 @@ EXAMPLES = """ dlp_archive: "enable" filter: "<your_own_value>" filter_type: "include" + forti_switch: "enable" forward_traffic: "enable" free_style: - category: "traffic" filter: "<your_own_value>" filter_type: "include" - id: "12" + id: "13" gtp: "enable" local_traffic: "enable" multicast_traffic: "enable" @@ -325,6 +333,7 @@ def filter_log_fortianalyzer3_override_filter_data(json): "dlp_archive", "filter", "filter_type", + "forti_switch", "forward_traffic", "free_style", "gtp", @@ -362,14 +371,13 @@ def underscore_to_hyphen(data): def log_fortianalyzer3_override_filter(data, fos): vdom = data["vdom"] log_fortianalyzer3_override_filter_data = data["log_fortianalyzer3_override_filter"] - filtered_data = underscore_to_hyphen( - filter_log_fortianalyzer3_override_filter_data( - log_fortianalyzer3_override_filter_data - ) + filtered_data = filter_log_fortianalyzer3_override_filter_data( + log_fortianalyzer3_override_filter_data ) + converted_data = underscore_to_hyphen(filtered_data) return fos.set( - "log.fortianalyzer3", "override-filter", data=filtered_data, vdom=vdom + "log.fortianalyzer3", "override-filter", data=converted_data, vdom=vdom ) @@ -466,6 +474,11 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "forti_switch": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "free_style": { "type": "list", "elements": "dict", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer3_override_setting.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer3_override_setting.py index d02478afd..10ff41c88 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer3_override_setting.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer3_override_setting.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -211,6 +211,10 @@ options: description: - The remote FortiAnalyzer. type: str + server_cert_ca: + description: + - Mandatory CA on FortiGate in certificate chain of server. Source certificate.ca.name vpn.certificate.ca.name. + type: str source_ip: description: - Source IPv4 or IPv6 address used to communicate with FortiAnalyzer. @@ -297,6 +301,7 @@ EXAMPLES = """ - name: "default_name_25" server: "192.168.100.40" + server_cert_ca: "<your_own_value> (source certificate.ca.name vpn.certificate.ca.name)" source_ip: "84.230.14.43" ssl_min_proto_version: "default" status: "enable" @@ -411,6 +416,7 @@ def filter_log_fortianalyzer3_override_setting_data(json): "reliable", "serial", "server", + "server_cert_ca", "source_ip", "ssl_min_proto_version", "status", @@ -449,14 +455,13 @@ def log_fortianalyzer3_override_setting(data, fos): log_fortianalyzer3_override_setting_data = data[ "log_fortianalyzer3_override_setting" ] - filtered_data = underscore_to_hyphen( - filter_log_fortianalyzer3_override_setting_data( - log_fortianalyzer3_override_setting_data - ) + filtered_data = filter_log_fortianalyzer3_override_setting_data( + log_fortianalyzer3_override_setting_data ) + converted_data = underscore_to_hyphen(filtered_data) return fos.set( - "log.fortianalyzer3", "override-setting", data=filtered_data, vdom=vdom + "log.fortianalyzer3", "override-setting", data=converted_data, vdom=vdom ) @@ -533,6 +538,7 @@ versioned_schema = { }, "v_range": [["v6.2.0", ""]], }, + "server_cert_ca": {"v_range": [["v7.4.2", ""]], "type": "string"}, "preshared_key": {"v_range": [["v7.0.0", ""]], "type": "string"}, "access_config": { "v_range": [["v6.2.0", ""]], diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer3_setting.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer3_setting.py index 9ad3075c8..8bf654806 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer3_setting.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer3_setting.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -204,6 +204,10 @@ options: description: - The remote FortiAnalyzer. type: str + server_cert_ca: + description: + - Mandatory CA on FortiGate in certificate chain of server. Source certificate.ca.name vpn.certificate.ca.name. + type: str source_ip: description: - Source IPv4 or IPv6 address used to communicate with FortiAnalyzer. @@ -282,6 +286,7 @@ EXAMPLES = """ - name: "default_name_24" server: "192.168.100.40" + server_cert_ca: "<your_own_value> (source certificate.ca.name vpn.certificate.ca.name)" source_ip: "84.230.14.43" ssl_min_proto_version: "default" status: "enable" @@ -394,6 +399,7 @@ def filter_log_fortianalyzer3_setting_data(json): "reliable", "serial", "server", + "server_cert_ca", "source_ip", "ssl_min_proto_version", "status", @@ -429,11 +435,12 @@ def underscore_to_hyphen(data): def log_fortianalyzer3_setting(data, fos): vdom = data["vdom"] log_fortianalyzer3_setting_data = data["log_fortianalyzer3_setting"] - filtered_data = underscore_to_hyphen( - filter_log_fortianalyzer3_setting_data(log_fortianalyzer3_setting_data) + filtered_data = filter_log_fortianalyzer3_setting_data( + log_fortianalyzer3_setting_data ) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("log.fortianalyzer3", "setting", data=filtered_data, vdom=vdom) + return fos.set("log.fortianalyzer3", "setting", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -504,6 +511,7 @@ versioned_schema = { }, "v_range": [["v6.2.0", ""]], }, + "server_cert_ca": {"v_range": [["v7.4.2", ""]], "type": "string"}, "preshared_key": {"v_range": [["v7.0.0", ""]], "type": "string"}, "access_config": { "v_range": [["v6.2.0", ""]], diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer_cloud_filter.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer_cloud_filter.py index 51e23edca..b5757076c 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer_cloud_filter.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer_cloud_filter.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -112,6 +112,13 @@ options: choices: - 'include' - 'exclude' + forti_switch: + description: + - Enable/disable Forti-Switch logging. + type: str + choices: + - 'enable' + - 'disable' forward_traffic: description: - Enable/disable forward traffic logging. @@ -247,13 +254,14 @@ EXAMPLES = """ dns: "enable" filter: "<your_own_value>" filter_type: "include" + forti_switch: "enable" forward_traffic: "enable" free_style: - category: "traffic" filter: "<your_own_value>" filter_type: "include" - id: "13" + id: "14" gtp: "enable" local_traffic: "enable" multicast_traffic: "enable" @@ -352,6 +360,7 @@ def filter_log_fortianalyzer_cloud_filter_data(json): "dns", "filter", "filter_type", + "forti_switch", "forward_traffic", "free_style", "gtp", @@ -392,11 +401,12 @@ def underscore_to_hyphen(data): def log_fortianalyzer_cloud_filter(data, fos): vdom = data["vdom"] log_fortianalyzer_cloud_filter_data = data["log_fortianalyzer_cloud_filter"] - filtered_data = underscore_to_hyphen( - filter_log_fortianalyzer_cloud_filter_data(log_fortianalyzer_cloud_filter_data) + filtered_data = filter_log_fortianalyzer_cloud_filter_data( + log_fortianalyzer_cloud_filter_data ) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("log.fortianalyzer-cloud", "filter", data=filtered_data, vdom=vdom) + return fos.set("log.fortianalyzer-cloud", "filter", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -492,6 +502,11 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "forti_switch": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "free_style": { "type": "list", "elements": "dict", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer_cloud_override_filter.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer_cloud_override_filter.py index 6e14e276f..8104a7893 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer_cloud_override_filter.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer_cloud_override_filter.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -112,6 +112,13 @@ options: choices: - 'include' - 'exclude' + forti_switch: + description: + - Enable/disable Forti-Switch logging. + type: str + choices: + - 'enable' + - 'disable' forward_traffic: description: - Enable/disable forward traffic logging. @@ -247,13 +254,14 @@ EXAMPLES = """ dns: "enable" filter: "<your_own_value>" filter_type: "include" + forti_switch: "enable" forward_traffic: "enable" free_style: - category: "traffic" filter: "<your_own_value>" filter_type: "include" - id: "13" + id: "14" gtp: "enable" local_traffic: "enable" multicast_traffic: "enable" @@ -352,6 +360,7 @@ def filter_log_fortianalyzer_cloud_override_filter_data(json): "dns", "filter", "filter_type", + "forti_switch", "forward_traffic", "free_style", "gtp", @@ -394,14 +403,13 @@ def log_fortianalyzer_cloud_override_filter(data, fos): log_fortianalyzer_cloud_override_filter_data = data[ "log_fortianalyzer_cloud_override_filter" ] - filtered_data = underscore_to_hyphen( - filter_log_fortianalyzer_cloud_override_filter_data( - log_fortianalyzer_cloud_override_filter_data - ) + filtered_data = filter_log_fortianalyzer_cloud_override_filter_data( + log_fortianalyzer_cloud_override_filter_data ) + converted_data = underscore_to_hyphen(filtered_data) return fos.set( - "log.fortianalyzer-cloud", "override-filter", data=filtered_data, vdom=vdom + "log.fortianalyzer-cloud", "override-filter", data=converted_data, vdom=vdom ) @@ -498,6 +506,11 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "forti_switch": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "free_style": { "type": "list", "elements": "dict", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer_cloud_override_setting.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer_cloud_override_setting.py index 3f0d0bf4f..1c2d8ecfb 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer_cloud_override_setting.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer_cloud_override_setting.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -220,14 +220,13 @@ def log_fortianalyzer_cloud_override_setting(data, fos): log_fortianalyzer_cloud_override_setting_data = data[ "log_fortianalyzer_cloud_override_setting" ] - filtered_data = underscore_to_hyphen( - filter_log_fortianalyzer_cloud_override_setting_data( - log_fortianalyzer_cloud_override_setting_data - ) + filtered_data = filter_log_fortianalyzer_cloud_override_setting_data( + log_fortianalyzer_cloud_override_setting_data ) + converted_data = underscore_to_hyphen(filtered_data) return fos.set( - "log.fortianalyzer-cloud", "override-setting", data=filtered_data, vdom=vdom + "log.fortianalyzer-cloud", "override-setting", data=converted_data, vdom=vdom ) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer_cloud_setting.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer_cloud_setting.py index 097126848..26eaef91e 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer_cloud_setting.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer_cloud_setting.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -399,13 +399,12 @@ def underscore_to_hyphen(data): def log_fortianalyzer_cloud_setting(data, fos): vdom = data["vdom"] log_fortianalyzer_cloud_setting_data = data["log_fortianalyzer_cloud_setting"] - filtered_data = underscore_to_hyphen( - filter_log_fortianalyzer_cloud_setting_data( - log_fortianalyzer_cloud_setting_data - ) + filtered_data = filter_log_fortianalyzer_cloud_setting_data( + log_fortianalyzer_cloud_setting_data ) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("log.fortianalyzer-cloud", "setting", data=filtered_data, vdom=vdom) + return fos.set("log.fortianalyzer-cloud", "setting", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer_filter.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer_filter.py index f1c145d44..6194d0ccf 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer_filter.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer_filter.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -112,6 +112,13 @@ options: choices: - 'include' - 'exclude' + forti_switch: + description: + - Enable/disable Forti-Switch logging. + type: str + choices: + - 'enable' + - 'disable' forward_traffic: description: - Enable/disable forward traffic logging. @@ -247,13 +254,14 @@ EXAMPLES = """ dns: "enable" filter: "<your_own_value>" filter_type: "include" + forti_switch: "enable" forward_traffic: "enable" free_style: - category: "traffic" filter: "<your_own_value>" filter_type: "include" - id: "13" + id: "14" gtp: "enable" local_traffic: "enable" multicast_traffic: "enable" @@ -352,6 +360,7 @@ def filter_log_fortianalyzer_filter_data(json): "dns", "filter", "filter_type", + "forti_switch", "forward_traffic", "free_style", "gtp", @@ -392,11 +401,10 @@ def underscore_to_hyphen(data): def log_fortianalyzer_filter(data, fos): vdom = data["vdom"] log_fortianalyzer_filter_data = data["log_fortianalyzer_filter"] - filtered_data = underscore_to_hyphen( - filter_log_fortianalyzer_filter_data(log_fortianalyzer_filter_data) - ) + filtered_data = filter_log_fortianalyzer_filter_data(log_fortianalyzer_filter_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("log.fortianalyzer", "filter", data=filtered_data, vdom=vdom) + return fos.set("log.fortianalyzer", "filter", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -492,6 +500,11 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "forti_switch": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "free_style": { "type": "list", "elements": "dict", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer_override_filter.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer_override_filter.py index ebdb97d76..34b68a7b9 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer_override_filter.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer_override_filter.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -112,6 +112,13 @@ options: choices: - 'include' - 'exclude' + forti_switch: + description: + - Enable/disable Forti-Switch logging. + type: str + choices: + - 'enable' + - 'disable' forward_traffic: description: - Enable/disable forward traffic logging. @@ -247,13 +254,14 @@ EXAMPLES = """ dns: "enable" filter: "<your_own_value>" filter_type: "include" + forti_switch: "enable" forward_traffic: "enable" free_style: - category: "traffic" filter: "<your_own_value>" filter_type: "include" - id: "13" + id: "14" gtp: "enable" local_traffic: "enable" multicast_traffic: "enable" @@ -352,6 +360,7 @@ def filter_log_fortianalyzer_override_filter_data(json): "dns", "filter", "filter_type", + "forti_switch", "forward_traffic", "free_style", "gtp", @@ -392,14 +401,13 @@ def underscore_to_hyphen(data): def log_fortianalyzer_override_filter(data, fos): vdom = data["vdom"] log_fortianalyzer_override_filter_data = data["log_fortianalyzer_override_filter"] - filtered_data = underscore_to_hyphen( - filter_log_fortianalyzer_override_filter_data( - log_fortianalyzer_override_filter_data - ) + filtered_data = filter_log_fortianalyzer_override_filter_data( + log_fortianalyzer_override_filter_data ) + converted_data = underscore_to_hyphen(filtered_data) return fos.set( - "log.fortianalyzer", "override-filter", data=filtered_data, vdom=vdom + "log.fortianalyzer", "override-filter", data=converted_data, vdom=vdom ) @@ -496,6 +504,11 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "forti_switch": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "free_style": { "type": "list", "elements": "dict", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer_override_setting.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer_override_setting.py index 2dd019c73..04dae34a7 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer_override_setting.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer_override_setting.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -211,6 +211,10 @@ options: description: - The remote FortiAnalyzer. type: str + server_cert_ca: + description: + - Mandatory CA on FortiGate in certificate chain of server. Source certificate.ca.name vpn.certificate.ca.name. + type: str source_ip: description: - Source IPv4 or IPv6 address used to communicate with FortiAnalyzer. @@ -297,6 +301,7 @@ EXAMPLES = """ - name: "default_name_25" server: "192.168.100.40" + server_cert_ca: "<your_own_value> (source certificate.ca.name vpn.certificate.ca.name)" source_ip: "84.230.14.43" ssl_min_proto_version: "default" status: "enable" @@ -411,6 +416,7 @@ def filter_log_fortianalyzer_override_setting_data(json): "reliable", "serial", "server", + "server_cert_ca", "source_ip", "ssl_min_proto_version", "status", @@ -447,14 +453,13 @@ def underscore_to_hyphen(data): def log_fortianalyzer_override_setting(data, fos): vdom = data["vdom"] log_fortianalyzer_override_setting_data = data["log_fortianalyzer_override_setting"] - filtered_data = underscore_to_hyphen( - filter_log_fortianalyzer_override_setting_data( - log_fortianalyzer_override_setting_data - ) + filtered_data = filter_log_fortianalyzer_override_setting_data( + log_fortianalyzer_override_setting_data ) + converted_data = underscore_to_hyphen(filtered_data) return fos.set( - "log.fortianalyzer", "override-setting", data=filtered_data, vdom=vdom + "log.fortianalyzer", "override-setting", data=converted_data, vdom=vdom ) @@ -531,6 +536,7 @@ versioned_schema = { }, "v_range": [["v6.2.0", ""]], }, + "server_cert_ca": {"v_range": [["v7.4.2", ""]], "type": "string"}, "preshared_key": {"v_range": [["v7.0.0", ""]], "type": "string"}, "access_config": { "v_range": [["v6.2.0", ""]], diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer_setting.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer_setting.py index 13157b88e..f0d68a886 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer_setting.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortianalyzer_setting.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -204,6 +204,10 @@ options: description: - The remote FortiAnalyzer. type: str + server_cert_ca: + description: + - Mandatory CA on FortiGate in certificate chain of server. Source certificate.ca.name vpn.certificate.ca.name. + type: str source_ip: description: - Source IPv4 or IPv6 address used to communicate with FortiAnalyzer. @@ -282,6 +286,7 @@ EXAMPLES = """ - name: "default_name_24" server: "192.168.100.40" + server_cert_ca: "<your_own_value> (source certificate.ca.name vpn.certificate.ca.name)" source_ip: "84.230.14.43" ssl_min_proto_version: "default" status: "enable" @@ -394,6 +399,7 @@ def filter_log_fortianalyzer_setting_data(json): "reliable", "serial", "server", + "server_cert_ca", "source_ip", "ssl_min_proto_version", "status", @@ -429,11 +435,12 @@ def underscore_to_hyphen(data): def log_fortianalyzer_setting(data, fos): vdom = data["vdom"] log_fortianalyzer_setting_data = data["log_fortianalyzer_setting"] - filtered_data = underscore_to_hyphen( - filter_log_fortianalyzer_setting_data(log_fortianalyzer_setting_data) + filtered_data = filter_log_fortianalyzer_setting_data( + log_fortianalyzer_setting_data ) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("log.fortianalyzer", "setting", data=filtered_data, vdom=vdom) + return fos.set("log.fortianalyzer", "setting", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -504,6 +511,7 @@ versioned_schema = { }, "v_range": [["v6.2.0", ""]], }, + "server_cert_ca": {"v_range": [["v7.4.2", ""]], "type": "string"}, "preshared_key": {"v_range": [["v7.0.0", ""]], "type": "string"}, "access_config": { "v_range": [["v6.2.0", ""]], diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortiguard_filter.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortiguard_filter.py index 21092bd9c..109e81b23 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortiguard_filter.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortiguard_filter.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -112,6 +112,13 @@ options: choices: - 'include' - 'exclude' + forti_switch: + description: + - Enable/disable Forti-Switch logging. + type: str + choices: + - 'enable' + - 'disable' forward_traffic: description: - Enable/disable forward traffic logging. @@ -247,13 +254,14 @@ EXAMPLES = """ dns: "enable" filter: "<your_own_value>" filter_type: "include" + forti_switch: "enable" forward_traffic: "enable" free_style: - category: "traffic" filter: "<your_own_value>" filter_type: "include" - id: "13" + id: "14" gtp: "enable" local_traffic: "enable" multicast_traffic: "enable" @@ -352,6 +360,7 @@ def filter_log_fortiguard_filter_data(json): "dns", "filter", "filter_type", + "forti_switch", "forward_traffic", "free_style", "gtp", @@ -392,11 +401,10 @@ def underscore_to_hyphen(data): def log_fortiguard_filter(data, fos): vdom = data["vdom"] log_fortiguard_filter_data = data["log_fortiguard_filter"] - filtered_data = underscore_to_hyphen( - filter_log_fortiguard_filter_data(log_fortiguard_filter_data) - ) + filtered_data = filter_log_fortiguard_filter_data(log_fortiguard_filter_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("log.fortiguard", "filter", data=filtered_data, vdom=vdom) + return fos.set("log.fortiguard", "filter", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -485,6 +493,11 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "forti_switch": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "free_style": { "type": "list", "elements": "dict", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortiguard_override_filter.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortiguard_override_filter.py index deb63cca4..3ba5893c3 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortiguard_override_filter.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortiguard_override_filter.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -112,6 +112,13 @@ options: choices: - 'include' - 'exclude' + forti_switch: + description: + - Enable/disable Forti-Switch logging. + type: str + choices: + - 'enable' + - 'disable' forward_traffic: description: - Enable/disable forward traffic logging. @@ -247,13 +254,14 @@ EXAMPLES = """ dns: "enable" filter: "<your_own_value>" filter_type: "include" + forti_switch: "enable" forward_traffic: "enable" free_style: - category: "traffic" filter: "<your_own_value>" filter_type: "include" - id: "13" + id: "14" gtp: "enable" local_traffic: "enable" multicast_traffic: "enable" @@ -352,6 +360,7 @@ def filter_log_fortiguard_override_filter_data(json): "dns", "filter", "filter_type", + "forti_switch", "forward_traffic", "free_style", "gtp", @@ -392,11 +401,12 @@ def underscore_to_hyphen(data): def log_fortiguard_override_filter(data, fos): vdom = data["vdom"] log_fortiguard_override_filter_data = data["log_fortiguard_override_filter"] - filtered_data = underscore_to_hyphen( - filter_log_fortiguard_override_filter_data(log_fortiguard_override_filter_data) + filtered_data = filter_log_fortiguard_override_filter_data( + log_fortiguard_override_filter_data ) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("log.fortiguard", "override-filter", data=filtered_data, vdom=vdom) + return fos.set("log.fortiguard", "override-filter", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -487,6 +497,11 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "forti_switch": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "free_style": { "type": "list", "elements": "dict", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortiguard_override_setting.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortiguard_override_setting.py index d4d447670..d5906376b 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortiguard_override_setting.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortiguard_override_setting.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -273,13 +273,12 @@ def underscore_to_hyphen(data): def log_fortiguard_override_setting(data, fos): vdom = data["vdom"] log_fortiguard_override_setting_data = data["log_fortiguard_override_setting"] - filtered_data = underscore_to_hyphen( - filter_log_fortiguard_override_setting_data( - log_fortiguard_override_setting_data - ) + filtered_data = filter_log_fortiguard_override_setting_data( + log_fortiguard_override_setting_data ) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("log.fortiguard", "override-setting", data=filtered_data, vdom=vdom) + return fos.set("log.fortiguard", "override-setting", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortiguard_setting.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortiguard_setting.py index f62c1197c..0e5d8845c 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortiguard_setting.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_fortiguard_setting.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -315,11 +315,10 @@ def underscore_to_hyphen(data): def log_fortiguard_setting(data, fos): vdom = data["vdom"] log_fortiguard_setting_data = data["log_fortiguard_setting"] - filtered_data = underscore_to_hyphen( - filter_log_fortiguard_setting_data(log_fortiguard_setting_data) - ) + filtered_data = filter_log_fortiguard_setting_data(log_fortiguard_setting_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("log.fortiguard", "setting", data=filtered_data, vdom=vdom) + return fos.set("log.fortiguard", "setting", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_gui_display.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_gui_display.py index 20f49acd3..4cf4fc15d 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_gui_display.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_gui_display.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -221,11 +221,10 @@ def underscore_to_hyphen(data): def log_gui_display(data, fos): vdom = data["vdom"] log_gui_display_data = data["log_gui_display"] - filtered_data = underscore_to_hyphen( - filter_log_gui_display_data(log_gui_display_data) - ) + filtered_data = filter_log_gui_display_data(log_gui_display_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("log", "gui-display", data=filtered_data, vdom=vdom) + return fos.set("log", "gui-display", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_memory_filter.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_memory_filter.py index 203016b16..7f834c9e3 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_memory_filter.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_memory_filter.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -140,6 +140,13 @@ options: choices: - 'include' - 'exclude' + forti_switch: + description: + - Enable/disable Forti-Switch logging. + type: str + choices: + - 'enable' + - 'disable' forward_traffic: description: - Enable/disable forward traffic logging. @@ -377,13 +384,14 @@ EXAMPLES = """ event: "enable" filter: "<your_own_value>" filter_type: "include" + forti_switch: "enable" forward_traffic: "enable" free_style: - category: "traffic" filter: "<your_own_value>" filter_type: "include" - id: "17" + id: "18" gtp: "enable" ha: "enable" ipsec: "enable" @@ -500,6 +508,7 @@ def filter_log_memory_filter_data(json): "event", "filter", "filter_type", + "forti_switch", "forward_traffic", "free_style", "gtp", @@ -554,11 +563,10 @@ def underscore_to_hyphen(data): def log_memory_filter(data, fos): vdom = data["vdom"] log_memory_filter_data = data["log_memory_filter"] - filtered_data = underscore_to_hyphen( - filter_log_memory_filter_data(log_memory_filter_data) - ) + filtered_data = filter_log_memory_filter_data(log_memory_filter_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("log.memory", "filter", data=filtered_data, vdom=vdom) + return fos.set("log.memory", "filter", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -647,6 +655,11 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "forti_switch": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "free_style": { "type": "list", "elements": "dict", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_memory_global_setting.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_memory_global_setting.py index 10f0ac468..439b828fa 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_memory_global_setting.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_memory_global_setting.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -106,7 +106,7 @@ EXAMPLES = """ full_final_warning_threshold: "95" full_first_warning_threshold: "75" full_second_warning_threshold: "90" - max_size: "20921835" + max_size: "20911636" """ RETURN = """ @@ -222,11 +222,12 @@ def underscore_to_hyphen(data): def log_memory_global_setting(data, fos): vdom = data["vdom"] log_memory_global_setting_data = data["log_memory_global_setting"] - filtered_data = underscore_to_hyphen( - filter_log_memory_global_setting_data(log_memory_global_setting_data) + filtered_data = filter_log_memory_global_setting_data( + log_memory_global_setting_data ) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("log.memory", "global-setting", data=filtered_data, vdom=vdom) + return fos.set("log.memory", "global-setting", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_memory_setting.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_memory_setting.py index ebdfc9c6c..90d2f5ef3 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_memory_setting.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_memory_setting.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -212,11 +212,10 @@ def underscore_to_hyphen(data): def log_memory_setting(data, fos): vdom = data["vdom"] log_memory_setting_data = data["log_memory_setting"] - filtered_data = underscore_to_hyphen( - filter_log_memory_setting_data(log_memory_setting_data) - ) + filtered_data = filter_log_memory_setting_data(log_memory_setting_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("log.memory", "setting", data=filtered_data, vdom=vdom) + return fos.set("log.memory", "setting", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_null_device_filter.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_null_device_filter.py index f8f78e799..a397e4130 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_null_device_filter.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_null_device_filter.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -105,6 +105,13 @@ options: choices: - 'include' - 'exclude' + forti_switch: + description: + - Enable/disable Forti-Switch logging. + type: str + choices: + - 'enable' + - 'disable' forward_traffic: description: - Enable/disable forward traffic logging. @@ -239,13 +246,14 @@ EXAMPLES = """ dns: "enable" filter: "<your_own_value>" filter_type: "include" + forti_switch: "enable" forward_traffic: "enable" free_style: - category: "traffic" filter: "<your_own_value>" filter_type: "include" - id: "12" + id: "13" gtp: "enable" local_traffic: "enable" multicast_traffic: "enable" @@ -343,6 +351,7 @@ def filter_log_null_device_filter_data(json): "dns", "filter", "filter_type", + "forti_switch", "forward_traffic", "free_style", "gtp", @@ -383,11 +392,10 @@ def underscore_to_hyphen(data): def log_null_device_filter(data, fos): vdom = data["vdom"] log_null_device_filter_data = data["log_null_device_filter"] - filtered_data = underscore_to_hyphen( - filter_log_null_device_filter_data(log_null_device_filter_data) - ) + filtered_data = filter_log_null_device_filter_data(log_null_device_filter_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("log.null-device", "filter", data=filtered_data, vdom=vdom) + return fos.set("log.null-device", "filter", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -476,6 +484,11 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "forti_switch": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "free_style": { "type": "list", "elements": "dict", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_null_device_setting.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_null_device_setting.py index bf43353b7..1ffc2141f 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_null_device_setting.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_null_device_setting.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -205,11 +205,10 @@ def underscore_to_hyphen(data): def log_null_device_setting(data, fos): vdom = data["vdom"] log_null_device_setting_data = data["log_null_device_setting"] - filtered_data = underscore_to_hyphen( - filter_log_null_device_setting_data(log_null_device_setting_data) - ) + filtered_data = filter_log_null_device_setting_data(log_null_device_setting_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("log.null-device", "setting", data=filtered_data, vdom=vdom) + return fos.set("log.null-device", "setting", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_setting.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_setting.py index 6885a8beb..77e6aefd6 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_setting.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_setting.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -214,6 +214,13 @@ options: choices: - 'enable' - 'disable' + long_live_session_stat: + description: + - Enable/disable long-live-session statistics logging. + type: str + choices: + - 'enable' + - 'disable' neighbor_event: description: - Enable/disable neighbor event logging. @@ -291,6 +298,7 @@ EXAMPLES = """ log_policy_comment: "enable" log_policy_name: "enable" log_user_in_upper: "enable" + long_live_session_stat: "enable" neighbor_event: "enable" resolve_ip: "enable" resolve_port: "enable" @@ -400,6 +408,7 @@ def filter_log_setting_data(json): "log_policy_comment", "log_policy_name", "log_user_in_upper", + "long_live_session_stat", "neighbor_event", "resolve_ip", "resolve_port", @@ -435,9 +444,10 @@ def underscore_to_hyphen(data): def log_setting(data, fos): vdom = data["vdom"] log_setting_data = data["log_setting"] - filtered_data = underscore_to_hyphen(filter_log_setting_data(log_setting_data)) + filtered_data = filter_log_setting_data(log_setting_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("log", "setting", data=filtered_data, vdom=vdom) + return fos.set("log", "setting", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -577,6 +587,11 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "long_live_session_stat": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "custom_log_fields": { "type": "list", "elements": "dict", @@ -591,7 +606,7 @@ versioned_schema = { }, "anonymization_hash": {"v_range": [["v7.0.2", ""]], "type": "string"}, "fortiview_weekly_data": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd2_filter.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd2_filter.py index 5dff5fad3..776f609ce 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd2_filter.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd2_filter.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -105,6 +105,13 @@ options: choices: - 'include' - 'exclude' + forti_switch: + description: + - Enable/disable Forti-Switch logging. + type: str + choices: + - 'enable' + - 'disable' forward_traffic: description: - Enable/disable forward traffic logging. @@ -239,13 +246,14 @@ EXAMPLES = """ dns: "enable" filter: "<your_own_value>" filter_type: "include" + forti_switch: "enable" forward_traffic: "enable" free_style: - category: "traffic" filter: "<your_own_value>" filter_type: "include" - id: "12" + id: "13" gtp: "enable" local_traffic: "enable" multicast_traffic: "enable" @@ -343,6 +351,7 @@ def filter_log_syslogd2_filter_data(json): "dns", "filter", "filter_type", + "forti_switch", "forward_traffic", "free_style", "gtp", @@ -383,11 +392,10 @@ def underscore_to_hyphen(data): def log_syslogd2_filter(data, fos): vdom = data["vdom"] log_syslogd2_filter_data = data["log_syslogd2_filter"] - filtered_data = underscore_to_hyphen( - filter_log_syslogd2_filter_data(log_syslogd2_filter_data) - ) + filtered_data = filter_log_syslogd2_filter_data(log_syslogd2_filter_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("log.syslogd2", "filter", data=filtered_data, vdom=vdom) + return fos.set("log.syslogd2", "filter", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -476,6 +484,11 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "forti_switch": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "free_style": { "type": "list", "elements": "dict", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd2_override_filter.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd2_override_filter.py index 5816ea817..a4f72f647 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd2_override_filter.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd2_override_filter.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -98,6 +98,13 @@ options: choices: - 'include' - 'exclude' + forti_switch: + description: + - Enable/disable Forti-Switch logging. + type: str + choices: + - 'enable' + - 'disable' forward_traffic: description: - Enable/disable forward traffic logging. @@ -216,13 +223,14 @@ EXAMPLES = """ anomaly: "enable" filter: "<your_own_value>" filter_type: "include" + forti_switch: "enable" forward_traffic: "enable" free_style: - category: "traffic" filter: "<your_own_value>" filter_type: "include" - id: "11" + id: "12" gtp: "enable" local_traffic: "enable" multicast_traffic: "enable" @@ -316,6 +324,7 @@ def filter_log_syslogd2_override_filter_data(json): "anomaly", "filter", "filter_type", + "forti_switch", "forward_traffic", "free_style", "gtp", @@ -353,11 +362,12 @@ def underscore_to_hyphen(data): def log_syslogd2_override_filter(data, fos): vdom = data["vdom"] log_syslogd2_override_filter_data = data["log_syslogd2_override_filter"] - filtered_data = underscore_to_hyphen( - filter_log_syslogd2_override_filter_data(log_syslogd2_override_filter_data) + filtered_data = filter_log_syslogd2_override_filter_data( + log_syslogd2_override_filter_data ) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("log.syslogd2", "override-filter", data=filtered_data, vdom=vdom) + return fos.set("log.syslogd2", "override-filter", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -448,6 +458,11 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "forti_switch": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "free_style": { "type": "list", "elements": "dict", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd2_override_setting.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd2_override_setting.py index bb29919f9..a08e3dc2f 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd2_override_setting.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd2_override_setting.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -379,11 +379,12 @@ def underscore_to_hyphen(data): def log_syslogd2_override_setting(data, fos): vdom = data["vdom"] log_syslogd2_override_setting_data = data["log_syslogd2_override_setting"] - filtered_data = underscore_to_hyphen( - filter_log_syslogd2_override_setting_data(log_syslogd2_override_setting_data) + filtered_data = filter_log_syslogd2_override_setting_data( + log_syslogd2_override_setting_data ) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("log.syslogd2", "override-setting", data=filtered_data, vdom=vdom) + return fos.set("log.syslogd2", "override-setting", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd2_setting.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd2_setting.py index 5c6eb00ed..2528eec72 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd2_setting.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd2_setting.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -370,11 +370,10 @@ def underscore_to_hyphen(data): def log_syslogd2_setting(data, fos): vdom = data["vdom"] log_syslogd2_setting_data = data["log_syslogd2_setting"] - filtered_data = underscore_to_hyphen( - filter_log_syslogd2_setting_data(log_syslogd2_setting_data) - ) + filtered_data = filter_log_syslogd2_setting_data(log_syslogd2_setting_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("log.syslogd2", "setting", data=filtered_data, vdom=vdom) + return fos.set("log.syslogd2", "setting", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd3_filter.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd3_filter.py index 672989379..6786e8ad7 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd3_filter.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd3_filter.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -105,6 +105,13 @@ options: choices: - 'include' - 'exclude' + forti_switch: + description: + - Enable/disable Forti-Switch logging. + type: str + choices: + - 'enable' + - 'disable' forward_traffic: description: - Enable/disable forward traffic logging. @@ -239,13 +246,14 @@ EXAMPLES = """ dns: "enable" filter: "<your_own_value>" filter_type: "include" + forti_switch: "enable" forward_traffic: "enable" free_style: - category: "traffic" filter: "<your_own_value>" filter_type: "include" - id: "12" + id: "13" gtp: "enable" local_traffic: "enable" multicast_traffic: "enable" @@ -343,6 +351,7 @@ def filter_log_syslogd3_filter_data(json): "dns", "filter", "filter_type", + "forti_switch", "forward_traffic", "free_style", "gtp", @@ -383,11 +392,10 @@ def underscore_to_hyphen(data): def log_syslogd3_filter(data, fos): vdom = data["vdom"] log_syslogd3_filter_data = data["log_syslogd3_filter"] - filtered_data = underscore_to_hyphen( - filter_log_syslogd3_filter_data(log_syslogd3_filter_data) - ) + filtered_data = filter_log_syslogd3_filter_data(log_syslogd3_filter_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("log.syslogd3", "filter", data=filtered_data, vdom=vdom) + return fos.set("log.syslogd3", "filter", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -476,6 +484,11 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "forti_switch": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "free_style": { "type": "list", "elements": "dict", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd3_override_filter.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd3_override_filter.py index bbf63872c..8c0c72f7a 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd3_override_filter.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd3_override_filter.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -98,6 +98,13 @@ options: choices: - 'include' - 'exclude' + forti_switch: + description: + - Enable/disable Forti-Switch logging. + type: str + choices: + - 'enable' + - 'disable' forward_traffic: description: - Enable/disable forward traffic logging. @@ -216,13 +223,14 @@ EXAMPLES = """ anomaly: "enable" filter: "<your_own_value>" filter_type: "include" + forti_switch: "enable" forward_traffic: "enable" free_style: - category: "traffic" filter: "<your_own_value>" filter_type: "include" - id: "11" + id: "12" gtp: "enable" local_traffic: "enable" multicast_traffic: "enable" @@ -316,6 +324,7 @@ def filter_log_syslogd3_override_filter_data(json): "anomaly", "filter", "filter_type", + "forti_switch", "forward_traffic", "free_style", "gtp", @@ -353,11 +362,12 @@ def underscore_to_hyphen(data): def log_syslogd3_override_filter(data, fos): vdom = data["vdom"] log_syslogd3_override_filter_data = data["log_syslogd3_override_filter"] - filtered_data = underscore_to_hyphen( - filter_log_syslogd3_override_filter_data(log_syslogd3_override_filter_data) + filtered_data = filter_log_syslogd3_override_filter_data( + log_syslogd3_override_filter_data ) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("log.syslogd3", "override-filter", data=filtered_data, vdom=vdom) + return fos.set("log.syslogd3", "override-filter", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -448,6 +458,11 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "forti_switch": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "free_style": { "type": "list", "elements": "dict", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd3_override_setting.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd3_override_setting.py index 05e37ea42..cf012828d 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd3_override_setting.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd3_override_setting.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -379,11 +379,12 @@ def underscore_to_hyphen(data): def log_syslogd3_override_setting(data, fos): vdom = data["vdom"] log_syslogd3_override_setting_data = data["log_syslogd3_override_setting"] - filtered_data = underscore_to_hyphen( - filter_log_syslogd3_override_setting_data(log_syslogd3_override_setting_data) + filtered_data = filter_log_syslogd3_override_setting_data( + log_syslogd3_override_setting_data ) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("log.syslogd3", "override-setting", data=filtered_data, vdom=vdom) + return fos.set("log.syslogd3", "override-setting", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd3_setting.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd3_setting.py index 487a9a652..2434f3152 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd3_setting.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd3_setting.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -370,11 +370,10 @@ def underscore_to_hyphen(data): def log_syslogd3_setting(data, fos): vdom = data["vdom"] log_syslogd3_setting_data = data["log_syslogd3_setting"] - filtered_data = underscore_to_hyphen( - filter_log_syslogd3_setting_data(log_syslogd3_setting_data) - ) + filtered_data = filter_log_syslogd3_setting_data(log_syslogd3_setting_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("log.syslogd3", "setting", data=filtered_data, vdom=vdom) + return fos.set("log.syslogd3", "setting", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd4_filter.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd4_filter.py index ffc3f4e73..351c3dd29 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd4_filter.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd4_filter.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -105,6 +105,13 @@ options: choices: - 'include' - 'exclude' + forti_switch: + description: + - Enable/disable Forti-Switch logging. + type: str + choices: + - 'enable' + - 'disable' forward_traffic: description: - Enable/disable forward traffic logging. @@ -239,13 +246,14 @@ EXAMPLES = """ dns: "enable" filter: "<your_own_value>" filter_type: "include" + forti_switch: "enable" forward_traffic: "enable" free_style: - category: "traffic" filter: "<your_own_value>" filter_type: "include" - id: "12" + id: "13" gtp: "enable" local_traffic: "enable" multicast_traffic: "enable" @@ -343,6 +351,7 @@ def filter_log_syslogd4_filter_data(json): "dns", "filter", "filter_type", + "forti_switch", "forward_traffic", "free_style", "gtp", @@ -383,11 +392,10 @@ def underscore_to_hyphen(data): def log_syslogd4_filter(data, fos): vdom = data["vdom"] log_syslogd4_filter_data = data["log_syslogd4_filter"] - filtered_data = underscore_to_hyphen( - filter_log_syslogd4_filter_data(log_syslogd4_filter_data) - ) + filtered_data = filter_log_syslogd4_filter_data(log_syslogd4_filter_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("log.syslogd4", "filter", data=filtered_data, vdom=vdom) + return fos.set("log.syslogd4", "filter", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -476,6 +484,11 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "forti_switch": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "free_style": { "type": "list", "elements": "dict", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd4_override_filter.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd4_override_filter.py index f591fc7a0..5e1c6d63c 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd4_override_filter.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd4_override_filter.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -98,6 +98,13 @@ options: choices: - 'include' - 'exclude' + forti_switch: + description: + - Enable/disable Forti-Switch logging. + type: str + choices: + - 'enable' + - 'disable' forward_traffic: description: - Enable/disable forward traffic logging. @@ -216,13 +223,14 @@ EXAMPLES = """ anomaly: "enable" filter: "<your_own_value>" filter_type: "include" + forti_switch: "enable" forward_traffic: "enable" free_style: - category: "traffic" filter: "<your_own_value>" filter_type: "include" - id: "11" + id: "12" gtp: "enable" local_traffic: "enable" multicast_traffic: "enable" @@ -316,6 +324,7 @@ def filter_log_syslogd4_override_filter_data(json): "anomaly", "filter", "filter_type", + "forti_switch", "forward_traffic", "free_style", "gtp", @@ -353,11 +362,12 @@ def underscore_to_hyphen(data): def log_syslogd4_override_filter(data, fos): vdom = data["vdom"] log_syslogd4_override_filter_data = data["log_syslogd4_override_filter"] - filtered_data = underscore_to_hyphen( - filter_log_syslogd4_override_filter_data(log_syslogd4_override_filter_data) + filtered_data = filter_log_syslogd4_override_filter_data( + log_syslogd4_override_filter_data ) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("log.syslogd4", "override-filter", data=filtered_data, vdom=vdom) + return fos.set("log.syslogd4", "override-filter", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -448,6 +458,11 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "forti_switch": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "free_style": { "type": "list", "elements": "dict", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd4_override_setting.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd4_override_setting.py index a0dd1f913..affb928ee 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd4_override_setting.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd4_override_setting.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -379,11 +379,12 @@ def underscore_to_hyphen(data): def log_syslogd4_override_setting(data, fos): vdom = data["vdom"] log_syslogd4_override_setting_data = data["log_syslogd4_override_setting"] - filtered_data = underscore_to_hyphen( - filter_log_syslogd4_override_setting_data(log_syslogd4_override_setting_data) + filtered_data = filter_log_syslogd4_override_setting_data( + log_syslogd4_override_setting_data ) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("log.syslogd4", "override-setting", data=filtered_data, vdom=vdom) + return fos.set("log.syslogd4", "override-setting", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd4_setting.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd4_setting.py index 8c15e5dc2..d46c003ee 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd4_setting.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd4_setting.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -370,11 +370,10 @@ def underscore_to_hyphen(data): def log_syslogd4_setting(data, fos): vdom = data["vdom"] log_syslogd4_setting_data = data["log_syslogd4_setting"] - filtered_data = underscore_to_hyphen( - filter_log_syslogd4_setting_data(log_syslogd4_setting_data) - ) + filtered_data = filter_log_syslogd4_setting_data(log_syslogd4_setting_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("log.syslogd4", "setting", data=filtered_data, vdom=vdom) + return fos.set("log.syslogd4", "setting", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd_filter.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd_filter.py index 46ca283a4..7d04775eb 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd_filter.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd_filter.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -105,6 +105,13 @@ options: choices: - 'include' - 'exclude' + forti_switch: + description: + - Enable/disable Forti-Switch logging. + type: str + choices: + - 'enable' + - 'disable' forward_traffic: description: - Enable/disable forward traffic logging. @@ -239,13 +246,14 @@ EXAMPLES = """ dns: "enable" filter: "<your_own_value>" filter_type: "include" + forti_switch: "enable" forward_traffic: "enable" free_style: - category: "traffic" filter: "<your_own_value>" filter_type: "include" - id: "12" + id: "13" gtp: "enable" local_traffic: "enable" multicast_traffic: "enable" @@ -343,6 +351,7 @@ def filter_log_syslogd_filter_data(json): "dns", "filter", "filter_type", + "forti_switch", "forward_traffic", "free_style", "gtp", @@ -383,11 +392,10 @@ def underscore_to_hyphen(data): def log_syslogd_filter(data, fos): vdom = data["vdom"] log_syslogd_filter_data = data["log_syslogd_filter"] - filtered_data = underscore_to_hyphen( - filter_log_syslogd_filter_data(log_syslogd_filter_data) - ) + filtered_data = filter_log_syslogd_filter_data(log_syslogd_filter_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("log.syslogd", "filter", data=filtered_data, vdom=vdom) + return fos.set("log.syslogd", "filter", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -476,6 +484,11 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "forti_switch": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "free_style": { "type": "list", "elements": "dict", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd_override_filter.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd_override_filter.py index 6a6ef1760..0a5b129bd 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd_override_filter.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd_override_filter.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -105,6 +105,13 @@ options: choices: - 'include' - 'exclude' + forti_switch: + description: + - Enable/disable Forti-Switch logging. + type: str + choices: + - 'enable' + - 'disable' forward_traffic: description: - Enable/disable forward traffic logging. @@ -239,13 +246,14 @@ EXAMPLES = """ dns: "enable" filter: "<your_own_value>" filter_type: "include" + forti_switch: "enable" forward_traffic: "enable" free_style: - category: "traffic" filter: "<your_own_value>" filter_type: "include" - id: "12" + id: "13" gtp: "enable" local_traffic: "enable" multicast_traffic: "enable" @@ -343,6 +351,7 @@ def filter_log_syslogd_override_filter_data(json): "dns", "filter", "filter_type", + "forti_switch", "forward_traffic", "free_style", "gtp", @@ -383,11 +392,12 @@ def underscore_to_hyphen(data): def log_syslogd_override_filter(data, fos): vdom = data["vdom"] log_syslogd_override_filter_data = data["log_syslogd_override_filter"] - filtered_data = underscore_to_hyphen( - filter_log_syslogd_override_filter_data(log_syslogd_override_filter_data) + filtered_data = filter_log_syslogd_override_filter_data( + log_syslogd_override_filter_data ) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("log.syslogd", "override-filter", data=filtered_data, vdom=vdom) + return fos.set("log.syslogd", "override-filter", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -478,6 +488,11 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "forti_switch": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "free_style": { "type": "list", "elements": "dict", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd_override_setting.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd_override_setting.py index a80972c85..69cd42104 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd_override_setting.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd_override_setting.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -379,11 +379,12 @@ def underscore_to_hyphen(data): def log_syslogd_override_setting(data, fos): vdom = data["vdom"] log_syslogd_override_setting_data = data["log_syslogd_override_setting"] - filtered_data = underscore_to_hyphen( - filter_log_syslogd_override_setting_data(log_syslogd_override_setting_data) + filtered_data = filter_log_syslogd_override_setting_data( + log_syslogd_override_setting_data ) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("log.syslogd", "override-setting", data=filtered_data, vdom=vdom) + return fos.set("log.syslogd", "override-setting", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd_setting.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd_setting.py index 41420e4d0..7c266a211 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd_setting.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_syslogd_setting.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -370,11 +370,10 @@ def underscore_to_hyphen(data): def log_syslogd_setting(data, fos): vdom = data["vdom"] log_syslogd_setting_data = data["log_syslogd_setting"] - filtered_data = underscore_to_hyphen( - filter_log_syslogd_setting_data(log_syslogd_setting_data) - ) + filtered_data = filter_log_syslogd_setting_data(log_syslogd_setting_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("log.syslogd", "setting", data=filtered_data, vdom=vdom) + return fos.set("log.syslogd", "setting", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_tacacsplusaccounting2_filter.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_tacacsplusaccounting2_filter.py index 28c9bc889..6a9e92838 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_tacacsplusaccounting2_filter.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_tacacsplusaccounting2_filter.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -221,13 +221,12 @@ def underscore_to_hyphen(data): def log_tacacsplusaccounting2_filter(data, fos): vdom = data["vdom"] log_tacacsplusaccounting2_filter_data = data["log_tacacsplusaccounting2_filter"] - filtered_data = underscore_to_hyphen( - filter_log_tacacsplusaccounting2_filter_data( - log_tacacsplusaccounting2_filter_data - ) + filtered_data = filter_log_tacacsplusaccounting2_filter_data( + log_tacacsplusaccounting2_filter_data ) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("log.tacacs+accounting2", "filter", data=filtered_data, vdom=vdom) + return fos.set("log.tacacs+accounting2", "filter", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_tacacsplusaccounting2_setting.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_tacacsplusaccounting2_setting.py index 9c51d1975..ce498e1a2 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_tacacsplusaccounting2_setting.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_tacacsplusaccounting2_setting.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -241,13 +241,12 @@ def underscore_to_hyphen(data): def log_tacacsplusaccounting2_setting(data, fos): vdom = data["vdom"] log_tacacsplusaccounting2_setting_data = data["log_tacacsplusaccounting2_setting"] - filtered_data = underscore_to_hyphen( - filter_log_tacacsplusaccounting2_setting_data( - log_tacacsplusaccounting2_setting_data - ) + filtered_data = filter_log_tacacsplusaccounting2_setting_data( + log_tacacsplusaccounting2_setting_data ) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("log.tacacs+accounting2", "setting", data=filtered_data, vdom=vdom) + return fos.set("log.tacacs+accounting2", "setting", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_tacacsplusaccounting3_filter.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_tacacsplusaccounting3_filter.py index 82502c45f..e76c3d6d3 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_tacacsplusaccounting3_filter.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_tacacsplusaccounting3_filter.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -221,13 +221,12 @@ def underscore_to_hyphen(data): def log_tacacsplusaccounting3_filter(data, fos): vdom = data["vdom"] log_tacacsplusaccounting3_filter_data = data["log_tacacsplusaccounting3_filter"] - filtered_data = underscore_to_hyphen( - filter_log_tacacsplusaccounting3_filter_data( - log_tacacsplusaccounting3_filter_data - ) + filtered_data = filter_log_tacacsplusaccounting3_filter_data( + log_tacacsplusaccounting3_filter_data ) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("log.tacacs+accounting3", "filter", data=filtered_data, vdom=vdom) + return fos.set("log.tacacs+accounting3", "filter", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_tacacsplusaccounting3_setting.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_tacacsplusaccounting3_setting.py index c490d4a66..b41aa066e 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_tacacsplusaccounting3_setting.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_tacacsplusaccounting3_setting.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -241,13 +241,12 @@ def underscore_to_hyphen(data): def log_tacacsplusaccounting3_setting(data, fos): vdom = data["vdom"] log_tacacsplusaccounting3_setting_data = data["log_tacacsplusaccounting3_setting"] - filtered_data = underscore_to_hyphen( - filter_log_tacacsplusaccounting3_setting_data( - log_tacacsplusaccounting3_setting_data - ) + filtered_data = filter_log_tacacsplusaccounting3_setting_data( + log_tacacsplusaccounting3_setting_data ) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("log.tacacs+accounting3", "setting", data=filtered_data, vdom=vdom) + return fos.set("log.tacacs+accounting3", "setting", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_tacacsplusaccounting_filter.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_tacacsplusaccounting_filter.py index 3163541e1..89199ac32 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_tacacsplusaccounting_filter.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_tacacsplusaccounting_filter.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -221,13 +221,12 @@ def underscore_to_hyphen(data): def log_tacacsplusaccounting_filter(data, fos): vdom = data["vdom"] log_tacacsplusaccounting_filter_data = data["log_tacacsplusaccounting_filter"] - filtered_data = underscore_to_hyphen( - filter_log_tacacsplusaccounting_filter_data( - log_tacacsplusaccounting_filter_data - ) + filtered_data = filter_log_tacacsplusaccounting_filter_data( + log_tacacsplusaccounting_filter_data ) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("log.tacacs+accounting", "filter", data=filtered_data, vdom=vdom) + return fos.set("log.tacacs+accounting", "filter", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_tacacsplusaccounting_setting.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_tacacsplusaccounting_setting.py index 9ae2bc591..92cf58399 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_tacacsplusaccounting_setting.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_tacacsplusaccounting_setting.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -241,13 +241,12 @@ def underscore_to_hyphen(data): def log_tacacsplusaccounting_setting(data, fos): vdom = data["vdom"] log_tacacsplusaccounting_setting_data = data["log_tacacsplusaccounting_setting"] - filtered_data = underscore_to_hyphen( - filter_log_tacacsplusaccounting_setting_data( - log_tacacsplusaccounting_setting_data - ) + filtered_data = filter_log_tacacsplusaccounting_setting_data( + log_tacacsplusaccounting_setting_data ) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("log.tacacs+accounting", "setting", data=filtered_data, vdom=vdom) + return fos.set("log.tacacs+accounting", "setting", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_threat_weight.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_threat_weight.py index 5ecdc883f..3c0560bc1 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_threat_weight.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_threat_weight.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -675,11 +675,10 @@ def underscore_to_hyphen(data): def log_threat_weight(data, fos): vdom = data["vdom"] log_threat_weight_data = data["log_threat_weight"] - filtered_data = underscore_to_hyphen( - filter_log_threat_weight_data(log_threat_weight_data) - ) + filtered_data = filter_log_threat_weight_data(log_threat_weight_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("log", "threat-weight", data=filtered_data, vdom=vdom) + return fos.set("log", "threat-weight", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_webtrends_filter.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_webtrends_filter.py index 854a17583..d5560cf03 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_webtrends_filter.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_webtrends_filter.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -105,6 +105,13 @@ options: choices: - 'include' - 'exclude' + forti_switch: + description: + - Enable/disable Forti-Switch logging. + type: str + choices: + - 'enable' + - 'disable' forward_traffic: description: - Enable/disable forward traffic logging. @@ -239,13 +246,14 @@ EXAMPLES = """ dns: "enable" filter: "<your_own_value>" filter_type: "include" + forti_switch: "enable" forward_traffic: "enable" free_style: - category: "traffic" filter: "<your_own_value>" filter_type: "include" - id: "12" + id: "13" gtp: "enable" local_traffic: "enable" multicast_traffic: "enable" @@ -343,6 +351,7 @@ def filter_log_webtrends_filter_data(json): "dns", "filter", "filter_type", + "forti_switch", "forward_traffic", "free_style", "gtp", @@ -383,11 +392,10 @@ def underscore_to_hyphen(data): def log_webtrends_filter(data, fos): vdom = data["vdom"] log_webtrends_filter_data = data["log_webtrends_filter"] - filtered_data = underscore_to_hyphen( - filter_log_webtrends_filter_data(log_webtrends_filter_data) - ) + filtered_data = filter_log_webtrends_filter_data(log_webtrends_filter_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("log.webtrends", "filter", data=filtered_data, vdom=vdom) + return fos.set("log.webtrends", "filter", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -476,6 +484,11 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "forti_switch": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "free_style": { "type": "list", "elements": "dict", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_webtrends_setting.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_webtrends_setting.py index e421898d4..09734b95f 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_webtrends_setting.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_log_webtrends_setting.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -210,11 +210,10 @@ def underscore_to_hyphen(data): def log_webtrends_setting(data, fos): vdom = data["vdom"] log_webtrends_setting_data = data["log_webtrends_setting"] - filtered_data = underscore_to_hyphen( - filter_log_webtrends_setting_data(log_webtrends_setting_data) - ) + filtered_data = filter_log_webtrends_setting_data(log_webtrends_setting_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("log.webtrends", "setting", data=filtered_data, vdom=vdom) + return fos.set("log.webtrends", "setting", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_monitor.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_monitor.py index 70a93ee4c..02eeaea57 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_monitor.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_monitor.py @@ -571,7 +571,7 @@ module_selectors_defs = { "params": { "id": {"type": "int", "required": "False"}, "method": {"type": "string", "required": "False"}, - "admins": {"type": "array", "required": "False"}, + "admins": {"type": "array", "required": "True"}, }, }, "set.system.time": { @@ -1633,7 +1633,7 @@ module_selectors_defs = { "update-global-label.firewall.policy": { "url": "firewall/policy/update-global-label", "params": { - "policyid": {"type": "int", "required": "True"}, + "policyid": {"type": "string", "required": "True"}, "current-label": {"type": "string", "required": "False"}, "new-label": {"type": "string", "required": "False"}, }, @@ -1641,7 +1641,7 @@ module_selectors_defs = { "update-global-label.firewall.security-policy": { "url": "firewall/security-policy/update-global-label", "params": { - "policyid": {"type": "int", "required": "True"}, + "policyid": {"type": "string", "required": "True"}, "current-label": {"type": "string", "required": "False"}, "new-label": {"type": "string", "required": "False"}, }, diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_monitor_fact.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_monitor_fact.py index 25e11cd21..b23a2df6b 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_monitor_fact.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_monitor_fact.py @@ -445,6 +445,13 @@ options: - 'extension-controller_lan-extension-vdom-status' - 'user_proxy' - 'user_proxy_count' + - 'firewall_check-addrgrp-exclude-mac-member' + - 'firewall_saas-application' + - 'router_sdwan_routes' + - 'router_sdwan_routes6' + - 'router_sdwan_routes-statistics' + - 'extender-controller_extender_modem-firmware' + - 'user_radius_get-test-connect' selector: description: @@ -770,6 +777,13 @@ options: - 'extension-controller_lan-extension-vdom-status' - 'user_proxy' - 'user_proxy_count' + - 'firewall_check-addrgrp-exclude-mac-member' + - 'firewall_saas-application' + - 'router_sdwan_routes' + - 'router_sdwan_routes6' + - 'router_sdwan_routes-statistics' + - 'extender-controller_extender_modem-firmware' + - 'user_radius_get-test-connect' params: description: @@ -1830,6 +1844,7 @@ module_selectors_defs = { "timestamp_to": {"type": "int", "required": "False"}, "filters": {"type": "array", "required": "False"}, "query_type": {"type": "string", "required": "False"}, + "view_type": {"type": "string", "required": "False"}, "query_id": {"type": "int", "required": "False"}, "cache_query": {"type": "boolean", "required": "False"}, "key_only": {"type": "boolean", "required": "False"}, @@ -1926,6 +1941,7 @@ module_selectors_defs = { "scope": {"type": "string", "required": "False"}, "search_tables": {"type": "array", "required": "False"}, "skip_tables": {"type": "array", "required": "False"}, + "exact": {"type": "boolean", "required": "False"}, }, }, "switch-controller_managed-switch_status": { @@ -2320,6 +2336,36 @@ module_selectors_defs = { }, "user_proxy": {"url": "user/proxy", "params": {}}, "user_proxy_count": {"url": "user/proxy/count", "params": {}}, + "firewall_check-addrgrp-exclude-mac-member": { + "url": "firewall/check-addrgrp-exclude-mac-member", + "params": { + "mkey": {"type": "string", "required": "True"}, + "ip_version": {"type": "string", "required": "False"}, + }, + }, + "firewall_saas-application": {"url": "firewall/saas-application", "params": {}}, + "router_sdwan_routes": {"url": "router/sdwan/routes", "params": {}}, + "router_sdwan_routes6": {"url": "router/sdwan/routes6", "params": {}}, + "router_sdwan_routes-statistics": { + "url": "router/sdwan/routes-statistics", + "params": {"ip_version": {"type": "string", "required": "False"}}, + }, + "extender-controller_extender_modem-firmware": { + "url": "extender-controller/extender/modem-firmware", + "params": {"serial": {"type": "string", "required": "True"}}, + }, + "user_radius_get-test-connect": { + "url": "user/radius/get-test-connect", + "params": { + "mkey": {"type": "string", "required": "False"}, + "ordinal": {"type": "string", "required": "False"}, + "server": {"type": "string", "required": "False"}, + "secret": {"type": "string", "required": "False"}, + "auth_type": {"type": "string", "required": "False"}, + "user": {"type": "string", "required": "False"}, + "password": {"type": "string", "required": "False"}, + }, + }, } @@ -2751,6 +2797,13 @@ def main(): "extension-controller_lan-extension-vdom-status", "user_proxy", "user_proxy_count", + "firewall_check-addrgrp-exclude-mac-member", + "firewall_saas-application", + "router_sdwan_routes", + "router_sdwan_routes6", + "router_sdwan_routes-statistics", + "extender-controller_extender_modem-firmware", + "user_radius_get-test-connect", ], }, "selectors": { @@ -3084,6 +3137,13 @@ def main(): "extension-controller_lan-extension-vdom-status", "user_proxy", "user_proxy_count", + "firewall_check-addrgrp-exclude-mac-member", + "firewall_saas-application", + "router_sdwan_routes", + "router_sdwan_routes6", + "router_sdwan_routes-statistics", + "extender-controller_extender_modem-firmware", + "user_radius_get-test-connect", ], }, }, diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_monitoring_np6_ipsec_engine.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_monitoring_np6_ipsec_engine.py index 98588718f..4715f3399 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_monitoring_np6_ipsec_engine.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_monitoring_np6_ipsec_engine.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -249,11 +249,12 @@ def monitoring_np6_ipsec_engine(data, fos): monitoring_np6_ipsec_engine_data = flatten_multilists_attributes( monitoring_np6_ipsec_engine_data ) - filtered_data = underscore_to_hyphen( - filter_monitoring_np6_ipsec_engine_data(monitoring_np6_ipsec_engine_data) + filtered_data = filter_monitoring_np6_ipsec_engine_data( + monitoring_np6_ipsec_engine_data ) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("monitoring", "np6-ipsec-engine", data=filtered_data, vdom=vdom) + return fos.set("monitoring", "np6-ipsec-engine", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -287,17 +288,20 @@ def fortios_monitoring(data, fos): versioned_schema = { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "dict", "children": { "status": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, - "interval": {"v_range": [["v6.0.0", ""]], "type": "integer"}, + "interval": { + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], + "type": "integer", + }, "threshold": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "list", "multiple_values": True, "elements": "str", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_monitoring_npu_hpe.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_monitoring_npu_hpe.py index 57e11fe09..965de21c6 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_monitoring_npu_hpe.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_monitoring_npu_hpe.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -246,11 +246,10 @@ def monitoring_npu_hpe(data, fos): vdom = data["vdom"] monitoring_npu_hpe_data = data["monitoring_npu_hpe"] monitoring_npu_hpe_data = flatten_multilists_attributes(monitoring_npu_hpe_data) - filtered_data = underscore_to_hyphen( - filter_monitoring_npu_hpe_data(monitoring_npu_hpe_data) - ) + filtered_data = filter_monitoring_npu_hpe_data(monitoring_npu_hpe_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("monitoring", "npu-hpe", data=filtered_data, vdom=vdom) + return fos.set("monitoring", "npu-hpe", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_nsxt_service_chain.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_nsxt_service_chain.py index 4524adb33..4c448352c 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_nsxt_service_chain.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_nsxt_service_chain.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -252,12 +252,11 @@ def nsxt_service_chain(data, fos): state = data["state"] nsxt_service_chain_data = data["nsxt_service_chain"] - filtered_data = underscore_to_hyphen( - filter_nsxt_service_chain_data(nsxt_service_chain_data) - ) + filtered_data = filter_nsxt_service_chain_data(nsxt_service_chain_data) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: - return fos.set("nsxt", "service-chain", data=filtered_data, vdom=vdom) + return fos.set("nsxt", "service-chain", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("nsxt", "service-chain", mkey=filtered_data["id"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_nsxt_setting.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_nsxt_setting.py index 72ba3d5e6..f40e1baae 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_nsxt_setting.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_nsxt_setting.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -210,9 +210,10 @@ def underscore_to_hyphen(data): def nsxt_setting(data, fos): vdom = data["vdom"] nsxt_setting_data = data["nsxt_setting"] - filtered_data = underscore_to_hyphen(filter_nsxt_setting_data(nsxt_setting_data)) + filtered_data = filter_nsxt_setting_data(nsxt_setting_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("nsxt", "setting", data=filtered_data, vdom=vdom) + return fos.set("nsxt", "setting", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_pfcp_message_filter.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_pfcp_message_filter.py index afccb153c..a55f0a35a 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_pfcp_message_filter.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_pfcp_message_filter.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -350,12 +350,11 @@ def pfcp_message_filter(data, fos): state = data["state"] pfcp_message_filter_data = data["pfcp_message_filter"] - filtered_data = underscore_to_hyphen( - filter_pfcp_message_filter_data(pfcp_message_filter_data) - ) + filtered_data = filter_pfcp_message_filter_data(pfcp_message_filter_data) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: - return fos.set("pfcp", "message-filter", data=filtered_data, vdom=vdom) + return fos.set("pfcp", "message-filter", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( @@ -398,12 +397,12 @@ versioned_schema = { "elements": "dict", "children": { "name": { - "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "required": True, }, "unknown_message": { - "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, @@ -412,75 +411,79 @@ versioned_schema = { "elements": "dict", "children": { "id": { - "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v7.0.1", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "integer", "required": True, } }, - "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], }, "heartbeat": { - "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "pfd_management": { - "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "version_not_support": { - "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "session_establish": { - "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "session_modification": { - "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "session_deletion": { - "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "session_report": { - "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "association_setup": { - "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "association_update": { - "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "association_release": { - "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "node_report": { - "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, "session_set_deletion": { - "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "allow"}, {"value": "deny"}], }, }, - "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], } diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_report_chart.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_report_chart.py index 8fc46de5c..0f9b254ff 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_report_chart.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_report_chart.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -660,7 +660,8 @@ def report_chart(data, fos, check_mode=False): state = data["state"] report_chart_data = data["report_chart"] - filtered_data = underscore_to_hyphen(filter_report_chart_data(report_chart_data)) + filtered_data = filter_report_chart_data(report_chart_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -724,7 +725,7 @@ def report_chart(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("report", "chart", data=filtered_data, vdom=vdom) + return fos.set("report", "chart", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("report", "chart", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_report_dataset.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_report_dataset.py index 4954b253e..d8b08c468 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_report_dataset.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_report_dataset.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -303,9 +303,8 @@ def report_dataset(data, fos, check_mode=False): state = data["state"] report_dataset_data = data["report_dataset"] - filtered_data = underscore_to_hyphen( - filter_report_dataset_data(report_dataset_data) - ) + filtered_data = filter_report_dataset_data(report_dataset_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -369,7 +368,7 @@ def report_dataset(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("report", "dataset", data=filtered_data, vdom=vdom) + return fos.set("report", "dataset", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("report", "dataset", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_report_layout.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_report_layout.py index 660616566..312914cda 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_report_layout.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_report_layout.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -713,7 +713,8 @@ def report_layout(data, fos, check_mode=False): report_layout_data = data["report_layout"] report_layout_data = flatten_multilists_attributes(report_layout_data) - filtered_data = underscore_to_hyphen(filter_report_layout_data(report_layout_data)) + filtered_data = filter_report_layout_data(report_layout_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -777,7 +778,7 @@ def report_layout(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("report", "layout", data=filtered_data, vdom=vdom) + return fos.set("report", "layout", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("report", "layout", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_report_setting.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_report_setting.py index 9a4660d31..83f49d2c7 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_report_setting.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_report_setting.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -269,11 +269,10 @@ def report_setting(data, fos): vdom = data["vdom"] report_setting_data = data["report_setting"] report_setting_data = flatten_multilists_attributes(report_setting_data) - filtered_data = underscore_to_hyphen( - filter_report_setting_data(report_setting_data) - ) + filtered_data = filter_report_setting_data(report_setting_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("report", "setting", data=filtered_data, vdom=vdom) + return fos.set("report", "setting", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_report_style.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_report_style.py index bf97b0094..65a08e158 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_report_style.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_report_style.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -438,7 +438,8 @@ def report_style(data, fos, check_mode=False): report_style_data = data["report_style"] report_style_data = flatten_multilists_attributes(report_style_data) - filtered_data = underscore_to_hyphen(filter_report_style_data(report_style_data)) + filtered_data = filter_report_style_data(report_style_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -502,7 +503,7 @@ def report_style(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("report", "style", data=filtered_data, vdom=vdom) + return fos.set("report", "style", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("report", "style", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_report_theme.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_report_theme.py index b8a925de9..2766f3dbd 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_report_theme.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_report_theme.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -408,7 +408,8 @@ def report_theme(data, fos, check_mode=False): state = data["state"] report_theme_data = data["report_theme"] - filtered_data = underscore_to_hyphen(filter_report_theme_data(report_theme_data)) + filtered_data = filter_report_theme_data(report_theme_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -472,7 +473,7 @@ def report_theme(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("report", "theme", data=filtered_data, vdom=vdom) + return fos.set("report", "theme", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("report", "theme", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_access_list.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_access_list.py index 16f6e6aae..52dee3961 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_access_list.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_access_list.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -275,9 +275,8 @@ def router_access_list(data, fos, check_mode=False): state = data["state"] router_access_list_data = data["router_access_list"] - filtered_data = underscore_to_hyphen( - filter_router_access_list_data(router_access_list_data) - ) + filtered_data = filter_router_access_list_data(router_access_list_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -341,7 +340,7 @@ def router_access_list(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("router", "access-list", data=filtered_data, vdom=vdom) + return fos.set("router", "access-list", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_access_list6.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_access_list6.py index b359464e5..449c1e75e 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_access_list6.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_access_list6.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -270,9 +270,8 @@ def router_access_list6(data, fos, check_mode=False): state = data["state"] router_access_list6_data = data["router_access_list6"] - filtered_data = underscore_to_hyphen( - filter_router_access_list6_data(router_access_list6_data) - ) + filtered_data = filter_router_access_list6_data(router_access_list6_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -336,7 +335,7 @@ def router_access_list6(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("router", "access-list6", data=filtered_data, vdom=vdom) + return fos.set("router", "access-list6", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_aspath_list.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_aspath_list.py index 12b2036b1..09dba421c 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_aspath_list.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_aspath_list.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -252,9 +252,8 @@ def router_aspath_list(data, fos, check_mode=False): state = data["state"] router_aspath_list_data = data["router_aspath_list"] - filtered_data = underscore_to_hyphen( - filter_router_aspath_list_data(router_aspath_list_data) - ) + filtered_data = filter_router_aspath_list_data(router_aspath_list_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -318,7 +317,7 @@ def router_aspath_list(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("router", "aspath-list", data=filtered_data, vdom=vdom) + return fos.set("router", "aspath-list", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_auth_path.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_auth_path.py index 388b31072..6eb1b3a6d 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_auth_path.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_auth_path.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -235,9 +235,8 @@ def router_auth_path(data, fos, check_mode=False): state = data["state"] router_auth_path_data = data["router_auth_path"] - filtered_data = underscore_to_hyphen( - filter_router_auth_path_data(router_auth_path_data) - ) + filtered_data = filter_router_auth_path_data(router_auth_path_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -301,7 +300,7 @@ def router_auth_path(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("router", "auth-path", data=filtered_data, vdom=vdom) + return fos.set("router", "auth-path", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("router", "auth-path", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_bfd.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_bfd.py index 1fa0d6a93..3f0f2792f 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_bfd.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_bfd.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -268,9 +268,10 @@ def underscore_to_hyphen(data): def router_bfd(data, fos): vdom = data["vdom"] router_bfd_data = data["router_bfd"] - filtered_data = underscore_to_hyphen(filter_router_bfd_data(router_bfd_data)) + filtered_data = filter_router_bfd_data(router_bfd_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("router", "bfd", data=filtered_data, vdom=vdom) + return fos.set("router", "bfd", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_bfd6.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_bfd6.py index d14e6c2db..4d0035eb1 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_bfd6.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_bfd6.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -268,9 +268,10 @@ def underscore_to_hyphen(data): def router_bfd6(data, fos): vdom = data["vdom"] router_bfd6_data = data["router_bfd6"] - filtered_data = underscore_to_hyphen(filter_router_bfd6_data(router_bfd6_data)) + filtered_data = filter_router_bfd6_data(router_bfd6_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("router", "bfd6", data=filtered_data, vdom=vdom) + return fos.set("router", "bfd6", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_bgp.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_bgp.py index 2eccab8e0..a653b57aa 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_bgp.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_bgp.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -95,6 +95,10 @@ options: description: - Number of additional paths to be selected for each VPNv4 NLRI. type: int + additional_path_select_vpnv6: + description: + - Number of additional paths to be selected for each VPNv6 NLRI. + type: int additional_path_select6: description: - Number of additional paths to be selected for each IPv6 NLRI. @@ -106,6 +110,13 @@ options: choices: - 'enable' - 'disable' + additional_path_vpnv6: + description: + - Enable/disable selection of BGP VPNv6 additional paths. + type: str + choices: + - 'enable' + - 'disable' additional_path6: description: - Enable/disable selection of BGP IPv6 additional paths. @@ -437,6 +448,13 @@ options: choices: - 'enable' - 'disable' + activate_vpnv6: + description: + - Enable/disable address family VPNv6 for this neighbor. + type: str + choices: + - 'enable' + - 'disable' activate6: description: - Enable/disable address family IPv6 for this neighbor. @@ -462,6 +480,15 @@ options: - 'receive' - 'both' - 'disable' + additional_path_vpnv6: + description: + - Enable/disable VPNv6 additional-path capability. + type: str + choices: + - 'send' + - 'receive' + - 'both' + - 'disable' additional_path6: description: - Enable/disable IPv6 additional-path capability. @@ -479,6 +506,10 @@ options: description: - Number of VPNv4 additional paths that can be advertised to this neighbor. type: int + adv_additional_path_vpnv6: + description: + - Number of VPNv6 additional paths that can be advertised to this neighbor. + type: int adv_additional_path6: description: - Number of IPv6 additional paths that can be advertised to this neighbor. @@ -512,6 +543,13 @@ options: choices: - 'enable' - 'disable' + allowas_in_enable_vpnv6: + description: + - Enable/disable use of my AS in AS path for VPNv6 route. + type: str + choices: + - 'enable' + - 'disable' allowas_in_enable6: description: - Enable/disable IPv6 Enable to allow my AS in AS path. @@ -527,6 +565,10 @@ options: description: - The maximum number of occurrence of my AS number allowed for VPNv4 route. type: int + allowas_in_vpnv6: + description: + - The maximum number of occurrence of my AS number allowed for VPNv6 route. + type: int allowas_in6: description: - IPv6 The maximum number of occurrence of my AS number allowed. @@ -563,6 +605,15 @@ options: - 'as-path' - 'med' - 'next-hop' + attribute_unchanged_vpnv6: + description: + - List of attributes that should not be changed for VPNv6 route. + type: list + elements: str + choices: + - 'as-path' + - 'med' + - 'next-hop' attribute_unchanged6: description: - IPv6 List of attributes that should be unchanged. @@ -572,6 +623,10 @@ options: - 'as-path' - 'med' - 'next-hop' + auth_options: + description: + - Key-chain name for TCP authentication options. Source router.key-chain.name. + type: str bfd: description: - Enable/disable BFD for this neighbor. @@ -621,6 +676,13 @@ options: choices: - 'enable' - 'disable' + capability_graceful_restart_vpnv6: + description: + - Enable/disable advertisement of VPNv6 graceful restart capability to this neighbor. + type: str + choices: + - 'enable' + - 'disable' capability_graceful_restart6: description: - Enable/disable advertise IPv6 graceful restart capability to this neighbor. @@ -735,6 +797,10 @@ options: description: - Filter for VPNv4 updates from this neighbor. Source router.access-list.name. type: str + distribute_list_in_vpnv6: + description: + - Filter for VPNv6 updates from this neighbor. Source router.access-list6.name. + type: str distribute_list_in6: description: - Filter for IPv6 updates from this neighbor. Source router.access-list6.name. @@ -747,6 +813,10 @@ options: description: - Filter for VPNv4 updates to this neighbor. Source router.access-list.name. type: str + distribute_list_out_vpnv6: + description: + - Filter for VPNv6 updates to this neighbor. Source router.access-list6.name. + type: str distribute_list_out6: description: - Filter for IPv6 updates to this neighbor. Source router.access-list6.name. @@ -777,6 +847,10 @@ options: description: - BGP filter for VPNv4 inbound routes. Source router.aspath-list.name. type: str + filter_list_in_vpnv6: + description: + - BGP filter for VPNv6 inbound routes. Source router.aspath-list.name. + type: str filter_list_in6: description: - BGP filter for IPv6 inbound routes. Source router.aspath-list.name. @@ -789,6 +863,10 @@ options: description: - BGP filter for VPNv4 outbound routes. Source router.aspath-list.name. type: str + filter_list_out_vpnv6: + description: + - BGP filter for VPNv6 outbound routes. Source router.aspath-list.name. + type: str filter_list_out6: description: - BGP filter for IPv6 outbound routes. Source router.aspath-list.name. @@ -856,6 +934,10 @@ options: description: - Maximum VPNv4 prefix threshold value (1 - 100 percent). type: int + maximum_prefix_threshold_vpnv6: + description: + - Maximum VPNv6 prefix threshold value (1 - 100 percent). + type: int maximum_prefix_threshold6: description: - Maximum IPv6 prefix threshold value (1 - 100 percent). @@ -864,6 +946,10 @@ options: description: - Maximum number of VPNv4 prefixes to accept from this peer. type: int + maximum_prefix_vpnv6: + description: + - Maximum number of VPNv6 prefixes to accept from this peer. + type: int maximum_prefix_warning_only: description: - Enable/disable IPv4 Only give warning message when limit is exceeded. @@ -885,6 +971,13 @@ options: choices: - 'enable' - 'disable' + maximum_prefix_warning_only_vpnv6: + description: + - Enable/disable warning message when limit is exceeded for VPNv6 routes. + type: str + choices: + - 'enable' + - 'disable' maximum_prefix_warning_only6: description: - Enable/disable IPv6 Only give warning message when limit is exceeded. @@ -924,6 +1017,13 @@ options: choices: - 'enable' - 'disable' + next_hop_self_vpnv6: + description: + - Enable/disable use of outgoing interface"s IP address as VPNv6 next-hop for this neighbor. + type: str + choices: + - 'enable' + - 'disable' next_hop_self6: description: - Enable/disable IPv6 next-hop calculation for this neighbor. @@ -957,6 +1057,10 @@ options: description: - Inbound filter for VPNv4 updates from this neighbor. Source router.prefix-list.name. type: str + prefix_list_in_vpnv6: + description: + - Inbound filter for VPNv6 updates from this neighbor. Source router.prefix-list6.name. + type: str prefix_list_in6: description: - IPv6 Inbound filter for updates from this neighbor. Source router.prefix-list6.name. @@ -969,6 +1073,10 @@ options: description: - Outbound filter for VPNv4 updates to this neighbor. Source router.prefix-list.name. type: str + prefix_list_out_vpnv6: + description: + - Outbound filter for VPNv6 updates to this neighbor. Source router.prefix-list6.name. + type: str prefix_list_out6: description: - IPv6 Outbound filter for updates to this neighbor. Source router.prefix-list6.name. @@ -998,6 +1106,13 @@ options: choices: - 'enable' - 'disable' + remove_private_as_vpnv6: + description: + - Enable/disable to remove private AS number from VPNv6 outbound updates. + type: str + choices: + - 'enable' + - 'disable' remove_private_as6: description: - Enable/disable remove private AS number from IPv6 outbound updates. @@ -1025,6 +1140,10 @@ options: description: - VPNv4 inbound route map filter. Source router.route-map.name. type: str + route_map_in_vpnv6: + description: + - VPNv6 inbound route map filter. Source router.route-map.name. + type: str route_map_in6: description: - IPv6 Inbound route map filter. Source router.route-map.name. @@ -1049,6 +1168,14 @@ options: description: - VPNv4 outbound route map filter if the peer is preferred. Source router.route-map.name. type: str + route_map_out_vpnv6: + description: + - VPNv6 outbound route map filter. Source router.route-map.name. + type: str + route_map_out_vpnv6_preferable: + description: + - VPNv6 outbound route map filter if this neighbor is preferred. Source router.route-map.name. + type: str route_map_out6: description: - IPv6 Outbound route map filter. Source router.route-map.name. @@ -1078,6 +1205,13 @@ options: choices: - 'enable' - 'disable' + route_reflector_client_vpnv6: + description: + - Enable/disable VPNv6 AS route reflector client for this neighbor. + type: str + choices: + - 'enable' + - 'disable' route_reflector_client6: description: - Enable/disable IPv6 AS route reflector client. @@ -1106,6 +1240,13 @@ options: choices: - 'enable' - 'disable' + route_server_client_vpnv6: + description: + - Enable/disable VPNv6 AS route server client for this neighbor. + type: str + choices: + - 'enable' + - 'disable' route_server_client6: description: - Enable/disable IPv6 AS route server client. @@ -1140,6 +1281,15 @@ options: - 'extended' - 'both' - 'disable' + send_community_vpnv6: + description: + - Enable/disable sending community attribute to this neighbor for VPNv6 address family. + type: str + choices: + - 'standard' + - 'extended' + - 'both' + - 'disable' send_community6: description: - IPv6 Send community attribute to neighbor. @@ -1177,6 +1327,13 @@ options: choices: - 'enable' - 'disable' + soft_reconfiguration_vpnv6: + description: + - Enable/disable VPNv6 inbound soft reconfiguration. + type: str + choices: + - 'enable' + - 'disable' soft_reconfiguration6: description: - Enable/disable allow IPv6 inbound soft reconfiguration. @@ -1241,6 +1398,13 @@ options: choices: - 'enable' - 'disable' + activate_vpnv6: + description: + - Enable/disable address family VPNv6 for this neighbor. + type: str + choices: + - 'enable' + - 'disable' activate6: description: - Enable/disable address family IPv6 for this neighbor. @@ -1266,6 +1430,15 @@ options: - 'receive' - 'both' - 'disable' + additional_path_vpnv6: + description: + - Enable/disable VPNv6 additional-path capability. + type: str + choices: + - 'send' + - 'receive' + - 'both' + - 'disable' additional_path6: description: - Enable/disable IPv6 additional-path capability. @@ -1283,6 +1456,10 @@ options: description: - Number of VPNv4 additional paths that can be advertised to this neighbor. type: int + adv_additional_path_vpnv6: + description: + - Number of VPNv6 additional paths that can be advertised to this neighbor. + type: int adv_additional_path6: description: - Number of IPv6 additional paths that can be advertised to this neighbor. @@ -1316,6 +1493,13 @@ options: choices: - 'enable' - 'disable' + allowas_in_enable_vpnv6: + description: + - Enable/disable use of my AS in AS path for VPNv6 route. + type: str + choices: + - 'enable' + - 'disable' allowas_in_enable6: description: - Enable/disable IPv6 Enable to allow my AS in AS path. @@ -1331,6 +1515,10 @@ options: description: - The maximum number of occurrence of my AS number allowed for VPNv4 route. type: int + allowas_in_vpnv6: + description: + - The maximum number of occurrence of my AS number allowed for VPNv6 route. + type: int allowas_in6: description: - IPv6 The maximum number of occurrence of my AS number allowed. @@ -1367,6 +1555,15 @@ options: - 'as-path' - 'med' - 'next-hop' + attribute_unchanged_vpnv6: + description: + - List of attributes that should not be changed for VPNv6 route. + type: list + elements: str + choices: + - 'as-path' + - 'med' + - 'next-hop' attribute_unchanged6: description: - IPv6 List of attributes that should be unchanged. @@ -1376,6 +1573,10 @@ options: - 'as-path' - 'med' - 'next-hop' + auth_options: + description: + - Key-chain name for TCP authentication options. Source router.key-chain.name. + type: str bfd: description: - Enable/disable BFD for this neighbor. @@ -1425,6 +1626,13 @@ options: choices: - 'enable' - 'disable' + capability_graceful_restart_vpnv6: + description: + - Enable/disable advertisement of VPNv6 graceful restart capability to this neighbor. + type: str + choices: + - 'enable' + - 'disable' capability_graceful_restart6: description: - Enable/disable advertise IPv6 graceful restart capability to this neighbor. @@ -1481,6 +1689,10 @@ options: description: - Filter for VPNv4 updates from this neighbor. Source router.access-list.name. type: str + distribute_list_in_vpnv6: + description: + - Filter for VPNv6 updates from this neighbor. Source router.access-list6.name. + type: str distribute_list_in6: description: - Filter for IPv6 updates from this neighbor. Source router.access-list6.name. @@ -1493,6 +1705,10 @@ options: description: - Filter for VPNv4 updates to this neighbor. Source router.access-list.name. type: str + distribute_list_out_vpnv6: + description: + - Filter for VPNv6 updates to this neighbor. Source router.access-list6.name. + type: str distribute_list_out6: description: - Filter for IPv6 updates to this neighbor. Source router.access-list6.name. @@ -1523,6 +1739,10 @@ options: description: - BGP filter for VPNv4 inbound routes. Source router.aspath-list.name. type: str + filter_list_in_vpnv6: + description: + - BGP filter for VPNv6 inbound routes. Source router.aspath-list.name. + type: str filter_list_in6: description: - BGP filter for IPv6 inbound routes. Source router.aspath-list.name. @@ -1535,6 +1755,10 @@ options: description: - BGP filter for VPNv4 outbound routes. Source router.aspath-list.name. type: str + filter_list_out_vpnv6: + description: + - BGP filter for VPNv6 outbound routes. Source router.aspath-list.name. + type: str filter_list_out6: description: - BGP filter for IPv6 outbound routes. Source router.aspath-list.name. @@ -1597,6 +1821,10 @@ options: description: - Maximum VPNv4 prefix threshold value (1 - 100 percent). type: int + maximum_prefix_threshold_vpnv6: + description: + - Maximum VPNv6 prefix threshold value (1 - 100 percent). + type: int maximum_prefix_threshold6: description: - Maximum IPv6 prefix threshold value (1 - 100 percent). @@ -1605,6 +1833,10 @@ options: description: - Maximum number of VPNv4 prefixes to accept from this peer. type: int + maximum_prefix_vpnv6: + description: + - Maximum number of VPNv6 prefixes to accept from this peer. + type: int maximum_prefix_warning_only: description: - Enable/disable IPv4 Only give warning message when limit is exceeded. @@ -1626,6 +1858,13 @@ options: choices: - 'enable' - 'disable' + maximum_prefix_warning_only_vpnv6: + description: + - Enable/disable warning message when limit is exceeded for VPNv6 routes. + type: str + choices: + - 'enable' + - 'disable' maximum_prefix_warning_only6: description: - Enable/disable IPv6 Only give warning message when limit is exceeded. @@ -1670,6 +1909,13 @@ options: choices: - 'enable' - 'disable' + next_hop_self_vpnv6: + description: + - Enable/disable use of outgoing interface"s IP address as VPNv6 next-hop for this neighbor. + type: str + choices: + - 'enable' + - 'disable' next_hop_self6: description: - Enable/disable IPv6 next-hop calculation for this neighbor. @@ -1703,6 +1949,10 @@ options: description: - Inbound filter for VPNv4 updates from this neighbor. Source router.prefix-list.name. type: str + prefix_list_in_vpnv6: + description: + - Inbound filter for VPNv6 updates from this neighbor. Source router.prefix-list6.name. + type: str prefix_list_in6: description: - IPv6 Inbound filter for updates from this neighbor. Source router.prefix-list6.name. @@ -1715,6 +1965,10 @@ options: description: - Outbound filter for VPNv4 updates to this neighbor. Source router.prefix-list.name. type: str + prefix_list_out_vpnv6: + description: + - Outbound filter for VPNv6 updates to this neighbor. Source router.prefix-list6.name. + type: str prefix_list_out6: description: - IPv6 Outbound filter for updates to this neighbor. Source router.prefix-list6.name. @@ -1744,6 +1998,13 @@ options: choices: - 'enable' - 'disable' + remove_private_as_vpnv6: + description: + - Enable/disable to remove private AS number from VPNv6 outbound updates. + type: str + choices: + - 'enable' + - 'disable' remove_private_as6: description: - Enable/disable remove private AS number from IPv6 outbound updates. @@ -1771,6 +2032,10 @@ options: description: - VPNv4 inbound route map filter. Source router.route-map.name. type: str + route_map_in_vpnv6: + description: + - VPNv6 inbound route map filter. Source router.route-map.name. + type: str route_map_in6: description: - IPv6 Inbound route map filter. Source router.route-map.name. @@ -1795,6 +2060,14 @@ options: description: - VPNv4 outbound route map filter if the peer is preferred. Source router.route-map.name. type: str + route_map_out_vpnv6: + description: + - VPNv6 outbound route map filter. Source router.route-map.name. + type: str + route_map_out_vpnv6_preferable: + description: + - VPNv6 outbound route map filter if this neighbor is preferred. Source router.route-map.name. + type: str route_map_out6: description: - IPv6 Outbound route map filter. Source router.route-map.name. @@ -1824,6 +2097,13 @@ options: choices: - 'enable' - 'disable' + route_reflector_client_vpnv6: + description: + - Enable/disable VPNv6 AS route reflector client for this neighbor. + type: str + choices: + - 'enable' + - 'disable' route_reflector_client6: description: - Enable/disable IPv6 AS route reflector client. @@ -1852,6 +2132,13 @@ options: choices: - 'enable' - 'disable' + route_server_client_vpnv6: + description: + - Enable/disable VPNv6 AS route server client for this neighbor. + type: str + choices: + - 'enable' + - 'disable' route_server_client6: description: - Enable/disable IPv6 AS route server client. @@ -1886,6 +2173,15 @@ options: - 'extended' - 'both' - 'disable' + send_community_vpnv6: + description: + - Enable/disable sending community attribute to this neighbor for VPNv6 address family. + type: str + choices: + - 'standard' + - 'extended' + - 'both' + - 'disable' send_community6: description: - IPv6 Send community attribute to neighbor. @@ -1923,6 +2219,13 @@ options: choices: - 'enable' - 'disable' + soft_reconfiguration_vpnv6: + description: + - Enable/disable VPNv6 inbound soft reconfiguration. + type: str + choices: + - 'enable' + - 'disable' soft_reconfiguration6: description: - Enable/disable allow IPv6 inbound soft reconfiguration. @@ -2296,6 +2599,32 @@ options: type: list elements: dict suboptions: + export_rt: + description: + - List of export route target. + type: list + elements: dict + suboptions: + route_target: + description: + - 'Attribute: AA:NN|A.B.C.D:NN.' + required: true + type: str + import_route_map: + description: + - Import route map. Source router.route-map.name. + type: str + import_rt: + description: + - List of import route target. + type: list + elements: dict + suboptions: + route_target: + description: + - 'Attribute: AA:NN|A.B.C.D:NN' + required: true + type: str leak_target: description: - Target VRF table. @@ -2315,6 +2644,18 @@ options: - Target VRF ID (0 - 251). required: true type: str + rd: + description: + - 'Route Distinguisher: AA:NN|A.B.C.D:NN.' + type: str + role: + description: + - VRF role. + type: str + choices: + - 'standalone' + - 'ce' + - 'pe' vrf: description: - Origin VRF ID (0 - 251). @@ -2330,25 +2671,27 @@ EXAMPLES = """ additional_path: "enable" additional_path_select: "2" additional_path_select_vpnv4: "2" + additional_path_select_vpnv6: "2" additional_path_select6: "2" additional_path_vpnv4: "enable" + additional_path_vpnv6: "enable" additional_path6: "enable" admin_distance: - distance: "0" - id: "11" + id: "13" neighbour_prefix: "<your_own_value>" route_list: "<your_own_value> (source router.access-list.name)" aggregate_address: - as_set: "enable" - id: "16" + id: "18" prefix: "<your_own_value>" summary_only: "enable" aggregate_address6: - as_set: "enable" - id: "21" + id: "23" prefix6: "<your_own_value>" summary_only: "enable" always_compare_med: "enable" @@ -2396,27 +2739,34 @@ EXAMPLES = """ activate: "enable" activate_evpn: "enable" activate_vpnv4: "enable" + activate_vpnv6: "enable" activate6: "enable" additional_path: "send" additional_path_vpnv4: "send" + additional_path_vpnv6: "send" additional_path6: "send" adv_additional_path: "2" adv_additional_path_vpnv4: "2" + adv_additional_path_vpnv6: "2" adv_additional_path6: "2" advertisement_interval: "30" allowas_in: "3" allowas_in_enable: "enable" allowas_in_enable_evpn: "enable" allowas_in_enable_vpnv4: "enable" + allowas_in_enable_vpnv6: "enable" allowas_in_enable6: "enable" allowas_in_evpn: "3" allowas_in_vpnv4: "3" + allowas_in_vpnv6: "3" allowas_in6: "3" as_override: "enable" as_override6: "enable" attribute_unchanged: "as-path" attribute_unchanged_vpnv4: "as-path" + attribute_unchanged_vpnv6: "as-path" attribute_unchanged6: "as-path" + auth_options: "<your_own_value> (source router.key-chain.name)" bfd: "enable" capability_default_originate: "enable" capability_default_originate6: "enable" @@ -2424,6 +2774,7 @@ EXAMPLES = """ capability_graceful_restart: "enable" capability_graceful_restart_evpn: "enable" capability_graceful_restart_vpnv4: "enable" + capability_graceful_restart_vpnv6: "enable" capability_graceful_restart6: "enable" capability_orf: "none" capability_orf6: "none" @@ -2433,14 +2784,14 @@ EXAMPLES = """ advertise_routemap: "<your_own_value> (source router.route-map.name)" condition_routemap: - - name: "default_name_102 (source router.route-map.name)" + name: "default_name_112 (source router.route-map.name)" condition_type: "exist" conditional_advertise6: - advertise_routemap: "<your_own_value> (source router.route-map.name)" condition_routemap: - - name: "default_name_107 (source router.route-map.name)" + name: "default_name_117 (source router.route-map.name)" condition_type: "exist" connect_timer: "4294967295" default_originate_routemap: "<your_own_value> (source router.route-map.name)" @@ -2448,18 +2799,22 @@ EXAMPLES = """ description: "<your_own_value>" distribute_list_in: "<your_own_value> (source router.access-list.name)" distribute_list_in_vpnv4: "<your_own_value> (source router.access-list.name)" + distribute_list_in_vpnv6: "<your_own_value> (source router.access-list6.name)" distribute_list_in6: "<your_own_value> (source router.access-list6.name)" distribute_list_out: "<your_own_value> (source router.access-list.name)" distribute_list_out_vpnv4: "<your_own_value> (source router.access-list.name)" + distribute_list_out_vpnv6: "<your_own_value> (source router.access-list6.name)" distribute_list_out6: "<your_own_value> (source router.access-list6.name)" dont_capability_negotiate: "enable" ebgp_enforce_multihop: "enable" ebgp_multihop_ttl: "255" filter_list_in: "<your_own_value> (source router.aspath-list.name)" filter_list_in_vpnv4: "<your_own_value> (source router.aspath-list.name)" + filter_list_in_vpnv6: "<your_own_value> (source router.aspath-list.name)" filter_list_in6: "<your_own_value> (source router.aspath-list.name)" filter_list_out: "<your_own_value> (source router.aspath-list.name)" filter_list_out_vpnv4: "<your_own_value> (source router.aspath-list.name)" + filter_list_out_vpnv6: "<your_own_value> (source router.aspath-list.name)" filter_list_out6: "<your_own_value> (source router.aspath-list.name)" holdtime_timer: "4294967295" interface: "<your_own_value> (source system.interface.name)" @@ -2474,61 +2829,75 @@ EXAMPLES = """ maximum_prefix_threshold: "75" maximum_prefix_threshold_evpn: "75" maximum_prefix_threshold_vpnv4: "75" + maximum_prefix_threshold_vpnv6: "75" maximum_prefix_threshold6: "75" maximum_prefix_vpnv4: "0" + maximum_prefix_vpnv6: "0" maximum_prefix_warning_only: "enable" maximum_prefix_warning_only_evpn: "enable" maximum_prefix_warning_only_vpnv4: "enable" + maximum_prefix_warning_only_vpnv6: "enable" maximum_prefix_warning_only6: "enable" maximum_prefix6: "0" next_hop_self: "enable" next_hop_self_rr: "enable" next_hop_self_rr6: "enable" next_hop_self_vpnv4: "enable" + next_hop_self_vpnv6: "enable" next_hop_self6: "enable" override_capability: "enable" passive: "enable" password: "<your_own_value>" prefix_list_in: "<your_own_value> (source router.prefix-list.name)" prefix_list_in_vpnv4: "<your_own_value> (source router.prefix-list.name)" + prefix_list_in_vpnv6: "<your_own_value> (source router.prefix-list6.name)" prefix_list_in6: "<your_own_value> (source router.prefix-list6.name)" prefix_list_out: "<your_own_value> (source router.prefix-list.name)" prefix_list_out_vpnv4: "<your_own_value> (source router.prefix-list.name)" + prefix_list_out_vpnv6: "<your_own_value> (source router.prefix-list6.name)" prefix_list_out6: "<your_own_value> (source router.prefix-list6.name)" remote_as: "<your_own_value>" remove_private_as: "enable" remove_private_as_evpn: "enable" remove_private_as_vpnv4: "enable" + remove_private_as_vpnv6: "enable" remove_private_as6: "enable" restart_time: "0" retain_stale_time: "0" route_map_in: "<your_own_value> (source router.route-map.name)" route_map_in_evpn: "<your_own_value> (source router.route-map.name)" route_map_in_vpnv4: "<your_own_value> (source router.route-map.name)" + route_map_in_vpnv6: "<your_own_value> (source router.route-map.name)" route_map_in6: "<your_own_value> (source router.route-map.name)" route_map_out: "<your_own_value> (source router.route-map.name)" route_map_out_evpn: "<your_own_value> (source router.route-map.name)" route_map_out_preferable: "<your_own_value> (source router.route-map.name)" route_map_out_vpnv4: "<your_own_value> (source router.route-map.name)" route_map_out_vpnv4_preferable: "<your_own_value> (source router.route-map.name)" + route_map_out_vpnv6: "<your_own_value> (source router.route-map.name)" + route_map_out_vpnv6_preferable: "<your_own_value> (source router.route-map.name)" route_map_out6: "<your_own_value> (source router.route-map.name)" route_map_out6_preferable: "<your_own_value> (source router.route-map.name)" route_reflector_client: "enable" route_reflector_client_evpn: "enable" route_reflector_client_vpnv4: "enable" + route_reflector_client_vpnv6: "enable" route_reflector_client6: "enable" route_server_client: "enable" route_server_client_evpn: "enable" route_server_client_vpnv4: "enable" + route_server_client_vpnv6: "enable" route_server_client6: "enable" send_community: "standard" send_community_evpn: "standard" send_community_vpnv4: "standard" + send_community_vpnv6: "standard" send_community6: "standard" shutdown: "enable" soft_reconfiguration: "enable" soft_reconfiguration_evpn: "enable" soft_reconfiguration_vpnv4: "enable" + soft_reconfiguration_vpnv6: "enable" soft_reconfiguration6: "enable" stale_route: "enable" strict_capability_match: "enable" @@ -2541,27 +2910,34 @@ EXAMPLES = """ activate: "enable" activate_evpn: "enable" activate_vpnv4: "enable" + activate_vpnv6: "enable" activate6: "enable" additional_path: "send" additional_path_vpnv4: "send" + additional_path_vpnv6: "send" additional_path6: "send" adv_additional_path: "2" adv_additional_path_vpnv4: "2" + adv_additional_path_vpnv6: "2" adv_additional_path6: "2" advertisement_interval: "30" allowas_in: "3" allowas_in_enable: "enable" allowas_in_enable_evpn: "enable" allowas_in_enable_vpnv4: "enable" + allowas_in_enable_vpnv6: "enable" allowas_in_enable6: "enable" allowas_in_evpn: "3" allowas_in_vpnv4: "3" + allowas_in_vpnv6: "3" allowas_in6: "3" as_override: "enable" as_override6: "enable" attribute_unchanged: "as-path" attribute_unchanged_vpnv4: "as-path" + attribute_unchanged_vpnv6: "as-path" attribute_unchanged6: "as-path" + auth_options: "<your_own_value> (source router.key-chain.name)" bfd: "enable" capability_default_originate: "enable" capability_default_originate6: "enable" @@ -2569,6 +2945,7 @@ EXAMPLES = """ capability_graceful_restart: "enable" capability_graceful_restart_evpn: "enable" capability_graceful_restart_vpnv4: "enable" + capability_graceful_restart_vpnv6: "enable" capability_graceful_restart6: "enable" capability_orf: "none" capability_orf6: "none" @@ -2579,18 +2956,22 @@ EXAMPLES = """ description: "<your_own_value>" distribute_list_in: "<your_own_value> (source router.access-list.name)" distribute_list_in_vpnv4: "<your_own_value> (source router.access-list.name)" + distribute_list_in_vpnv6: "<your_own_value> (source router.access-list6.name)" distribute_list_in6: "<your_own_value> (source router.access-list6.name)" distribute_list_out: "<your_own_value> (source router.access-list.name)" distribute_list_out_vpnv4: "<your_own_value> (source router.access-list.name)" + distribute_list_out_vpnv6: "<your_own_value> (source router.access-list6.name)" distribute_list_out6: "<your_own_value> (source router.access-list6.name)" dont_capability_negotiate: "enable" ebgp_enforce_multihop: "enable" ebgp_multihop_ttl: "255" filter_list_in: "<your_own_value> (source router.aspath-list.name)" filter_list_in_vpnv4: "<your_own_value> (source router.aspath-list.name)" + filter_list_in_vpnv6: "<your_own_value> (source router.aspath-list.name)" filter_list_in6: "<your_own_value> (source router.aspath-list.name)" filter_list_out: "<your_own_value> (source router.aspath-list.name)" filter_list_out_vpnv4: "<your_own_value> (source router.aspath-list.name)" + filter_list_out_vpnv6: "<your_own_value> (source router.aspath-list.name)" filter_list_out6: "<your_own_value> (source router.aspath-list.name)" holdtime_timer: "4294967295" interface: "<your_own_value> (source system.interface.name)" @@ -2604,62 +2985,76 @@ EXAMPLES = """ maximum_prefix_threshold: "75" maximum_prefix_threshold_evpn: "75" maximum_prefix_threshold_vpnv4: "75" + maximum_prefix_threshold_vpnv6: "75" maximum_prefix_threshold6: "75" maximum_prefix_vpnv4: "0" + maximum_prefix_vpnv6: "0" maximum_prefix_warning_only: "enable" maximum_prefix_warning_only_evpn: "enable" maximum_prefix_warning_only_vpnv4: "enable" + maximum_prefix_warning_only_vpnv6: "enable" maximum_prefix_warning_only6: "enable" maximum_prefix6: "0" - name: "default_name_277" + name: "default_name_320" next_hop_self: "enable" next_hop_self_rr: "enable" next_hop_self_rr6: "enable" next_hop_self_vpnv4: "enable" + next_hop_self_vpnv6: "enable" next_hop_self6: "enable" override_capability: "enable" passive: "enable" password: "<your_own_value>" prefix_list_in: "<your_own_value> (source router.prefix-list.name)" prefix_list_in_vpnv4: "<your_own_value> (source router.prefix-list.name)" + prefix_list_in_vpnv6: "<your_own_value> (source router.prefix-list6.name)" prefix_list_in6: "<your_own_value> (source router.prefix-list6.name)" prefix_list_out: "<your_own_value> (source router.prefix-list.name)" prefix_list_out_vpnv4: "<your_own_value> (source router.prefix-list.name)" + prefix_list_out_vpnv6: "<your_own_value> (source router.prefix-list6.name)" prefix_list_out6: "<your_own_value> (source router.prefix-list6.name)" remote_as: "<your_own_value>" remove_private_as: "enable" remove_private_as_evpn: "enable" remove_private_as_vpnv4: "enable" + remove_private_as_vpnv6: "enable" remove_private_as6: "enable" restart_time: "0" retain_stale_time: "0" route_map_in: "<your_own_value> (source router.route-map.name)" route_map_in_evpn: "<your_own_value> (source router.route-map.name)" route_map_in_vpnv4: "<your_own_value> (source router.route-map.name)" + route_map_in_vpnv6: "<your_own_value> (source router.route-map.name)" route_map_in6: "<your_own_value> (source router.route-map.name)" route_map_out: "<your_own_value> (source router.route-map.name)" route_map_out_evpn: "<your_own_value> (source router.route-map.name)" route_map_out_preferable: "<your_own_value> (source router.route-map.name)" route_map_out_vpnv4: "<your_own_value> (source router.route-map.name)" route_map_out_vpnv4_preferable: "<your_own_value> (source router.route-map.name)" + route_map_out_vpnv6: "<your_own_value> (source router.route-map.name)" + route_map_out_vpnv6_preferable: "<your_own_value> (source router.route-map.name)" route_map_out6: "<your_own_value> (source router.route-map.name)" route_map_out6_preferable: "<your_own_value> (source router.route-map.name)" route_reflector_client: "enable" route_reflector_client_evpn: "enable" route_reflector_client_vpnv4: "enable" + route_reflector_client_vpnv6: "enable" route_reflector_client6: "enable" route_server_client: "enable" route_server_client_evpn: "enable" route_server_client_vpnv4: "enable" + route_server_client_vpnv6: "enable" route_server_client6: "enable" send_community: "standard" send_community_evpn: "standard" send_community_vpnv4: "standard" + send_community_vpnv6: "standard" send_community6: "standard" shutdown: "enable" soft_reconfiguration: "enable" soft_reconfiguration_evpn: "enable" soft_reconfiguration_vpnv4: "enable" + soft_reconfiguration_vpnv6: "enable" soft_reconfiguration6: "enable" stale_route: "enable" strict_capability_match: "enable" @@ -2669,20 +3064,20 @@ EXAMPLES = """ weight: "4294967295" neighbor_range: - - id: "334" + id: "388" max_neighbor_num: "0" neighbor_group: "<your_own_value> (source router.bgp.neighbor-group.name)" prefix: "<your_own_value>" neighbor_range6: - - id: "339" + id: "393" max_neighbor_num: "0" neighbor_group: "<your_own_value> (source router.bgp.neighbor-group.name)" prefix6: "<your_own_value>" network: - backdoor: "enable" - id: "345" + id: "399" network_import_check: "global" prefix: "<your_own_value>" route_map: "<your_own_value> (source router.route-map.name)" @@ -2690,7 +3085,7 @@ EXAMPLES = """ network6: - backdoor: "enable" - id: "352" + id: "406" network_import_check: "global" prefix6: "<your_own_value>" route_map: "<your_own_value> (source router.route-map.name)" @@ -2698,12 +3093,12 @@ EXAMPLES = """ recursive_next_hop: "enable" redistribute: - - name: "default_name_359" + name: "default_name_413" route_map: "<your_own_value> (source router.route-map.name)" status: "enable" redistribute6: - - name: "default_name_363" + name: "default_name_417" route_map: "<your_own_value> (source router.route-map.name)" status: "enable" router_id: "<your_own_value>" @@ -2745,11 +3140,20 @@ EXAMPLES = """ vrf: "<your_own_value>" vrf6: - + export_rt: + - + route_target: "<your_own_value>" + import_route_map: "<your_own_value> (source router.route-map.name)" + import_rt: + - + route_target: "<your_own_value>" leak_target: - interface: "<your_own_value> (source system.interface.name)" route_map: "<your_own_value> (source router.route-map.name)" vrf: "<your_own_value>" + rd: "<your_own_value>" + role: "standalone" vrf: "<your_own_value>" """ @@ -2837,8 +3241,10 @@ def filter_router_bgp_data(json): "additional_path", "additional_path_select", "additional_path_select_vpnv4", + "additional_path_select_vpnv6", "additional_path_select6", "additional_path_vpnv4", + "additional_path_vpnv6", "additional_path6", "admin_distance", "aggregate_address", @@ -2935,9 +3341,11 @@ def flatten_multilists_attributes(data): ["neighbor", "attribute_unchanged"], ["neighbor", "attribute_unchanged6"], ["neighbor", "attribute_unchanged_vpnv4"], + ["neighbor", "attribute_unchanged_vpnv6"], ["neighbor_group", "attribute_unchanged"], ["neighbor_group", "attribute_unchanged6"], ["neighbor_group", "attribute_unchanged_vpnv4"], + ["neighbor_group", "attribute_unchanged_vpnv6"], ] for attr in multilist_attrs: @@ -2963,9 +3371,10 @@ def router_bgp(data, fos): vdom = data["vdom"] router_bgp_data = data["router_bgp"] router_bgp_data = flatten_multilists_attributes(router_bgp_data) - filtered_data = underscore_to_hyphen(filter_router_bgp_data(router_bgp_data)) + filtered_data = filter_router_bgp_data(router_bgp_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("router", "bgp", data=filtered_data, vdom=vdom) + return fos.set("router", "bgp", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -3099,6 +3508,11 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "additional_path_vpnv6": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "multipath_recursive_distance": { "v_range": [["v6.4.0", "v6.4.0"], ["v6.4.4", ""]], "type": "string", @@ -3178,6 +3592,10 @@ versioned_schema = { "v_range": [["v7.2.0", ""]], "type": "integer", }, + "additional_path_select_vpnv6": { + "v_range": [["v7.4.2", ""]], + "type": "integer", + }, "cross_family_conditional_adv": { "v_range": [["v7.4.0", ""]], "type": "string", @@ -3253,6 +3671,11 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "allowas_in_enable_vpnv6": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "allowas_in_enable_evpn": { "v_range": [["v7.4.0", ""]], "type": "string", @@ -3261,6 +3684,7 @@ versioned_schema = { "allowas_in": {"v_range": [["v6.0.0", ""]], "type": "integer"}, "allowas_in6": {"v_range": [["v6.0.0", ""]], "type": "integer"}, "allowas_in_vpnv4": {"v_range": [["v7.2.0", ""]], "type": "integer"}, + "allowas_in_vpnv6": {"v_range": [["v7.4.2", ""]], "type": "integer"}, "allowas_in_evpn": {"v_range": [["v7.4.0", ""]], "type": "integer"}, "attribute_unchanged": { "v_range": [["v6.0.0", ""]], @@ -3295,6 +3719,17 @@ versioned_schema = { "multiple_values": True, "elements": "str", }, + "attribute_unchanged_vpnv6": { + "v_range": [["v7.4.2", ""]], + "type": "list", + "options": [ + {"value": "as-path"}, + {"value": "med"}, + {"value": "next-hop"}, + ], + "multiple_values": True, + "elements": "str", + }, "activate": { "v_range": [["v6.0.0", ""]], "type": "string", @@ -3310,6 +3745,11 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "activate_vpnv6": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "activate_evpn": { "v_range": [["v7.4.0", ""]], "type": "string", @@ -3360,6 +3800,11 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "capability_graceful_restart_vpnv6": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "capability_graceful_restart_evpn": { "v_range": [["v7.4.0", ""]], "type": "string", @@ -3425,6 +3870,11 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "next_hop_self_vpnv6": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "override_capability": { "v_range": [["v6.0.0", ""]], "type": "string", @@ -3450,6 +3900,11 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "remove_private_as_vpnv6": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "remove_private_as_evpn": { "v_range": [["v7.4.0", ""]], "type": "string", @@ -3470,6 +3925,11 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "route_reflector_client_vpnv6": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "route_reflector_client_evpn": { "v_range": [["v7.4.0", ""]], "type": "string", @@ -3490,6 +3950,11 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "route_server_client_vpnv6": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "route_server_client_evpn": { "v_range": [["v7.4.0", ""]], "type": "string", @@ -3515,6 +3980,11 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "soft_reconfiguration_vpnv6": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "soft_reconfiguration_evpn": { "v_range": [["v7.4.0", ""]], "type": "string", @@ -3550,22 +4020,35 @@ versioned_schema = { "v_range": [["v7.2.0", ""]], "type": "string", }, + "distribute_list_in_vpnv6": { + "v_range": [["v7.4.2", ""]], + "type": "string", + }, "distribute_list_out": {"v_range": [["v6.0.0", ""]], "type": "string"}, "distribute_list_out6": {"v_range": [["v6.0.0", ""]], "type": "string"}, "distribute_list_out_vpnv4": { "v_range": [["v7.2.0", ""]], "type": "string", }, + "distribute_list_out_vpnv6": { + "v_range": [["v7.4.2", ""]], + "type": "string", + }, "ebgp_multihop_ttl": {"v_range": [["v6.0.0", ""]], "type": "integer"}, "filter_list_in": {"v_range": [["v6.0.0", ""]], "type": "string"}, "filter_list_in6": {"v_range": [["v6.0.0", ""]], "type": "string"}, "filter_list_in_vpnv4": {"v_range": [["v7.4.1", ""]], "type": "string"}, + "filter_list_in_vpnv6": {"v_range": [["v7.4.2", ""]], "type": "string"}, "filter_list_out": {"v_range": [["v6.0.0", ""]], "type": "string"}, "filter_list_out6": {"v_range": [["v6.0.0", ""]], "type": "string"}, "filter_list_out_vpnv4": { "v_range": [["v7.4.1", ""]], "type": "string", }, + "filter_list_out_vpnv6": { + "v_range": [["v7.4.2", ""]], + "type": "string", + }, "interface": {"v_range": [["v6.0.0", ""]], "type": "string"}, "maximum_prefix": {"v_range": [["v6.0.0", ""]], "type": "integer"}, "maximum_prefix6": {"v_range": [["v6.0.0", ""]], "type": "integer"}, @@ -3573,6 +4056,10 @@ versioned_schema = { "v_range": [["v7.2.0", ""]], "type": "integer", }, + "maximum_prefix_vpnv6": { + "v_range": [["v7.4.2", ""]], + "type": "integer", + }, "maximum_prefix_evpn": {"v_range": [["v7.4.0", ""]], "type": "integer"}, "maximum_prefix_threshold": { "v_range": [["v6.0.0", ""]], @@ -3586,6 +4073,10 @@ versioned_schema = { "v_range": [["v7.2.0", ""]], "type": "integer", }, + "maximum_prefix_threshold_vpnv6": { + "v_range": [["v7.4.2", ""]], + "type": "integer", + }, "maximum_prefix_threshold_evpn": { "v_range": [["v7.4.0", ""]], "type": "integer", @@ -3605,6 +4096,11 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "maximum_prefix_warning_only_vpnv6": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "maximum_prefix_warning_only_evpn": { "v_range": [["v7.4.0", ""]], "type": "string", @@ -3613,12 +4109,17 @@ versioned_schema = { "prefix_list_in": {"v_range": [["v6.0.0", ""]], "type": "string"}, "prefix_list_in6": {"v_range": [["v6.0.0", ""]], "type": "string"}, "prefix_list_in_vpnv4": {"v_range": [["v7.2.0", ""]], "type": "string"}, + "prefix_list_in_vpnv6": {"v_range": [["v7.4.2", ""]], "type": "string"}, "prefix_list_out": {"v_range": [["v6.0.0", ""]], "type": "string"}, "prefix_list_out6": {"v_range": [["v6.0.0", ""]], "type": "string"}, "prefix_list_out_vpnv4": { "v_range": [["v7.2.0", ""]], "type": "string", }, + "prefix_list_out_vpnv6": { + "v_range": [["v7.4.2", ""]], + "type": "string", + }, "remote_as": {"v_range": [["v6.0.0", ""]], "type": "string"}, "local_as": {"v_range": [["v6.0.0", ""]], "type": "string"}, "local_as_no_prepend": { @@ -3635,6 +4136,7 @@ versioned_schema = { "route_map_in": {"v_range": [["v6.0.0", ""]], "type": "string"}, "route_map_in6": {"v_range": [["v6.0.0", ""]], "type": "string"}, "route_map_in_vpnv4": {"v_range": [["v7.2.0", ""]], "type": "string"}, + "route_map_in_vpnv6": {"v_range": [["v7.4.2", ""]], "type": "string"}, "route_map_in_evpn": {"v_range": [["v7.4.0", ""]], "type": "string"}, "route_map_out": {"v_range": [["v6.0.0", ""]], "type": "string"}, "route_map_out_preferable": { @@ -3647,10 +4149,15 @@ versioned_schema = { "type": "string", }, "route_map_out_vpnv4": {"v_range": [["v7.2.0", ""]], "type": "string"}, + "route_map_out_vpnv6": {"v_range": [["v7.4.2", ""]], "type": "string"}, "route_map_out_vpnv4_preferable": { "v_range": [["v7.2.0", ""]], "type": "string", }, + "route_map_out_vpnv6_preferable": { + "v_range": [["v7.4.2", ""]], + "type": "string", + }, "route_map_out_evpn": {"v_range": [["v7.4.0", ""]], "type": "string"}, "send_community": { "v_range": [["v6.0.0", ""]], @@ -3682,6 +4189,16 @@ versioned_schema = { {"value": "disable"}, ], }, + "send_community_vpnv6": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [ + {"value": "standard"}, + {"value": "extended"}, + {"value": "both"}, + {"value": "disable"}, + ], + }, "send_community_evpn": { "v_range": [["v7.4.0", ""]], "type": "string", @@ -3730,6 +4247,16 @@ versioned_schema = { {"value": "disable"}, ], }, + "additional_path_vpnv6": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [ + {"value": "send"}, + {"value": "receive"}, + {"value": "both"}, + {"value": "disable"}, + ], + }, "adv_additional_path": {"v_range": [["v6.2.0", ""]], "type": "integer"}, "adv_additional_path6": { "v_range": [["v6.2.0", ""]], @@ -3739,7 +4266,12 @@ versioned_schema = { "v_range": [["v7.2.0", ""]], "type": "integer", }, + "adv_additional_path_vpnv6": { + "v_range": [["v7.4.2", ""]], + "type": "integer", + }, "password": {"v_range": [["v6.0.0", ""]], "type": "string"}, + "auth_options": {"v_range": [["v7.4.2", ""]], "type": "string"}, "conditional_advertise": { "type": "list", "elements": "dict", @@ -3829,6 +4361,11 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "allowas_in_enable_vpnv6": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "allowas_in_enable_evpn": { "v_range": [["v7.4.0", ""]], "type": "string", @@ -3837,6 +4374,7 @@ versioned_schema = { "allowas_in": {"v_range": [["v6.0.0", ""]], "type": "integer"}, "allowas_in6": {"v_range": [["v6.0.0", ""]], "type": "integer"}, "allowas_in_vpnv4": {"v_range": [["v7.2.0", ""]], "type": "integer"}, + "allowas_in_vpnv6": {"v_range": [["v7.4.2", ""]], "type": "integer"}, "allowas_in_evpn": {"v_range": [["v7.4.0", ""]], "type": "integer"}, "attribute_unchanged": { "v_range": [["v6.0.0", ""]], @@ -3871,6 +4409,17 @@ versioned_schema = { "multiple_values": True, "elements": "str", }, + "attribute_unchanged_vpnv6": { + "v_range": [["v7.4.2", ""]], + "type": "list", + "options": [ + {"value": "as-path"}, + {"value": "med"}, + {"value": "next-hop"}, + ], + "multiple_values": True, + "elements": "str", + }, "activate": { "v_range": [["v6.0.0", ""]], "type": "string", @@ -3886,6 +4435,11 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "activate_vpnv6": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "activate_evpn": { "v_range": [["v7.4.0", ""]], "type": "string", @@ -3936,6 +4490,11 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "capability_graceful_restart_vpnv6": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "capability_graceful_restart_evpn": { "v_range": [["v7.4.0", ""]], "type": "string", @@ -4001,6 +4560,11 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "next_hop_self_vpnv6": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "override_capability": { "v_range": [["v6.0.0", ""]], "type": "string", @@ -4026,6 +4590,11 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "remove_private_as_vpnv6": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "remove_private_as_evpn": { "v_range": [["v7.4.0", ""]], "type": "string", @@ -4046,6 +4615,11 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "route_reflector_client_vpnv6": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "route_reflector_client_evpn": { "v_range": [["v7.4.0", ""]], "type": "string", @@ -4066,6 +4640,11 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "route_server_client_vpnv6": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "route_server_client_evpn": { "v_range": [["v7.4.0", ""]], "type": "string", @@ -4091,6 +4670,11 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "soft_reconfiguration_vpnv6": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "soft_reconfiguration_evpn": { "v_range": [["v7.4.0", ""]], "type": "string", @@ -4126,22 +4710,35 @@ versioned_schema = { "v_range": [["v7.2.0", ""]], "type": "string", }, + "distribute_list_in_vpnv6": { + "v_range": [["v7.4.2", ""]], + "type": "string", + }, "distribute_list_out": {"v_range": [["v6.0.0", ""]], "type": "string"}, "distribute_list_out6": {"v_range": [["v6.0.0", ""]], "type": "string"}, "distribute_list_out_vpnv4": { "v_range": [["v7.2.0", ""]], "type": "string", }, + "distribute_list_out_vpnv6": { + "v_range": [["v7.4.2", ""]], + "type": "string", + }, "ebgp_multihop_ttl": {"v_range": [["v6.0.0", ""]], "type": "integer"}, "filter_list_in": {"v_range": [["v6.0.0", ""]], "type": "string"}, "filter_list_in6": {"v_range": [["v6.0.0", ""]], "type": "string"}, "filter_list_in_vpnv4": {"v_range": [["v7.4.1", ""]], "type": "string"}, + "filter_list_in_vpnv6": {"v_range": [["v7.4.2", ""]], "type": "string"}, "filter_list_out": {"v_range": [["v6.0.0", ""]], "type": "string"}, "filter_list_out6": {"v_range": [["v6.0.0", ""]], "type": "string"}, "filter_list_out_vpnv4": { "v_range": [["v7.4.1", ""]], "type": "string", }, + "filter_list_out_vpnv6": { + "v_range": [["v7.4.2", ""]], + "type": "string", + }, "interface": {"v_range": [["v6.0.0", ""]], "type": "string"}, "maximum_prefix": {"v_range": [["v6.0.0", ""]], "type": "integer"}, "maximum_prefix6": {"v_range": [["v6.0.0", ""]], "type": "integer"}, @@ -4149,6 +4746,10 @@ versioned_schema = { "v_range": [["v7.2.0", ""]], "type": "integer", }, + "maximum_prefix_vpnv6": { + "v_range": [["v7.4.2", ""]], + "type": "integer", + }, "maximum_prefix_evpn": {"v_range": [["v7.4.0", ""]], "type": "integer"}, "maximum_prefix_threshold": { "v_range": [["v6.0.0", ""]], @@ -4162,6 +4763,10 @@ versioned_schema = { "v_range": [["v7.2.0", ""]], "type": "integer", }, + "maximum_prefix_threshold_vpnv6": { + "v_range": [["v7.4.2", ""]], + "type": "integer", + }, "maximum_prefix_threshold_evpn": { "v_range": [["v7.4.0", ""]], "type": "integer", @@ -4181,6 +4786,11 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "maximum_prefix_warning_only_vpnv6": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "maximum_prefix_warning_only_evpn": { "v_range": [["v7.4.0", ""]], "type": "string", @@ -4189,12 +4799,17 @@ versioned_schema = { "prefix_list_in": {"v_range": [["v6.0.0", ""]], "type": "string"}, "prefix_list_in6": {"v_range": [["v6.0.0", ""]], "type": "string"}, "prefix_list_in_vpnv4": {"v_range": [["v7.2.0", ""]], "type": "string"}, + "prefix_list_in_vpnv6": {"v_range": [["v7.4.2", ""]], "type": "string"}, "prefix_list_out": {"v_range": [["v6.0.0", ""]], "type": "string"}, "prefix_list_out6": {"v_range": [["v6.0.0", ""]], "type": "string"}, "prefix_list_out_vpnv4": { "v_range": [["v7.2.0", ""]], "type": "string", }, + "prefix_list_out_vpnv6": { + "v_range": [["v7.4.2", ""]], + "type": "string", + }, "remote_as": {"v_range": [["v6.0.0", ""]], "type": "string"}, "local_as": {"v_range": [["v6.0.0", ""]], "type": "string"}, "local_as_no_prepend": { @@ -4211,6 +4826,7 @@ versioned_schema = { "route_map_in": {"v_range": [["v6.0.0", ""]], "type": "string"}, "route_map_in6": {"v_range": [["v6.0.0", ""]], "type": "string"}, "route_map_in_vpnv4": {"v_range": [["v7.2.0", ""]], "type": "string"}, + "route_map_in_vpnv6": {"v_range": [["v7.4.2", ""]], "type": "string"}, "route_map_in_evpn": {"v_range": [["v7.4.0", ""]], "type": "string"}, "route_map_out": {"v_range": [["v6.0.0", ""]], "type": "string"}, "route_map_out_preferable": { @@ -4223,10 +4839,15 @@ versioned_schema = { "type": "string", }, "route_map_out_vpnv4": {"v_range": [["v7.2.0", ""]], "type": "string"}, + "route_map_out_vpnv6": {"v_range": [["v7.4.2", ""]], "type": "string"}, "route_map_out_vpnv4_preferable": { "v_range": [["v7.2.0", ""]], "type": "string", }, + "route_map_out_vpnv6_preferable": { + "v_range": [["v7.4.2", ""]], + "type": "string", + }, "route_map_out_evpn": {"v_range": [["v7.4.0", ""]], "type": "string"}, "send_community": { "v_range": [["v6.0.0", ""]], @@ -4258,6 +4879,16 @@ versioned_schema = { {"value": "disable"}, ], }, + "send_community_vpnv6": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [ + {"value": "standard"}, + {"value": "extended"}, + {"value": "both"}, + {"value": "disable"}, + ], + }, "send_community_evpn": { "v_range": [["v7.4.0", ""]], "type": "string", @@ -4306,6 +4937,16 @@ versioned_schema = { {"value": "disable"}, ], }, + "additional_path_vpnv6": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [ + {"value": "send"}, + {"value": "receive"}, + {"value": "both"}, + {"value": "disable"}, + ], + }, "adv_additional_path": {"v_range": [["v6.2.0", ""]], "type": "integer"}, "adv_additional_path6": { "v_range": [["v6.2.0", ""]], @@ -4315,7 +4956,12 @@ versioned_schema = { "v_range": [["v7.2.0", ""]], "type": "integer", }, + "adv_additional_path_vpnv6": { + "v_range": [["v7.4.2", ""]], + "type": "integer", + }, "password": {"v_range": [["v7.2.4", ""]], "type": "string"}, + "auth_options": {"v_range": [["v7.4.2", ""]], "type": "string"}, }, "v_range": [["v6.0.0", ""]], }, @@ -4490,6 +5136,41 @@ versioned_schema = { "type": "string", "required": True, }, + "role": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [ + {"value": "standalone"}, + {"value": "ce"}, + {"value": "pe"}, + ], + }, + "rd": {"v_range": [["v7.4.2", ""]], "type": "string"}, + "export_rt": { + "type": "list", + "elements": "dict", + "children": { + "route_target": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "required": True, + } + }, + "v_range": [["v7.4.2", ""]], + }, + "import_rt": { + "type": "list", + "elements": "dict", + "children": { + "route_target": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "required": True, + } + }, + "v_range": [["v7.4.2", ""]], + }, + "import_route_map": {"v_range": [["v7.4.2", ""]], "type": "string"}, "leak_target": { "type": "list", "elements": "dict", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_community_list.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_community_list.py index b3845c220..c3d6de5af 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_community_list.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_community_list.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -265,9 +265,8 @@ def router_community_list(data, fos, check_mode=False): state = data["state"] router_community_list_data = data["router_community_list"] - filtered_data = underscore_to_hyphen( - filter_router_community_list_data(router_community_list_data) - ) + filtered_data = filter_router_community_list_data(router_community_list_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -331,7 +330,7 @@ def router_community_list(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("router", "community-list", data=filtered_data, vdom=vdom) + return fos.set("router", "community-list", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_extcommunity_list.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_extcommunity_list.py index 025bd7f12..7180a58c6 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_extcommunity_list.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_extcommunity_list.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -264,12 +264,11 @@ def router_extcommunity_list(data, fos): state = data["state"] router_extcommunity_list_data = data["router_extcommunity_list"] - filtered_data = underscore_to_hyphen( - filter_router_extcommunity_list_data(router_extcommunity_list_data) - ) + filtered_data = filter_router_extcommunity_list_data(router_extcommunity_list_data) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: - return fos.set("router", "extcommunity-list", data=filtered_data, vdom=vdom) + return fos.set("router", "extcommunity-list", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_isis.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_isis.py index 7d1743993..5d92a78d1 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_isis.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_isis.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -881,9 +881,10 @@ def router_isis(data, fos): vdom = data["vdom"] router_isis_data = data["router_isis"] router_isis_data = flatten_multilists_attributes(router_isis_data) - filtered_data = underscore_to_hyphen(filter_router_isis_data(router_isis_data)) + filtered_data = filter_router_isis_data(router_isis_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("router", "isis", data=filtered_data, vdom=vdom) + return fos.set("router", "isis", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_key_chain.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_key_chain.py index 0622d5bd5..a15ab8834 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_key_chain.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_key_chain.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -108,6 +108,7 @@ options: - 'hmac-sha256' - 'hmac-sha384' - 'hmac-sha512' + - 'cmac-aes128' id: description: - Key ID (0 - 2147483647). @@ -265,9 +266,8 @@ def router_key_chain(data, fos, check_mode=False): state = data["state"] router_key_chain_data = data["router_key_chain"] - filtered_data = underscore_to_hyphen( - filter_router_key_chain_data(router_key_chain_data) - ) + filtered_data = filter_router_key_chain_data(router_key_chain_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -331,7 +331,7 @@ def router_key_chain(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("router", "key-chain", data=filtered_data, vdom=vdom) + return fos.set("router", "key-chain", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("router", "key-chain", mkey=filtered_data["name"], vdom=vdom) @@ -390,6 +390,7 @@ versioned_schema = { {"value": "hmac-sha256"}, {"value": "hmac-sha384"}, {"value": "hmac-sha512"}, + {"value": "cmac-aes128", "v_range": [["v7.4.2", ""]]}, ], }, }, diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_multicast.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_multicast.py index acb75a009..b9c61dc3a 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_multicast.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_multicast.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -430,7 +430,7 @@ EXAMPLES = """ bfd: "enable" cisco_exclude_genid: "enable" dr_priority: "1" - hello_holdtime: "" + hello_holdtime: "105" hello_interval: "30" igmp: access_group: "<your_own_value> (source router.access-list.name)" @@ -611,11 +611,10 @@ def underscore_to_hyphen(data): def router_multicast(data, fos): vdom = data["vdom"] router_multicast_data = data["router_multicast"] - filtered_data = underscore_to_hyphen( - filter_router_multicast_data(router_multicast_data) - ) + filtered_data = filter_router_multicast_data(router_multicast_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("router", "multicast", data=filtered_data, vdom=vdom) + return fos.set("router", "multicast", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_multicast6.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_multicast6.py index f6f490dde..c408a01f5 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_multicast6.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_multicast6.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -267,11 +267,10 @@ def underscore_to_hyphen(data): def router_multicast6(data, fos): vdom = data["vdom"] router_multicast6_data = data["router_multicast6"] - filtered_data = underscore_to_hyphen( - filter_router_multicast6_data(router_multicast6_data) - ) + filtered_data = filter_router_multicast6_data(router_multicast6_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("router", "multicast6", data=filtered_data, vdom=vdom) + return fos.set("router", "multicast6", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_multicast_flow.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_multicast_flow.py index df238ec09..0e2f8cf72 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_multicast_flow.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_multicast_flow.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -254,9 +254,8 @@ def router_multicast_flow(data, fos, check_mode=False): state = data["state"] router_multicast_flow_data = data["router_multicast_flow"] - filtered_data = underscore_to_hyphen( - filter_router_multicast_flow_data(router_multicast_flow_data) - ) + filtered_data = filter_router_multicast_flow_data(router_multicast_flow_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -320,7 +319,7 @@ def router_multicast_flow(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("router", "multicast-flow", data=filtered_data, vdom=vdom) + return fos.set("router", "multicast-flow", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_ospf.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_ospf.py index 3d896d83b..107453eea 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_ospf.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_ospf.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -989,9 +989,10 @@ def underscore_to_hyphen(data): def router_ospf(data, fos): vdom = data["vdom"] router_ospf_data = data["router_ospf"] - filtered_data = underscore_to_hyphen(filter_router_ospf_data(router_ospf_data)) + filtered_data = filter_router_ospf_data(router_ospf_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("router", "ospf", data=filtered_data, vdom=vdom) + return fos.set("router", "ospf", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_ospf6.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_ospf6.py index e61090a42..825fdb518 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_ospf6.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_ospf6.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -845,9 +845,10 @@ def underscore_to_hyphen(data): def router_ospf6(data, fos): vdom = data["vdom"] router_ospf6_data = data["router_ospf6"] - filtered_data = underscore_to_hyphen(filter_router_ospf6_data(router_ospf6_data)) + filtered_data = filter_router_ospf6_data(router_ospf6_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("router", "ospf6", data=filtered_data, vdom=vdom) + return fos.set("router", "ospf6", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_policy.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_policy.py index 0531df11b..162d681d3 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_policy.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_policy.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -439,7 +439,8 @@ def router_policy(data, fos, check_mode=False): state = data["state"] router_policy_data = data["router_policy"] - filtered_data = underscore_to_hyphen(filter_router_policy_data(router_policy_data)) + filtered_data = filter_router_policy_data(router_policy_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -503,7 +504,7 @@ def router_policy(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("router", "policy", data=filtered_data, vdom=vdom) + return fos.set("router", "policy", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("router", "policy", mkey=filtered_data["seq-num"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_policy6.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_policy6.py index 5fe015159..80ca57612 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_policy6.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_policy6.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -439,9 +439,8 @@ def router_policy6(data, fos, check_mode=False): state = data["state"] router_policy6_data = data["router_policy6"] - filtered_data = underscore_to_hyphen( - filter_router_policy6_data(router_policy6_data) - ) + filtered_data = filter_router_policy6_data(router_policy6_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -505,7 +504,7 @@ def router_policy6(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("router", "policy6", data=filtered_data, vdom=vdom) + return fos.set("router", "policy6", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("router", "policy6", mkey=filtered_data["seq-num"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_prefix_list.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_prefix_list.py index 58a0d9e2a..d32afdad8 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_prefix_list.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_prefix_list.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -272,9 +272,8 @@ def router_prefix_list(data, fos, check_mode=False): state = data["state"] router_prefix_list_data = data["router_prefix_list"] - filtered_data = underscore_to_hyphen( - filter_router_prefix_list_data(router_prefix_list_data) - ) + filtered_data = filter_router_prefix_list_data(router_prefix_list_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -338,7 +337,7 @@ def router_prefix_list(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("router", "prefix-list", data=filtered_data, vdom=vdom) + return fos.set("router", "prefix-list", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_prefix_list6.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_prefix_list6.py index 5943ff3ba..214fab158 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_prefix_list6.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_prefix_list6.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -272,9 +272,8 @@ def router_prefix_list6(data, fos, check_mode=False): state = data["state"] router_prefix_list6_data = data["router_prefix_list6"] - filtered_data = underscore_to_hyphen( - filter_router_prefix_list6_data(router_prefix_list6_data) - ) + filtered_data = filter_router_prefix_list6_data(router_prefix_list6_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -338,7 +337,7 @@ def router_prefix_list6(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("router", "prefix-list6", data=filtered_data, vdom=vdom) + return fos.set("router", "prefix-list6", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_rip.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_rip.py index 416cbc629..040caf889 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_rip.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_rip.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -569,9 +569,10 @@ def router_rip(data, fos): vdom = data["vdom"] router_rip_data = data["router_rip"] router_rip_data = flatten_multilists_attributes(router_rip_data) - filtered_data = underscore_to_hyphen(filter_router_rip_data(router_rip_data)) + filtered_data = filter_router_rip_data(router_rip_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("router", "rip", data=filtered_data, vdom=vdom) + return fos.set("router", "rip", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_ripng.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_ripng.py index 4fcc98607..9b90d4778 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_ripng.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_ripng.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -503,9 +503,10 @@ def underscore_to_hyphen(data): def router_ripng(data, fos): vdom = data["vdom"] router_ripng_data = data["router_ripng"] - filtered_data = underscore_to_hyphen(filter_router_ripng_data(router_ripng_data)) + filtered_data = filter_router_ripng_data(router_ripng_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("router", "ripng", data=filtered_data, vdom=vdom) + return fos.set("router", "ripng", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_route_map.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_route_map.py index 71e4f7e28..f2782ab4e 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_route_map.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_route_map.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -360,6 +360,14 @@ options: description: - IP address of VPNv4 next-hop. type: str + set_vpnv6_nexthop: + description: + - IPv6 global address of VPNv6 next-hop. + type: str + set_vpnv6_nexthop_local: + description: + - IPv6 link-local address of VPNv6 next-hop. + type: str set_weight: description: - BGP weight for routing table. @@ -432,6 +440,8 @@ EXAMPLES = """ set_route_tag: "" set_tag: "" set_vpnv4_nexthop: "<your_own_value>" + set_vpnv6_nexthop: "<your_own_value>" + set_vpnv6_nexthop_local: "<your_own_value>" set_weight: "" """ @@ -555,9 +565,8 @@ def router_route_map(data, fos, check_mode=False): state = data["state"] router_route_map_data = data["router_route_map"] - filtered_data = underscore_to_hyphen( - filter_router_route_map_data(router_route_map_data) - ) + filtered_data = filter_router_route_map_data(router_route_map_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -621,7 +630,7 @@ def router_route_map(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("router", "route-map", data=filtered_data, vdom=vdom) + return fos.set("router", "route-map", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("router", "route-map", mkey=filtered_data["name"], vdom=vdom) @@ -811,6 +820,11 @@ versioned_schema = { "v_range": [["v6.0.0", ""]], "type": "string", }, + "set_vpnv6_nexthop": {"v_range": [["v7.4.2", ""]], "type": "string"}, + "set_vpnv6_nexthop_local": { + "v_range": [["v7.4.2", ""]], + "type": "string", + }, "set_local_preference": { "v_range": [["v6.0.0", ""]], "type": "integer", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_setting.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_setting.py index 72153d238..52d56bd52 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_setting.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_setting.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -354,11 +354,10 @@ def underscore_to_hyphen(data): def router_setting(data, fos): vdom = data["vdom"] router_setting_data = data["router_setting"] - filtered_data = underscore_to_hyphen( - filter_router_setting_data(router_setting_data) - ) + filtered_data = filter_router_setting_data(router_setting_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("router", "setting", data=filtered_data, vdom=vdom) + return fos.set("router", "setting", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_static.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_static.py index 1f8f121ef..7b02d3473 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_static.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_static.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -391,7 +391,8 @@ def router_static(data, fos, check_mode=False): state = data["state"] router_static_data = data["router_static"] - filtered_data = underscore_to_hyphen(filter_router_static_data(router_static_data)) + filtered_data = filter_router_static_data(router_static_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -455,7 +456,7 @@ def router_static(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("router", "static", data=filtered_data, vdom=vdom) + return fos.set("router", "static", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("router", "static", mkey=filtered_data["seq-num"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_static6.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_static6.py index 12f9514e6..11e54085f 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_static6.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_router_static6.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -367,9 +367,8 @@ def router_static6(data, fos, check_mode=False): state = data["state"] router_static6_data = data["router_static6"] - filtered_data = underscore_to_hyphen( - filter_router_static6_data(router_static6_data) - ) + filtered_data = filter_router_static6_data(router_static6_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -433,7 +432,7 @@ def router_static6(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("router", "static6", data=filtered_data, vdom=vdom) + return fos.set("router", "static6", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("router", "static6", mkey=filtered_data["seq-num"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_sctp_filter_profile.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_sctp_filter_profile.py index 842bfaafc..40d10e821 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_sctp_filter_profile.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_sctp_filter_profile.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -254,12 +254,11 @@ def sctp_filter_profile(data, fos): state = data["state"] sctp_filter_profile_data = data["sctp_filter_profile"] - filtered_data = underscore_to_hyphen( - filter_sctp_filter_profile_data(sctp_filter_profile_data) - ) + filtered_data = filter_sctp_filter_profile_data(sctp_filter_profile_data) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: - return fos.set("sctp-filter", "profile", data=filtered_data, vdom=vdom) + return fos.set("sctp-filter", "profile", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_spamfilter_bwl.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_spamfilter_bwl.py index 1bb9aa9d1..76d96c6b1 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_spamfilter_bwl.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_spamfilter_bwl.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -307,9 +307,8 @@ def spamfilter_bwl(data, fos, check_mode=False): state = data["state"] spamfilter_bwl_data = data["spamfilter_bwl"] - filtered_data = underscore_to_hyphen( - filter_spamfilter_bwl_data(spamfilter_bwl_data) - ) + filtered_data = filter_spamfilter_bwl_data(spamfilter_bwl_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -373,7 +372,7 @@ def spamfilter_bwl(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("spamfilter", "bwl", data=filtered_data, vdom=vdom) + return fos.set("spamfilter", "bwl", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("spamfilter", "bwl", mkey=filtered_data["id"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_spamfilter_bword.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_spamfilter_bword.py index 470f9c4d0..9aa1f5776 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_spamfilter_bword.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_spamfilter_bword.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -308,9 +308,8 @@ def spamfilter_bword(data, fos, check_mode=False): state = data["state"] spamfilter_bword_data = data["spamfilter_bword"] - filtered_data = underscore_to_hyphen( - filter_spamfilter_bword_data(spamfilter_bword_data) - ) + filtered_data = filter_spamfilter_bword_data(spamfilter_bword_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -374,7 +373,7 @@ def spamfilter_bword(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("spamfilter", "bword", data=filtered_data, vdom=vdom) + return fos.set("spamfilter", "bword", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("spamfilter", "bword", mkey=filtered_data["id"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_spamfilter_dnsbl.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_spamfilter_dnsbl.py index eda06eb82..c7d3587d9 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_spamfilter_dnsbl.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_spamfilter_dnsbl.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -272,9 +272,8 @@ def spamfilter_dnsbl(data, fos, check_mode=False): state = data["state"] spamfilter_dnsbl_data = data["spamfilter_dnsbl"] - filtered_data = underscore_to_hyphen( - filter_spamfilter_dnsbl_data(spamfilter_dnsbl_data) - ) + filtered_data = filter_spamfilter_dnsbl_data(spamfilter_dnsbl_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -338,7 +337,7 @@ def spamfilter_dnsbl(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("spamfilter", "dnsbl", data=filtered_data, vdom=vdom) + return fos.set("spamfilter", "dnsbl", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("spamfilter", "dnsbl", mkey=filtered_data["id"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_spamfilter_fortishield.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_spamfilter_fortishield.py index 4ffbc6364..e3378a853 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_spamfilter_fortishield.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_spamfilter_fortishield.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -218,11 +218,10 @@ def underscore_to_hyphen(data): def spamfilter_fortishield(data, fos): vdom = data["vdom"] spamfilter_fortishield_data = data["spamfilter_fortishield"] - filtered_data = underscore_to_hyphen( - filter_spamfilter_fortishield_data(spamfilter_fortishield_data) - ) + filtered_data = filter_spamfilter_fortishield_data(spamfilter_fortishield_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("spamfilter", "fortishield", data=filtered_data, vdom=vdom) + return fos.set("spamfilter", "fortishield", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_spamfilter_iptrust.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_spamfilter_iptrust.py index 4667c9b44..154bd3fd2 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_spamfilter_iptrust.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_spamfilter_iptrust.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -277,9 +277,8 @@ def spamfilter_iptrust(data, fos, check_mode=False): state = data["state"] spamfilter_iptrust_data = data["spamfilter_iptrust"] - filtered_data = underscore_to_hyphen( - filter_spamfilter_iptrust_data(spamfilter_iptrust_data) - ) + filtered_data = filter_spamfilter_iptrust_data(spamfilter_iptrust_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -343,7 +342,7 @@ def spamfilter_iptrust(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("spamfilter", "iptrust", data=filtered_data, vdom=vdom) + return fos.set("spamfilter", "iptrust", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("spamfilter", "iptrust", mkey=filtered_data["id"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_spamfilter_mheader.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_spamfilter_mheader.py index d7e57b847..a0f27482e 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_spamfilter_mheader.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_spamfilter_mheader.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -285,9 +285,8 @@ def spamfilter_mheader(data, fos, check_mode=False): state = data["state"] spamfilter_mheader_data = data["spamfilter_mheader"] - filtered_data = underscore_to_hyphen( - filter_spamfilter_mheader_data(spamfilter_mheader_data) - ) + filtered_data = filter_spamfilter_mheader_data(spamfilter_mheader_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -351,7 +350,7 @@ def spamfilter_mheader(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("spamfilter", "mheader", data=filtered_data, vdom=vdom) + return fos.set("spamfilter", "mheader", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("spamfilter", "mheader", mkey=filtered_data["id"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_spamfilter_options.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_spamfilter_options.py index 8d286d03c..93c7f38dd 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_spamfilter_options.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_spamfilter_options.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -202,11 +202,10 @@ def underscore_to_hyphen(data): def spamfilter_options(data, fos): vdom = data["vdom"] spamfilter_options_data = data["spamfilter_options"] - filtered_data = underscore_to_hyphen( - filter_spamfilter_options_data(spamfilter_options_data) - ) + filtered_data = filter_spamfilter_options_data(spamfilter_options_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("spamfilter", "options", data=filtered_data, vdom=vdom) + return fos.set("spamfilter", "options", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_spamfilter_profile.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_spamfilter_profile.py index ecb7ecb08..c64149b32 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_spamfilter_profile.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_spamfilter_profile.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -571,9 +571,8 @@ def spamfilter_profile(data, fos, check_mode=False): spamfilter_profile_data = data["spamfilter_profile"] spamfilter_profile_data = flatten_multilists_attributes(spamfilter_profile_data) - filtered_data = underscore_to_hyphen( - filter_spamfilter_profile_data(spamfilter_profile_data) - ) + filtered_data = filter_spamfilter_profile_data(spamfilter_profile_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -637,7 +636,7 @@ def spamfilter_profile(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("spamfilter", "profile", data=filtered_data, vdom=vdom) + return fos.set("spamfilter", "profile", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_ssh_filter_profile.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_ssh_filter_profile.py index a30e505aa..8f2c36a86 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_ssh_filter_profile.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_ssh_filter_profile.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -459,9 +459,8 @@ def ssh_filter_profile(data, fos, check_mode=False): ssh_filter_profile_data = data["ssh_filter_profile"] ssh_filter_profile_data = flatten_multilists_attributes(ssh_filter_profile_data) - filtered_data = underscore_to_hyphen( - filter_ssh_filter_profile_data(ssh_filter_profile_data) - ) + filtered_data = filter_ssh_filter_profile_data(ssh_filter_profile_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -525,7 +524,7 @@ def ssh_filter_profile(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("ssh-filter", "profile", data=filtered_data, vdom=vdom) + return fos.set("ssh-filter", "profile", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_802_1x_settings.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_802_1x_settings.py index f4b2ef197..3effb7a26 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_802_1x_settings.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_802_1x_settings.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -94,6 +94,49 @@ options: choices: - 'disable' - 'enable' + mac_called_station_delimiter: + description: + - MAC called station delimiter . + type: str + choices: + - 'colon' + - 'hyphen' + - 'none' + - 'single-hyphen' + mac_calling_station_delimiter: + description: + - MAC calling station delimiter . + type: str + choices: + - 'colon' + - 'hyphen' + - 'none' + - 'single-hyphen' + mac_case: + description: + - MAC case . + type: str + choices: + - 'lowercase' + - 'uppercase' + mac_password_delimiter: + description: + - MAC authentication password delimiter . + type: str + choices: + - 'colon' + - 'hyphen' + - 'none' + - 'single-hyphen' + mac_username_delimiter: + description: + - MAC authentication username delimiter . + type: str + choices: + - 'colon' + - 'hyphen' + - 'none' + - 'single-hyphen' max_reauth_attempt: description: - Maximum number of authentication attempts (0 - 15). @@ -115,6 +158,11 @@ EXAMPLES = """ switch_controller_802_1x_settings: link_down_auth: "set-unauth" mab_reauth: "disable" + mac_called_station_delimiter: "colon" + mac_calling_station_delimiter: "colon" + mac_case: "lowercase" + mac_password_delimiter: "colon" + mac_username_delimiter: "colon" max_reauth_attempt: "3" reauth_period: "60" tx_period: "30" @@ -203,6 +251,11 @@ def filter_switch_controller_802_1x_settings_data(json): option_list = [ "link_down_auth", "mab_reauth", + "mac_called_station_delimiter", + "mac_calling_station_delimiter", + "mac_case", + "mac_password_delimiter", + "mac_username_delimiter", "max_reauth_attempt", "reauth_period", "tx_period", @@ -234,14 +287,13 @@ def underscore_to_hyphen(data): def switch_controller_802_1x_settings(data, fos): vdom = data["vdom"] switch_controller_802_1x_settings_data = data["switch_controller_802_1x_settings"] - filtered_data = underscore_to_hyphen( - filter_switch_controller_802_1x_settings_data( - switch_controller_802_1x_settings_data - ) + filtered_data = filter_switch_controller_802_1x_settings_data( + switch_controller_802_1x_settings_data ) + converted_data = underscore_to_hyphen(filtered_data) return fos.set( - "switch-controller", "802-1X-settings", data=filtered_data, vdom=vdom + "switch-controller", "802-1X-settings", data=converted_data, vdom=vdom ) @@ -292,6 +344,51 @@ versioned_schema = { "type": "string", "options": [{"value": "disable"}, {"value": "enable"}], }, + "mac_username_delimiter": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [ + {"value": "colon"}, + {"value": "hyphen"}, + {"value": "none"}, + {"value": "single-hyphen"}, + ], + }, + "mac_password_delimiter": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [ + {"value": "colon"}, + {"value": "hyphen"}, + {"value": "none"}, + {"value": "single-hyphen"}, + ], + }, + "mac_calling_station_delimiter": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [ + {"value": "colon"}, + {"value": "hyphen"}, + {"value": "none"}, + {"value": "single-hyphen"}, + ], + }, + "mac_called_station_delimiter": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [ + {"value": "colon"}, + {"value": "hyphen"}, + {"value": "none"}, + {"value": "single-hyphen"}, + ], + }, + "mac_case": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "lowercase"}, {"value": "uppercase"}], + }, }, } diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_acl_group.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_acl_group.py index 3e473bc4f..1a54d87d0 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_acl_group.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_acl_group.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -230,12 +230,13 @@ def switch_controller_acl_group(data, fos): state = data["state"] switch_controller_acl_group_data = data["switch_controller_acl_group"] - filtered_data = underscore_to_hyphen( - filter_switch_controller_acl_group_data(switch_controller_acl_group_data) + filtered_data = filter_switch_controller_acl_group_data( + switch_controller_acl_group_data ) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: - return fos.set("switch-controller.acl", "group", data=filtered_data, vdom=vdom) + return fos.set("switch-controller.acl", "group", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_acl_ingress.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_acl_ingress.py index 5b6798d08..9b637cce1 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_acl_ingress.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_acl_ingress.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -276,13 +276,14 @@ def switch_controller_acl_ingress(data, fos): state = data["state"] switch_controller_acl_ingress_data = data["switch_controller_acl_ingress"] - filtered_data = underscore_to_hyphen( - filter_switch_controller_acl_ingress_data(switch_controller_acl_ingress_data) + filtered_data = filter_switch_controller_acl_ingress_data( + switch_controller_acl_ingress_data ) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: return fos.set( - "switch-controller.acl", "ingress", data=filtered_data, vdom=vdom + "switch-controller.acl", "ingress", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_auto_config_custom.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_auto_config_custom.py index b469bd463..54eeeb1a5 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_auto_config_custom.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_auto_config_custom.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -246,11 +246,10 @@ def switch_controller_auto_config_custom(data, fos, check_mode=False): switch_controller_auto_config_custom_data = data[ "switch_controller_auto_config_custom" ] - filtered_data = underscore_to_hyphen( - filter_switch_controller_auto_config_custom_data( - switch_controller_auto_config_custom_data - ) + filtered_data = filter_switch_controller_auto_config_custom_data( + switch_controller_auto_config_custom_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -319,7 +318,7 @@ def switch_controller_auto_config_custom(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "switch-controller.auto-config", "custom", data=filtered_data, vdom=vdom + "switch-controller.auto-config", "custom", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_auto_config_default.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_auto_config_default.py index 5075f7804..cb4d85161 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_auto_config_default.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_auto_config_default.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -214,14 +214,13 @@ def switch_controller_auto_config_default(data, fos): switch_controller_auto_config_default_data = data[ "switch_controller_auto_config_default" ] - filtered_data = underscore_to_hyphen( - filter_switch_controller_auto_config_default_data( - switch_controller_auto_config_default_data - ) + filtered_data = filter_switch_controller_auto_config_default_data( + switch_controller_auto_config_default_data ) + converted_data = underscore_to_hyphen(filtered_data) return fos.set( - "switch-controller.auto-config", "default", data=filtered_data, vdom=vdom + "switch-controller.auto-config", "default", data=converted_data, vdom=vdom ) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_auto_config_policy.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_auto_config_policy.py index 5f1575ea4..1dd8e0a8c 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_auto_config_policy.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_auto_config_policy.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -268,11 +268,10 @@ def switch_controller_auto_config_policy(data, fos, check_mode=False): switch_controller_auto_config_policy_data = data[ "switch_controller_auto_config_policy" ] - filtered_data = underscore_to_hyphen( - filter_switch_controller_auto_config_policy_data( - switch_controller_auto_config_policy_data - ) + filtered_data = filter_switch_controller_auto_config_policy_data( + switch_controller_auto_config_policy_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -341,7 +340,7 @@ def switch_controller_auto_config_policy(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "switch-controller.auto-config", "policy", data=filtered_data, vdom=vdom + "switch-controller.auto-config", "policy", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_custom_command.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_custom_command.py index a85aea787..aadd930de 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_custom_command.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_custom_command.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -236,11 +236,10 @@ def switch_controller_custom_command(data, fos, check_mode=False): state = data["state"] switch_controller_custom_command_data = data["switch_controller_custom_command"] - filtered_data = underscore_to_hyphen( - filter_switch_controller_custom_command_data( - switch_controller_custom_command_data - ) + filtered_data = filter_switch_controller_custom_command_data( + switch_controller_custom_command_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -309,7 +308,7 @@ def switch_controller_custom_command(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "switch-controller", "custom-command", data=filtered_data, vdom=vdom + "switch-controller", "custom-command", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_dynamic_port_policy.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_dynamic_port_policy.py index 00c8c6a36..be4da2842 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_dynamic_port_policy.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_dynamic_port_policy.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -325,9 +325,9 @@ def underscore_to_hyphen(data): def valid_attr_to_invalid_attr(data): - specillist = {"802_1x": "set_802_1x"} + speciallist = {"802_1x": "set_802_1x"} - for k, v in specillist.items(): + for k, v in speciallist.items(): if v == data: return k @@ -336,8 +336,11 @@ def valid_attr_to_invalid_attr(data): def valid_attr_to_invalid_attrs(data): if isinstance(data, list): + new_data = [] for elem in data: elem = valid_attr_to_invalid_attrs(elem) + new_data.append(elem) + data = new_data elif isinstance(data, dict): new_data = {} for k, v in data.items(): @@ -355,12 +358,10 @@ def switch_controller_dynamic_port_policy(data, fos): switch_controller_dynamic_port_policy_data = data[ "switch_controller_dynamic_port_policy" ] - filtered_data = underscore_to_hyphen( - filter_switch_controller_dynamic_port_policy_data( - switch_controller_dynamic_port_policy_data - ) + filtered_data = filter_switch_controller_dynamic_port_policy_data( + switch_controller_dynamic_port_policy_data ) - converted_data = valid_attr_to_invalid_attrs(filtered_data) + converted_data = underscore_to_hyphen(valid_attr_to_invalid_attrs(filtered_data)) if state == "present" or state is True: return fos.set( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_flow_tracking.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_flow_tracking.py index 8701a1206..a8bd09f3d 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_flow_tracking.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_flow_tracking.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -367,13 +367,12 @@ def underscore_to_hyphen(data): def switch_controller_flow_tracking(data, fos): vdom = data["vdom"] switch_controller_flow_tracking_data = data["switch_controller_flow_tracking"] - filtered_data = underscore_to_hyphen( - filter_switch_controller_flow_tracking_data( - switch_controller_flow_tracking_data - ) + filtered_data = filter_switch_controller_flow_tracking_data( + switch_controller_flow_tracking_data ) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("switch-controller", "flow-tracking", data=filtered_data, vdom=vdom) + return fos.set("switch-controller", "flow-tracking", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_fortilink_settings.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_fortilink_settings.py index a9b8df6ce..2d869b919 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_fortilink_settings.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_fortilink_settings.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -309,15 +309,14 @@ def switch_controller_fortilink_settings(data, fos): switch_controller_fortilink_settings_data = data[ "switch_controller_fortilink_settings" ] - filtered_data = underscore_to_hyphen( - filter_switch_controller_fortilink_settings_data( - switch_controller_fortilink_settings_data - ) + filtered_data = filter_switch_controller_fortilink_settings_data( + switch_controller_fortilink_settings_data ) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: return fos.set( - "switch-controller", "fortilink-settings", data=filtered_data, vdom=vdom + "switch-controller", "fortilink-settings", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_global.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_global.py index d5e837e5a..f811bbeac 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_global.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_global.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -476,11 +476,10 @@ def switch_controller_global(data, fos): switch_controller_global_data = flatten_multilists_attributes( switch_controller_global_data ) - filtered_data = underscore_to_hyphen( - filter_switch_controller_global_data(switch_controller_global_data) - ) + filtered_data = filter_switch_controller_global_data(switch_controller_global_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("switch-controller", "global", data=filtered_data, vdom=vdom) + return fos.set("switch-controller", "global", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_igmp_snooping.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_igmp_snooping.py index ac5ef6436..13539177c 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_igmp_snooping.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_igmp_snooping.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -215,13 +215,12 @@ def underscore_to_hyphen(data): def switch_controller_igmp_snooping(data, fos): vdom = data["vdom"] switch_controller_igmp_snooping_data = data["switch_controller_igmp_snooping"] - filtered_data = underscore_to_hyphen( - filter_switch_controller_igmp_snooping_data( - switch_controller_igmp_snooping_data - ) + filtered_data = filter_switch_controller_igmp_snooping_data( + switch_controller_igmp_snooping_data ) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("switch-controller", "igmp-snooping", data=filtered_data, vdom=vdom) + return fos.set("switch-controller", "igmp-snooping", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_initial_config_template.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_initial_config_template.py index 10a586a4b..c2ab1a58e 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_initial_config_template.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_initial_config_template.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -303,11 +303,10 @@ def switch_controller_initial_config_template(data, fos, check_mode=False): switch_controller_initial_config_template_data = flatten_multilists_attributes( switch_controller_initial_config_template_data ) - filtered_data = underscore_to_hyphen( - filter_switch_controller_initial_config_template_data( - switch_controller_initial_config_template_data - ) + filtered_data = filter_switch_controller_initial_config_template_data( + switch_controller_initial_config_template_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -378,7 +377,7 @@ def switch_controller_initial_config_template(data, fos, check_mode=False): return fos.set( "switch-controller.initial-config", "template", - data=filtered_data, + data=converted_data, vdom=vdom, ) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_initial_config_vlans.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_initial_config_vlans.py index ef91f4419..81992eee9 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_initial_config_vlans.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_initial_config_vlans.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -242,14 +242,13 @@ def switch_controller_initial_config_vlans(data, fos): switch_controller_initial_config_vlans_data = data[ "switch_controller_initial_config_vlans" ] - filtered_data = underscore_to_hyphen( - filter_switch_controller_initial_config_vlans_data( - switch_controller_initial_config_vlans_data - ) + filtered_data = filter_switch_controller_initial_config_vlans_data( + switch_controller_initial_config_vlans_data ) + converted_data = underscore_to_hyphen(filtered_data) return fos.set( - "switch-controller.initial-config", "vlans", data=filtered_data, vdom=vdom + "switch-controller.initial-config", "vlans", data=converted_data, vdom=vdom ) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_lldp_profile.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_lldp_profile.py index 6ddfed159..e2700b2db 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_lldp_profile.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_lldp_profile.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -474,9 +474,9 @@ def underscore_to_hyphen(data): def valid_attr_to_invalid_attr(data): - specillist = {"802.1_tlvs": "tlvs_802dot1", "802.3_tlvs": "tlvs_802dot3"} + speciallist = {"802.1_tlvs": "tlvs_802dot1", "802.3_tlvs": "tlvs_802dot3"} - for k, v in specillist.items(): + for k, v in speciallist.items(): if v == data: return k @@ -485,8 +485,11 @@ def valid_attr_to_invalid_attr(data): def valid_attr_to_invalid_attrs(data): if isinstance(data, list): + new_data = [] for elem in data: elem = valid_attr_to_invalid_attrs(elem) + new_data.append(elem) + data = new_data elif isinstance(data, dict): new_data = {} for k, v in data.items(): @@ -505,10 +508,10 @@ def switch_controller_lldp_profile(data, fos, check_mode=False): switch_controller_lldp_profile_data = flatten_multilists_attributes( switch_controller_lldp_profile_data ) - filtered_data = underscore_to_hyphen( - filter_switch_controller_lldp_profile_data(switch_controller_lldp_profile_data) + filtered_data = filter_switch_controller_lldp_profile_data( + switch_controller_lldp_profile_data ) - converted_data = valid_attr_to_invalid_attrs(filtered_data) + converted_data = underscore_to_hyphen(valid_attr_to_invalid_attrs(filtered_data)) # check_mode starts from here if check_mode: diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_lldp_settings.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_lldp_settings.py index 87e592664..2d4de2a5d 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_lldp_settings.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_lldp_settings.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -243,13 +243,12 @@ def underscore_to_hyphen(data): def switch_controller_lldp_settings(data, fos): vdom = data["vdom"] switch_controller_lldp_settings_data = data["switch_controller_lldp_settings"] - filtered_data = underscore_to_hyphen( - filter_switch_controller_lldp_settings_data( - switch_controller_lldp_settings_data - ) + filtered_data = filter_switch_controller_lldp_settings_data( + switch_controller_lldp_settings_data ) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("switch-controller", "lldp-settings", data=filtered_data, vdom=vdom) + return fos.set("switch-controller", "lldp-settings", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_location.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_location.py index 29911a7ab..3e7359ad5 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_location.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_location.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -460,9 +460,10 @@ def switch_controller_location(data, fos, check_mode=False): state = data["state"] switch_controller_location_data = data["switch_controller_location"] - filtered_data = underscore_to_hyphen( - filter_switch_controller_location_data(switch_controller_location_data) + filtered_data = filter_switch_controller_location_data( + switch_controller_location_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -526,7 +527,7 @@ def switch_controller_location(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("switch-controller", "location", data=filtered_data, vdom=vdom) + return fos.set("switch-controller", "location", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_mac_policy.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_mac_policy.py index a54d3465f..c1e658d35 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_mac_policy.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_mac_policy.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -278,9 +278,10 @@ def switch_controller_mac_policy(data, fos, check_mode=False): state = data["state"] switch_controller_mac_policy_data = data["switch_controller_mac_policy"] - filtered_data = underscore_to_hyphen( - filter_switch_controller_mac_policy_data(switch_controller_mac_policy_data) + filtered_data = filter_switch_controller_mac_policy_data( + switch_controller_mac_policy_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -344,7 +345,9 @@ def switch_controller_mac_policy(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("switch-controller", "mac-policy", data=filtered_data, vdom=vdom) + return fos.set( + "switch-controller", "mac-policy", data=converted_data, vdom=vdom + ) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_mac_sync_settings.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_mac_sync_settings.py index 4a5109d1e..2f0a33073 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_mac_sync_settings.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_mac_sync_settings.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -204,14 +204,13 @@ def switch_controller_mac_sync_settings(data, fos): switch_controller_mac_sync_settings_data = data[ "switch_controller_mac_sync_settings" ] - filtered_data = underscore_to_hyphen( - filter_switch_controller_mac_sync_settings_data( - switch_controller_mac_sync_settings_data - ) + filtered_data = filter_switch_controller_mac_sync_settings_data( + switch_controller_mac_sync_settings_data ) + converted_data = underscore_to_hyphen(filtered_data) return fos.set( - "switch-controller", "mac-sync-settings", data=filtered_data, vdom=vdom + "switch-controller", "mac-sync-settings", data=converted_data, vdom=vdom ) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_managed_switch.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_managed_switch.py index 371802cc2..de1c3567c 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_managed_switch.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_managed_switch.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -114,6 +114,49 @@ options: choices: - 'disable' - 'enable' + mac_called_station_delimiter: + description: + - MAC called station delimiter . + type: str + choices: + - 'colon' + - 'hyphen' + - 'none' + - 'single-hyphen' + mac_calling_station_delimiter: + description: + - MAC calling station delimiter . + type: str + choices: + - 'colon' + - 'hyphen' + - 'none' + - 'single-hyphen' + mac_case: + description: + - MAC case . + type: str + choices: + - 'lowercase' + - 'uppercase' + mac_password_delimiter: + description: + - MAC authentication password delimiter . + type: str + choices: + - 'colon' + - 'hyphen' + - 'none' + - 'single-hyphen' + mac_username_delimiter: + description: + - MAC authentication username delimiter . + type: str + choices: + - 'colon' + - 'hyphen' + - 'none' + - 'single-hyphen' max_reauth_attempt: description: - Maximum number of authentication attempts (0 - 15). @@ -355,6 +398,10 @@ options: choices: - 'enable' - 'disable' + mgmt_mode: + description: + - FortiLink management mode. + type: int mirror: description: - Configuration method to edit FortiSwitch packet mirror. @@ -612,6 +659,7 @@ options: - 'disabled' - 'cl74' - 'cl91' + - 'detect-by-module' fgt_peer_device_name: description: - FGT peer device name. @@ -1133,6 +1181,20 @@ options: choices: - 'disable' - 'enable' + purdue_level: + description: + - Purdue Level of this FortiSwitch. + type: str + choices: + - '1' + - '1.5' + - '2' + - '2.5' + - '3' + - '3.5' + - '4' + - '5' + - '5.5' qos_drop_policy: description: - Set QoS drop-policy. @@ -1144,6 +1206,17 @@ options: description: - Set QoS RED/WRED drop probability. type: int + radius_nas_ip: + description: + - NAS-IP address. + type: str + radius_nas_ip_override: + description: + - Use locally defined NAS-IP. + type: str + choices: + - 'disable' + - 'enable' remote_log: description: - Configure logging by FortiSwitch device to a remote syslog server. @@ -1689,6 +1762,21 @@ options: description: - FortiSwitch version. type: int + vlan: + description: + - Configure VLAN assignment priority. + type: list + elements: dict + suboptions: + assignment_priority: + description: + - 802.1x Radius (Tunnel-Private-Group-Id) VLANID assign-by-name priority. A smaller value has a higher priority. + type: int + vlan_name: + description: + - VLAN name. Source system.interface.name. + required: true + type: str """ EXAMPLES = """ @@ -1702,6 +1790,11 @@ EXAMPLES = """ link_down_auth: "set-unauth" local_override: "enable" mab_reauth: "disable" + mac_called_station_delimiter: "colon" + mac_calling_station_delimiter: "colon" + mac_case: "lowercase" + mac_password_delimiter: "colon" + mac_username_delimiter: "colon" max_reauth_attempt: "3" reauth_period: "60" tx_period: "30" @@ -1717,7 +1810,7 @@ EXAMPLES = """ - ip: "<your_own_value>" mac: "<your_own_value>" - name: "default_name_20" + name: "default_name_25" port: "<your_own_value>" vlan: "<your_own_value> (source system.interface.name)" directly_connected: "0" @@ -1754,19 +1847,20 @@ EXAMPLES = """ l3_discovered: "0" max_allowed_trunk_members: "0" mclag_igmp_snooping_aware: "enable" + mgmt_mode: "0" mirror: - dst: "<your_own_value>" - name: "default_name_56" + name: "default_name_62" src_egress: - - name: "default_name_58" + name: "default_name_64" src_ingress: - - name: "default_name_60" + name: "default_name_66" status: "active" switching_packet: "enable" - name: "default_name_63" + name: "default_name_69" override_snmp_community: "enable" override_snmp_sysinfo: "disable" override_snmp_trap_threshold: "enable" @@ -1780,7 +1874,7 @@ EXAMPLES = """ access_mode: "dynamic" acl_group: - - name: "default_name_75 (source switch-controller.acl.group.name)" + name: "default_name_81 (source switch-controller.acl.group.name)" aggregator_mode: "bandwidth" allowed_vlans: - @@ -1818,7 +1912,7 @@ EXAMPLES = """ fortilink_port: "0" fortiswitch_acls: - - id: "109" + id: "115" igmp_snooping: "enable" igmp_snooping_flood_reports: "enable" igmps_flood_reports: "enable" @@ -1899,13 +1993,16 @@ EXAMPLES = """ pre_provisioned: "0" ptp_profile: "<your_own_value> (source switch-controller.ptp.profile.name)" ptp_status: "disable" + purdue_level: "1" qos_drop_policy: "taildrop" qos_red_probability: "12" + radius_nas_ip: "<your_own_value>" + radius_nas_ip_override: "disable" remote_log: - csv: "enable" facility: "kernel" - name: "default_name_192" + name: "default_name_201" port: "514" server: "192.168.100.40" severity: "emergency" @@ -1922,10 +2019,10 @@ EXAMPLES = """ events: "cpu-high" hosts: - - id: "206" + id: "215" ip: "<your_own_value>" - id: "208" - name: "default_name_209" + id: "217" + name: "default_name_218" query_v1_port: "161" query_v1_status: "disable" query_v2c_port: "161" @@ -1951,7 +2048,7 @@ EXAMPLES = """ - auth_proto: "md5" auth_pwd: "<your_own_value>" - name: "default_name_234" + name: "default_name_243" priv_proto: "aes128" priv_pwd: "<your_own_value>" queries: "disable" @@ -1961,7 +2058,7 @@ EXAMPLES = """ static_mac: - description: "<your_own_value>" - id: "243" + id: "252" interface: "<your_own_value>" mac: "<your_own_value>" type: "static" @@ -1974,7 +2071,7 @@ EXAMPLES = """ unknown_unicast: "enable" stp_instance: - - id: "255" + id: "264" priority: "0" stp_settings: forward_time: "15" @@ -1982,7 +2079,7 @@ EXAMPLES = """ local_override: "enable" max_age: "20" max_hops: "20" - name: "default_name_263" + name: "default_name_272" pending_timer: "4" revision: "0" status: "enable" @@ -1999,6 +2096,10 @@ EXAMPLES = """ tdr_supported: "<your_own_value>" type: "virtual" version: "0" + vlan: + - + assignment_priority: "128" + vlan_name: "<your_own_value> (source system.interface.name)" """ RETURN = """ @@ -2114,6 +2215,7 @@ def filter_switch_controller_managed_switch_data(json): "l3_discovered", "max_allowed_trunk_members", "mclag_igmp_snooping_aware", + "mgmt_mode", "mirror", "name", "override_snmp_community", @@ -2128,8 +2230,11 @@ def filter_switch_controller_managed_switch_data(json): "pre_provisioned", "ptp_profile", "ptp_status", + "purdue_level", "qos_drop_policy", "qos_red_probability", + "radius_nas_ip", + "radius_nas_ip_override", "remote_log", "route_offload", "route_offload_mclag", @@ -2153,6 +2258,7 @@ def filter_switch_controller_managed_switch_data(json): "tdr_supported", "type", "version", + "vlan", ] json = remove_invalid_fields(json) @@ -2208,9 +2314,9 @@ def underscore_to_hyphen(data): def valid_attr_to_invalid_attr(data): - specillist = {"802_1X_settings": "settings_802_1X"} + speciallist = {"802_1X_settings": "settings_802_1X"} - for k, v in specillist.items(): + for k, v in speciallist.items(): if v == data: return k @@ -2219,8 +2325,11 @@ def valid_attr_to_invalid_attr(data): def valid_attr_to_invalid_attrs(data): if isinstance(data, list): + new_data = [] for elem in data: elem = valid_attr_to_invalid_attrs(elem) + new_data.append(elem) + data = new_data elif isinstance(data, dict): new_data = {} for k, v in data.items(): @@ -2239,12 +2348,10 @@ def switch_controller_managed_switch(data, fos, check_mode=False): switch_controller_managed_switch_data = flatten_multilists_attributes( switch_controller_managed_switch_data ) - filtered_data = underscore_to_hyphen( - filter_switch_controller_managed_switch_data( - switch_controller_managed_switch_data - ) + filtered_data = filter_switch_controller_managed_switch_data( + switch_controller_managed_switch_data ) - converted_data = valid_attr_to_invalid_attrs(filtered_data) + converted_data = underscore_to_hyphen(valid_attr_to_invalid_attrs(filtered_data)) # check_mode starts from here if check_mode: @@ -2367,6 +2474,21 @@ versioned_schema = { "description": {"v_range": [["v6.0.0", ""]], "type": "string"}, "switch_profile": {"v_range": [["v6.0.0", ""]], "type": "string"}, "access_profile": {"v_range": [["v6.2.0", ""]], "type": "string"}, + "purdue_level": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [ + {"value": "1"}, + {"value": "1.5"}, + {"value": "2"}, + {"value": "2.5"}, + {"value": "3"}, + {"value": "3.5"}, + {"value": "4"}, + {"value": "5"}, + {"value": "5.5"}, + ], + }, "fsw_wan1_peer": {"v_range": [["v6.0.0", ""]], "type": "string"}, "fsw_wan1_admin": { "v_range": [["v6.0.0", ""]], @@ -2399,6 +2521,7 @@ versioned_schema = { "type": "integer", }, "pre_provisioned": {"v_range": [["v6.0.0", ""]], "type": "integer"}, + "mgmt_mode": {"v_range": [["v7.4.2", ""]], "type": "integer"}, "dynamic_capability": {"v_range": [["v6.0.0", ""]], "type": "string"}, "switch_device_tag": {"v_range": [["v6.0.0", ""]], "type": "string"}, "switch_dhcp_opt43_key": {"v_range": [["v6.4.0", ""]], "type": "string"}, @@ -2413,6 +2536,12 @@ versioned_schema = { "options": [{"value": "disable"}, {"value": "enable"}], }, "ptp_profile": {"v_range": [["v7.4.1", ""]], "type": "string"}, + "radius_nas_ip_override": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "disable"}, {"value": "enable"}], + }, + "radius_nas_ip": {"v_range": [["v7.4.2", ""]], "type": "string"}, "route_offload": { "v_range": [["v7.4.1", ""]], "type": "string", @@ -2436,6 +2565,19 @@ versioned_schema = { }, "v_range": [["v7.4.1", ""]], }, + "vlan": { + "type": "list", + "elements": "dict", + "children": { + "vlan_name": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "required": True, + }, + "assignment_priority": {"v_range": [["v7.4.2", ""]], "type": "integer"}, + }, + "v_range": [["v7.4.2", ""]], + }, "type": { "v_range": [["v6.0.0", ""]], "type": "string", @@ -2831,6 +2973,7 @@ versioned_schema = { {"value": "disabled"}, {"value": "cl74"}, {"value": "cl91"}, + {"value": "detect-by-module", "v_range": [["v7.4.2", ""]]}, ], }, "flow_control": { @@ -3665,6 +3808,51 @@ versioned_schema = { "type": "string", "options": [{"value": "disable"}, {"value": "enable"}], }, + "mac_username_delimiter": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [ + {"value": "colon"}, + {"value": "hyphen"}, + {"value": "none"}, + {"value": "single-hyphen"}, + ], + }, + "mac_password_delimiter": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [ + {"value": "colon"}, + {"value": "hyphen"}, + {"value": "none"}, + {"value": "single-hyphen"}, + ], + }, + "mac_calling_station_delimiter": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [ + {"value": "colon"}, + {"value": "hyphen"}, + {"value": "none"}, + {"value": "single-hyphen"}, + ], + }, + "mac_called_station_delimiter": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [ + {"value": "colon"}, + {"value": "hyphen"}, + {"value": "none"}, + {"value": "single-hyphen"}, + ], + }, + "mac_case": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "lowercase"}, {"value": "uppercase"}], + }, }, }, }, diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_nac_device.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_nac_device.py index e713a3b8a..15f2234d0 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_nac_device.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_nac_device.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -277,12 +277,15 @@ def switch_controller_nac_device(data, fos): state = data["state"] switch_controller_nac_device_data = data["switch_controller_nac_device"] - filtered_data = underscore_to_hyphen( - filter_switch_controller_nac_device_data(switch_controller_nac_device_data) + filtered_data = filter_switch_controller_nac_device_data( + switch_controller_nac_device_data ) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: - return fos.set("switch-controller", "nac-device", data=filtered_data, vdom=vdom) + return fos.set( + "switch-controller", "nac-device", data=converted_data, vdom=vdom + ) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_nac_settings.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_nac_settings.py index 8712ab0e3..516efed77 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_nac_settings.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_nac_settings.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -277,9 +277,10 @@ def switch_controller_nac_settings(data, fos, check_mode=False): state = data["state"] switch_controller_nac_settings_data = data["switch_controller_nac_settings"] - filtered_data = underscore_to_hyphen( - filter_switch_controller_nac_settings_data(switch_controller_nac_settings_data) + filtered_data = filter_switch_controller_nac_settings_data( + switch_controller_nac_settings_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -348,7 +349,7 @@ def switch_controller_nac_settings(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "switch-controller", "nac-settings", data=filtered_data, vdom=vdom + "switch-controller", "nac-settings", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_network_monitor_settings.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_network_monitor_settings.py index f44991fd4..b2b21590a 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_network_monitor_settings.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_network_monitor_settings.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -207,14 +207,13 @@ def switch_controller_network_monitor_settings(data, fos): switch_controller_network_monitor_settings_data = data[ "switch_controller_network_monitor_settings" ] - filtered_data = underscore_to_hyphen( - filter_switch_controller_network_monitor_settings_data( - switch_controller_network_monitor_settings_data - ) + filtered_data = filter_switch_controller_network_monitor_settings_data( + switch_controller_network_monitor_settings_data ) + converted_data = underscore_to_hyphen(filtered_data) return fos.set( - "switch-controller", "network-monitor-settings", data=filtered_data, vdom=vdom + "switch-controller", "network-monitor-settings", data=converted_data, vdom=vdom ) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_poe.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_poe.py index 2ae26feca..e6be7670b 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_poe.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_poe.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -200,9 +200,9 @@ def underscore_to_hyphen(data): def valid_attr_to_invalid_attr(data): - specillist = {"<fortiswitch_id>": "fortiswitch_id"} + speciallist = {"<fortiswitch_id>": "fortiswitch_id"} - for k, v in specillist.items(): + for k, v in speciallist.items(): if v == data: return k @@ -211,8 +211,11 @@ def valid_attr_to_invalid_attr(data): def valid_attr_to_invalid_attrs(data): if isinstance(data, list): + new_data = [] for elem in data: elem = valid_attr_to_invalid_attrs(elem) + new_data.append(elem) + data = new_data elif isinstance(data, dict): new_data = {} for k, v in data.items(): @@ -225,10 +228,8 @@ def valid_attr_to_invalid_attrs(data): def switch_controller_poe(data, fos): vdom = data["vdom"] switch_controller_poe_data = data["switch_controller_poe"] - filtered_data = underscore_to_hyphen( - filter_switch_controller_poe_data(switch_controller_poe_data) - ) - converted_data = valid_attr_to_invalid_attrs(filtered_data) + filtered_data = filter_switch_controller_poe_data(switch_controller_poe_data) + converted_data = underscore_to_hyphen(valid_attr_to_invalid_attrs(filtered_data)) return fos.set("switch-controller", "poe", data=converted_data, vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_port_policy.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_port_policy.py index f29345bd9..cf2d69a75 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_port_policy.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_port_policy.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -269,9 +269,9 @@ def underscore_to_hyphen(data): def valid_attr_to_invalid_attr(data): - specillist = {"802_1x": "set_802_1x"} + speciallist = {"802_1x": "set_802_1x"} - for k, v in specillist.items(): + for k, v in speciallist.items(): if v == data: return k @@ -280,8 +280,11 @@ def valid_attr_to_invalid_attr(data): def valid_attr_to_invalid_attrs(data): if isinstance(data, list): + new_data = [] for elem in data: elem = valid_attr_to_invalid_attrs(elem) + new_data.append(elem) + data = new_data elif isinstance(data, dict): new_data = {} for k, v in data.items(): @@ -297,10 +300,10 @@ def switch_controller_port_policy(data, fos, check_mode=False): state = data["state"] switch_controller_port_policy_data = data["switch_controller_port_policy"] - filtered_data = underscore_to_hyphen( - filter_switch_controller_port_policy_data(switch_controller_port_policy_data) + filtered_data = filter_switch_controller_port_policy_data( + switch_controller_port_policy_data ) - converted_data = valid_attr_to_invalid_attrs(filtered_data) + converted_data = underscore_to_hyphen(valid_attr_to_invalid_attrs(filtered_data)) # check_mode starts from here if check_mode: diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_ptp_interface_policy.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_ptp_interface_policy.py index 7dca2d320..eedeeb8f7 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_ptp_interface_policy.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_ptp_interface_policy.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -233,15 +233,14 @@ def switch_controller_ptp_interface_policy(data, fos): switch_controller_ptp_interface_policy_data = data[ "switch_controller_ptp_interface_policy" ] - filtered_data = underscore_to_hyphen( - filter_switch_controller_ptp_interface_policy_data( - switch_controller_ptp_interface_policy_data - ) + filtered_data = filter_switch_controller_ptp_interface_policy_data( + switch_controller_ptp_interface_policy_data ) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: return fos.set( - "switch-controller.ptp", "interface-policy", data=filtered_data, vdom=vdom + "switch-controller.ptp", "interface-policy", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_ptp_policy.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_ptp_policy.py index 826ae004d..4de4f7785 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_ptp_policy.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_ptp_policy.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -233,9 +233,10 @@ def switch_controller_ptp_policy(data, fos, check_mode=False): state = data["state"] switch_controller_ptp_policy_data = data["switch_controller_ptp_policy"] - filtered_data = underscore_to_hyphen( - filter_switch_controller_ptp_policy_data(switch_controller_ptp_policy_data) + filtered_data = filter_switch_controller_ptp_policy_data( + switch_controller_ptp_policy_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -299,7 +300,9 @@ def switch_controller_ptp_policy(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("switch-controller.ptp", "policy", data=filtered_data, vdom=vdom) + return fos.set( + "switch-controller.ptp", "policy", data=converted_data, vdom=vdom + ) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_ptp_profile.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_ptp_profile.py index f8ac99a13..d006fd741 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_ptp_profile.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_ptp_profile.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -268,13 +268,14 @@ def switch_controller_ptp_profile(data, fos): state = data["state"] switch_controller_ptp_profile_data = data["switch_controller_ptp_profile"] - filtered_data = underscore_to_hyphen( - filter_switch_controller_ptp_profile_data(switch_controller_ptp_profile_data) + filtered_data = filter_switch_controller_ptp_profile_data( + switch_controller_ptp_profile_data ) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: return fos.set( - "switch-controller.ptp", "profile", data=filtered_data, vdom=vdom + "switch-controller.ptp", "profile", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_ptp_settings.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_ptp_settings.py index 4629bb179..521a8a023 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_ptp_settings.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_ptp_settings.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -206,11 +206,12 @@ def underscore_to_hyphen(data): def switch_controller_ptp_settings(data, fos): vdom = data["vdom"] switch_controller_ptp_settings_data = data["switch_controller_ptp_settings"] - filtered_data = underscore_to_hyphen( - filter_switch_controller_ptp_settings_data(switch_controller_ptp_settings_data) + filtered_data = filter_switch_controller_ptp_settings_data( + switch_controller_ptp_settings_data ) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("switch-controller.ptp", "settings", data=filtered_data, vdom=vdom) + return fos.set("switch-controller.ptp", "settings", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_qos_dot1p_map.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_qos_dot1p_map.py index 843855b76..c8e2978a5 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_qos_dot1p_map.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_qos_dot1p_map.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -362,11 +362,10 @@ def switch_controller_qos_dot1p_map(data, fos, check_mode=False): state = data["state"] switch_controller_qos_dot1p_map_data = data["switch_controller_qos_dot1p_map"] - filtered_data = underscore_to_hyphen( - filter_switch_controller_qos_dot1p_map_data( - switch_controller_qos_dot1p_map_data - ) + filtered_data = filter_switch_controller_qos_dot1p_map_data( + switch_controller_qos_dot1p_map_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -435,7 +434,7 @@ def switch_controller_qos_dot1p_map(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "switch-controller.qos", "dot1p-map", data=filtered_data, vdom=vdom + "switch-controller.qos", "dot1p-map", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_qos_ip_dscp_map.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_qos_ip_dscp_map.py index 0824b7a1c..678ccc078 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_qos_ip_dscp_map.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_qos_ip_dscp_map.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -330,11 +330,10 @@ def switch_controller_qos_ip_dscp_map(data, fos, check_mode=False): switch_controller_qos_ip_dscp_map_data = flatten_multilists_attributes( switch_controller_qos_ip_dscp_map_data ) - filtered_data = underscore_to_hyphen( - filter_switch_controller_qos_ip_dscp_map_data( - switch_controller_qos_ip_dscp_map_data - ) + filtered_data = filter_switch_controller_qos_ip_dscp_map_data( + switch_controller_qos_ip_dscp_map_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -403,7 +402,7 @@ def switch_controller_qos_ip_dscp_map(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "switch-controller.qos", "ip-dscp-map", data=filtered_data, vdom=vdom + "switch-controller.qos", "ip-dscp-map", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_qos_qos_policy.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_qos_qos_policy.py index 43c79f344..439e00e4a 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_qos_qos_policy.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_qos_qos_policy.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -251,11 +251,10 @@ def switch_controller_qos_qos_policy(data, fos, check_mode=False): state = data["state"] switch_controller_qos_qos_policy_data = data["switch_controller_qos_qos_policy"] - filtered_data = underscore_to_hyphen( - filter_switch_controller_qos_qos_policy_data( - switch_controller_qos_qos_policy_data - ) + filtered_data = filter_switch_controller_qos_qos_policy_data( + switch_controller_qos_qos_policy_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -324,7 +323,7 @@ def switch_controller_qos_qos_policy(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "switch-controller.qos", "qos-policy", data=filtered_data, vdom=vdom + "switch-controller.qos", "qos-policy", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_qos_queue_policy.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_qos_queue_policy.py index 36812dace..e24b31d59 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_qos_queue_policy.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_qos_queue_policy.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -302,11 +302,10 @@ def switch_controller_qos_queue_policy(data, fos, check_mode=False): state = data["state"] switch_controller_qos_queue_policy_data = data["switch_controller_qos_queue_policy"] - filtered_data = underscore_to_hyphen( - filter_switch_controller_qos_queue_policy_data( - switch_controller_qos_queue_policy_data - ) + filtered_data = filter_switch_controller_qos_queue_policy_data( + switch_controller_qos_queue_policy_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -375,7 +374,7 @@ def switch_controller_qos_queue_policy(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "switch-controller.qos", "queue-policy", data=filtered_data, vdom=vdom + "switch-controller.qos", "queue-policy", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_quarantine.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_quarantine.py index 912ca70cc..1ba572005 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_quarantine.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_quarantine.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -243,11 +243,12 @@ def underscore_to_hyphen(data): def switch_controller_quarantine(data, fos): vdom = data["vdom"] switch_controller_quarantine_data = data["switch_controller_quarantine"] - filtered_data = underscore_to_hyphen( - filter_switch_controller_quarantine_data(switch_controller_quarantine_data) + filtered_data = filter_switch_controller_quarantine_data( + switch_controller_quarantine_data ) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("switch-controller", "quarantine", data=filtered_data, vdom=vdom) + return fos.set("switch-controller", "quarantine", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_remote_log.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_remote_log.py index 1299aaab0..764215e6e 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_remote_log.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_remote_log.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -295,9 +295,10 @@ def switch_controller_remote_log(data, fos, check_mode=False): state = data["state"] switch_controller_remote_log_data = data["switch_controller_remote_log"] - filtered_data = underscore_to_hyphen( - filter_switch_controller_remote_log_data(switch_controller_remote_log_data) + filtered_data = filter_switch_controller_remote_log_data( + switch_controller_remote_log_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -361,7 +362,9 @@ def switch_controller_remote_log(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("switch-controller", "remote-log", data=filtered_data, vdom=vdom) + return fos.set( + "switch-controller", "remote-log", data=converted_data, vdom=vdom + ) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_security_policy_802_1x.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_security_policy_802_1x.py index a118f082f..5d339252b 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_security_policy_802_1x.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_security_policy_802_1x.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -384,11 +384,10 @@ def switch_controller_security_policy_802_1x(data, fos, check_mode=False): switch_controller_security_policy_802_1x_data = data[ "switch_controller_security_policy_802_1x" ] - filtered_data = underscore_to_hyphen( - filter_switch_controller_security_policy_802_1x_data( - switch_controller_security_policy_802_1x_data - ) + filtered_data = filter_switch_controller_security_policy_802_1x_data( + switch_controller_security_policy_802_1x_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -457,7 +456,10 @@ def switch_controller_security_policy_802_1x(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "switch-controller.security-policy", "802-1X", data=filtered_data, vdom=vdom + "switch-controller.security-policy", + "802-1X", + data=converted_data, + vdom=vdom, ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_security_policy_captive_portal.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_security_policy_captive_portal.py index 06ddb93e7..c990132f4 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_security_policy_captive_portal.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_security_policy_captive_portal.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -239,11 +239,10 @@ def switch_controller_security_policy_captive_portal(data, fos, check_mode=False switch_controller_security_policy_captive_portal_data = data[ "switch_controller_security_policy_captive_portal" ] - filtered_data = underscore_to_hyphen( - filter_switch_controller_security_policy_captive_portal_data( - switch_controller_security_policy_captive_portal_data - ) + filtered_data = filter_switch_controller_security_policy_captive_portal_data( + switch_controller_security_policy_captive_portal_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -317,7 +316,7 @@ def switch_controller_security_policy_captive_portal(data, fos, check_mode=False return fos.set( "switch-controller.security-policy", "captive-portal", - data=filtered_data, + data=converted_data, vdom=vdom, ) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_security_policy_local_access.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_security_policy_local_access.py index d589a81e8..f66658474 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_security_policy_local_access.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_security_policy_local_access.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -288,11 +288,10 @@ def switch_controller_security_policy_local_access(data, fos, check_mode=False): switch_controller_security_policy_local_access_data = flatten_multilists_attributes( switch_controller_security_policy_local_access_data ) - filtered_data = underscore_to_hyphen( - filter_switch_controller_security_policy_local_access_data( - switch_controller_security_policy_local_access_data - ) + filtered_data = filter_switch_controller_security_policy_local_access_data( + switch_controller_security_policy_local_access_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -366,7 +365,7 @@ def switch_controller_security_policy_local_access(data, fos, check_mode=False): return fos.set( "switch-controller.security-policy", "local-access", - data=filtered_data, + data=converted_data, vdom=vdom, ) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_sflow.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_sflow.py index 8c2d6a975..ce5ab5fbb 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_sflow.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_sflow.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -207,11 +207,10 @@ def underscore_to_hyphen(data): def switch_controller_sflow(data, fos): vdom = data["vdom"] switch_controller_sflow_data = data["switch_controller_sflow"] - filtered_data = underscore_to_hyphen( - filter_switch_controller_sflow_data(switch_controller_sflow_data) - ) + filtered_data = filter_switch_controller_sflow_data(switch_controller_sflow_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("switch-controller", "sflow", data=filtered_data, vdom=vdom) + return fos.set("switch-controller", "sflow", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_snmp_community.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_snmp_community.py index 19ff03854..a0e466d90 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_snmp_community.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_snmp_community.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -381,11 +381,10 @@ def switch_controller_snmp_community(data, fos, check_mode=False): switch_controller_snmp_community_data = flatten_multilists_attributes( switch_controller_snmp_community_data ) - filtered_data = underscore_to_hyphen( - filter_switch_controller_snmp_community_data( - switch_controller_snmp_community_data - ) + filtered_data = filter_switch_controller_snmp_community_data( + switch_controller_snmp_community_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -454,7 +453,7 @@ def switch_controller_snmp_community(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "switch-controller", "snmp-community", data=filtered_data, vdom=vdom + "switch-controller", "snmp-community", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_snmp_sysinfo.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_snmp_sysinfo.py index 6bdbd18f5..1b0618324 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_snmp_sysinfo.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_snmp_sysinfo.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -225,11 +225,12 @@ def underscore_to_hyphen(data): def switch_controller_snmp_sysinfo(data, fos): vdom = data["vdom"] switch_controller_snmp_sysinfo_data = data["switch_controller_snmp_sysinfo"] - filtered_data = underscore_to_hyphen( - filter_switch_controller_snmp_sysinfo_data(switch_controller_snmp_sysinfo_data) + filtered_data = filter_switch_controller_snmp_sysinfo_data( + switch_controller_snmp_sysinfo_data ) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("switch-controller", "snmp-sysinfo", data=filtered_data, vdom=vdom) + return fos.set("switch-controller", "snmp-sysinfo", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_snmp_trap_threshold.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_snmp_trap_threshold.py index 6131cc366..4b130261d 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_snmp_trap_threshold.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_snmp_trap_threshold.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -218,14 +218,13 @@ def switch_controller_snmp_trap_threshold(data, fos): switch_controller_snmp_trap_threshold_data = data[ "switch_controller_snmp_trap_threshold" ] - filtered_data = underscore_to_hyphen( - filter_switch_controller_snmp_trap_threshold_data( - switch_controller_snmp_trap_threshold_data - ) + filtered_data = filter_switch_controller_snmp_trap_threshold_data( + switch_controller_snmp_trap_threshold_data ) + converted_data = underscore_to_hyphen(filtered_data) return fos.set( - "switch-controller", "snmp-trap-threshold", data=filtered_data, vdom=vdom + "switch-controller", "snmp-trap-threshold", data=converted_data, vdom=vdom ) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_snmp_user.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_snmp_user.py index b87c9e5de..b6d6892eb 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_snmp_user.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_snmp_user.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -292,9 +292,10 @@ def switch_controller_snmp_user(data, fos, check_mode=False): state = data["state"] switch_controller_snmp_user_data = data["switch_controller_snmp_user"] - filtered_data = underscore_to_hyphen( - filter_switch_controller_snmp_user_data(switch_controller_snmp_user_data) + filtered_data = filter_switch_controller_snmp_user_data( + switch_controller_snmp_user_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -358,7 +359,7 @@ def switch_controller_snmp_user(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("switch-controller", "snmp-user", data=filtered_data, vdom=vdom) + return fos.set("switch-controller", "snmp-user", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_storm_control.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_storm_control.py index 9c3e92953..9d62eaf06 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_storm_control.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_storm_control.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -226,13 +226,12 @@ def underscore_to_hyphen(data): def switch_controller_storm_control(data, fos): vdom = data["vdom"] switch_controller_storm_control_data = data["switch_controller_storm_control"] - filtered_data = underscore_to_hyphen( - filter_switch_controller_storm_control_data( - switch_controller_storm_control_data - ) + filtered_data = filter_switch_controller_storm_control_data( + switch_controller_storm_control_data ) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("switch-controller", "storm-control", data=filtered_data, vdom=vdom) + return fos.set("switch-controller", "storm-control", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_storm_control_policy.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_storm_control_policy.py index 7f8ab0592..b836bbd50 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_storm_control_policy.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_storm_control_policy.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -278,11 +278,10 @@ def switch_controller_storm_control_policy(data, fos, check_mode=False): switch_controller_storm_control_policy_data = data[ "switch_controller_storm_control_policy" ] - filtered_data = underscore_to_hyphen( - filter_switch_controller_storm_control_policy_data( - switch_controller_storm_control_policy_data - ) + filtered_data = filter_switch_controller_storm_control_policy_data( + switch_controller_storm_control_policy_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -351,7 +350,7 @@ def switch_controller_storm_control_policy(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "switch-controller", "storm-control-policy", data=filtered_data, vdom=vdom + "switch-controller", "storm-control-policy", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_stp_instance.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_stp_instance.py index 2b9af5201..cbdccc05c 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_stp_instance.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_stp_instance.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -239,9 +239,10 @@ def switch_controller_stp_instance(data, fos, check_mode=False): state = data["state"] switch_controller_stp_instance_data = data["switch_controller_stp_instance"] - filtered_data = underscore_to_hyphen( - filter_switch_controller_stp_instance_data(switch_controller_stp_instance_data) + filtered_data = filter_switch_controller_stp_instance_data( + switch_controller_stp_instance_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -310,7 +311,7 @@ def switch_controller_stp_instance(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "switch-controller", "stp-instance", data=filtered_data, vdom=vdom + "switch-controller", "stp-instance", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_stp_settings.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_stp_settings.py index b81753ff2..3e7c4e41b 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_stp_settings.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_stp_settings.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -249,11 +249,12 @@ def underscore_to_hyphen(data): def switch_controller_stp_settings(data, fos): vdom = data["vdom"] switch_controller_stp_settings_data = data["switch_controller_stp_settings"] - filtered_data = underscore_to_hyphen( - filter_switch_controller_stp_settings_data(switch_controller_stp_settings_data) + filtered_data = filter_switch_controller_stp_settings_data( + switch_controller_stp_settings_data ) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("switch-controller", "stp-settings", data=filtered_data, vdom=vdom) + return fos.set("switch-controller", "stp-settings", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_switch_group.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_switch_group.py index b2f2657b7..3f8b86ddb 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_switch_group.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_switch_group.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -254,9 +254,10 @@ def switch_controller_switch_group(data, fos, check_mode=False): state = data["state"] switch_controller_switch_group_data = data["switch_controller_switch_group"] - filtered_data = underscore_to_hyphen( - filter_switch_controller_switch_group_data(switch_controller_switch_group_data) + filtered_data = filter_switch_controller_switch_group_data( + switch_controller_switch_group_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -325,7 +326,7 @@ def switch_controller_switch_group(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "switch-controller", "switch-group", data=filtered_data, vdom=vdom + "switch-controller", "switch-group", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_switch_interface_tag.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_switch_interface_tag.py index 6bc14b534..543999a6c 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_switch_interface_tag.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_switch_interface_tag.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -227,11 +227,10 @@ def switch_controller_switch_interface_tag(data, fos, check_mode=False): switch_controller_switch_interface_tag_data = data[ "switch_controller_switch_interface_tag" ] - filtered_data = underscore_to_hyphen( - filter_switch_controller_switch_interface_tag_data( - switch_controller_switch_interface_tag_data - ) + filtered_data = filter_switch_controller_switch_interface_tag_data( + switch_controller_switch_interface_tag_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -300,7 +299,7 @@ def switch_controller_switch_interface_tag(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "switch-controller", "switch-interface-tag", data=filtered_data, vdom=vdom + "switch-controller", "switch-interface-tag", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_switch_log.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_switch_log.py index 64ae1f08b..c2495d60e 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_switch_log.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_switch_log.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -219,11 +219,12 @@ def underscore_to_hyphen(data): def switch_controller_switch_log(data, fos): vdom = data["vdom"] switch_controller_switch_log_data = data["switch_controller_switch_log"] - filtered_data = underscore_to_hyphen( - filter_switch_controller_switch_log_data(switch_controller_switch_log_data) + filtered_data = filter_switch_controller_switch_log_data( + switch_controller_switch_log_data ) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("switch-controller", "switch-log", data=filtered_data, vdom=vdom) + return fos.set("switch-controller", "switch-log", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_switch_profile.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_switch_profile.py index ce6ed48e6..a73419154 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_switch_profile.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_switch_profile.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -270,11 +270,10 @@ def switch_controller_switch_profile(data, fos, check_mode=False): state = data["state"] switch_controller_switch_profile_data = data["switch_controller_switch_profile"] - filtered_data = underscore_to_hyphen( - filter_switch_controller_switch_profile_data( - switch_controller_switch_profile_data - ) + filtered_data = filter_switch_controller_switch_profile_data( + switch_controller_switch_profile_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -343,7 +342,7 @@ def switch_controller_switch_profile(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "switch-controller", "switch-profile", data=filtered_data, vdom=vdom + "switch-controller", "switch-profile", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_system.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_system.py index fe364887f..380693c8d 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_system.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_system.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -133,6 +133,7 @@ options: type: str choices: - 'compatible' + - 'moderate' - 'strict' """ @@ -276,11 +277,10 @@ def underscore_to_hyphen(data): def switch_controller_system(data, fos): vdom = data["vdom"] switch_controller_system_data = data["switch_controller_system"] - filtered_data = underscore_to_hyphen( - filter_switch_controller_system_data(switch_controller_system_data) - ) + filtered_data = filter_switch_controller_system_data(switch_controller_system_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("switch-controller", "system", data=filtered_data, vdom=vdom) + return fos.set("switch-controller", "system", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -333,7 +333,11 @@ versioned_schema = { "tunnel_mode": { "v_range": [["v7.0.0", ""]], "type": "string", - "options": [{"value": "compatible"}, {"value": "strict"}], + "options": [ + {"value": "compatible"}, + {"value": "moderate", "v_range": [["v7.4.2", ""]]}, + {"value": "strict"}, + ], }, "caputp_echo_interval": {"v_range": [["v7.4.0", ""]], "type": "integer"}, "caputp_max_retransmit": {"v_range": [["v7.4.0", ""]], "type": "integer"}, diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_traffic_policy.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_traffic_policy.py index 5a77f22b4..3cd250349 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_traffic_policy.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_traffic_policy.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -281,11 +281,10 @@ def switch_controller_traffic_policy(data, fos, check_mode=False): state = data["state"] switch_controller_traffic_policy_data = data["switch_controller_traffic_policy"] - filtered_data = underscore_to_hyphen( - filter_switch_controller_traffic_policy_data( - switch_controller_traffic_policy_data - ) + filtered_data = filter_switch_controller_traffic_policy_data( + switch_controller_traffic_policy_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -354,7 +353,7 @@ def switch_controller_traffic_policy(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "switch-controller", "traffic-policy", data=filtered_data, vdom=vdom + "switch-controller", "traffic-policy", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_traffic_sniffer.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_traffic_sniffer.py index 18661d727..65d74c38b 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_traffic_sniffer.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_traffic_sniffer.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -316,14 +316,13 @@ def underscore_to_hyphen(data): def switch_controller_traffic_sniffer(data, fos): vdom = data["vdom"] switch_controller_traffic_sniffer_data = data["switch_controller_traffic_sniffer"] - filtered_data = underscore_to_hyphen( - filter_switch_controller_traffic_sniffer_data( - switch_controller_traffic_sniffer_data - ) + filtered_data = filter_switch_controller_traffic_sniffer_data( + switch_controller_traffic_sniffer_data ) + converted_data = underscore_to_hyphen(filtered_data) return fos.set( - "switch-controller", "traffic-sniffer", data=filtered_data, vdom=vdom + "switch-controller", "traffic-sniffer", data=converted_data, vdom=vdom ) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_virtual_port_pool.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_virtual_port_pool.py index 0080d51b0..db220aa1b 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_virtual_port_pool.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_virtual_port_pool.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -232,11 +232,10 @@ def switch_controller_virtual_port_pool(data, fos, check_mode=False): switch_controller_virtual_port_pool_data = data[ "switch_controller_virtual_port_pool" ] - filtered_data = underscore_to_hyphen( - filter_switch_controller_virtual_port_pool_data( - switch_controller_virtual_port_pool_data - ) + filtered_data = filter_switch_controller_virtual_port_pool_data( + switch_controller_virtual_port_pool_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -305,7 +304,7 @@ def switch_controller_virtual_port_pool(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "switch-controller", "virtual-port-pool", data=filtered_data, vdom=vdom + "switch-controller", "virtual-port-pool", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_vlan.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_vlan.py index 059f692f2..12f64fee3 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_vlan.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_vlan.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -330,9 +330,8 @@ def switch_controller_vlan(data, fos, check_mode=False): state = data["state"] switch_controller_vlan_data = data["switch_controller_vlan"] - filtered_data = underscore_to_hyphen( - filter_switch_controller_vlan_data(switch_controller_vlan_data) - ) + filtered_data = filter_switch_controller_vlan_data(switch_controller_vlan_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -396,7 +395,7 @@ def switch_controller_vlan(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("switch-controller", "vlan", data=filtered_data, vdom=vdom) + return fos.set("switch-controller", "vlan", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_vlan_policy.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_vlan_policy.py index 211974fba..bdaa8d63e 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_vlan_policy.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_switch_controller_vlan_policy.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -294,9 +294,10 @@ def switch_controller_vlan_policy(data, fos, check_mode=False): state = data["state"] switch_controller_vlan_policy_data = data["switch_controller_vlan_policy"] - filtered_data = underscore_to_hyphen( - filter_switch_controller_vlan_policy_data(switch_controller_vlan_policy_data) + filtered_data = filter_switch_controller_vlan_policy_data( + switch_controller_vlan_policy_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -363,7 +364,7 @@ def switch_controller_vlan_policy(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "switch-controller", "vlan-policy", data=filtered_data, vdom=vdom + "switch-controller", "vlan-policy", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_3g_modem_custom.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_3g_modem_custom.py index 1545f0c8a..0f70b7a51 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_3g_modem_custom.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_3g_modem_custom.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -271,9 +271,8 @@ def system_3g_modem_custom(data, fos, check_mode=False): state = data["state"] system_3g_modem_custom_data = data["system_3g_modem_custom"] - filtered_data = underscore_to_hyphen( - filter_system_3g_modem_custom_data(system_3g_modem_custom_data) - ) + filtered_data = filter_system_3g_modem_custom_data(system_3g_modem_custom_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -337,7 +336,7 @@ def system_3g_modem_custom(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system.3g-modem", "custom", data=filtered_data, vdom=vdom) + return fos.set("system.3g-modem", "custom", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_accprofile.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_accprofile.py index 9d34cf510..114e3c03f 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_accprofile.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_accprofile.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -107,6 +107,41 @@ options: - 'none' - 'read' - 'read-write' + cli_config: + description: + - Enable/disable permission to run config commands. + type: str + choices: + - 'enable' + - 'disable' + cli_diagnose: + description: + - Enable/disable permission to run diagnostic commands. + type: str + choices: + - 'enable' + - 'disable' + cli_exec: + description: + - Enable/disable permission to run execute commands. + type: str + choices: + - 'enable' + - 'disable' + cli_get: + description: + - Enable/disable permission to run get commands. + type: str + choices: + - 'enable' + - 'disable' + cli_show: + description: + - Enable/disable permission to run show commands. + type: str + choices: + - 'enable' + - 'disable' comments: description: - Comment. @@ -538,6 +573,11 @@ EXAMPLES = """ admintimeout: "10" admintimeout_override: "enable" authgrp: "none" + cli_config: "enable" + cli_diagnose: "enable" + cli_exec: "enable" + cli_get: "enable" + cli_show: "enable" comments: "<your_own_value>" ftviewgrp: "none" fwgrp: "none" @@ -553,7 +593,7 @@ EXAMPLES = """ data_access: "none" report_access: "none" threat_weight: "none" - name: "default_name_21" + name: "default_name_26" netgrp: "none" netgrp_permission: cfg: "none" @@ -688,6 +728,11 @@ def filter_system_accprofile_data(json): "admintimeout", "admintimeout_override", "authgrp", + "cli_config", + "cli_diagnose", + "cli_exec", + "cli_get", + "cli_show", "comments", "ftviewgrp", "fwgrp", @@ -740,9 +785,8 @@ def system_accprofile(data, fos, check_mode=False): state = data["state"] system_accprofile_data = data["system_accprofile"] - filtered_data = underscore_to_hyphen( - filter_system_accprofile_data(system_accprofile_data) - ) + filtered_data = filter_system_accprofile_data(system_accprofile_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -806,7 +850,7 @@ def system_accprofile(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "accprofile", data=filtered_data, vdom=vdom) + return fos.set("system", "accprofile", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("system", "accprofile", mkey=filtered_data["name"], vdom=vdom) @@ -925,9 +969,13 @@ versioned_schema = { ], }, "wanoptgrp": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", - "options": [{"value": "none"}, {"value": "read"}, {"value": "read-write"}], + "options": [ + {"value": "none", "v_range": [["v6.0.0", ""]]}, + {"value": "read", "v_range": [["v6.0.0", ""]]}, + {"value": "read-write", "v_range": [["v6.0.0", ""]]}, + ], }, "wifi": { "v_range": [["v6.0.0", ""]], @@ -1242,7 +1290,11 @@ versioned_schema = { ], }, "mmsgtp": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "string", "options": [ {"value": "none"}, @@ -1276,8 +1328,28 @@ versioned_schema = { "options": [{"value": "enable"}, {"value": "disable"}], }, "admintimeout": {"v_range": [["v6.0.0", ""]], "type": "integer"}, - "system_diagnostics": { - "v_range": [["v6.4.0", ""]], + "cli_diagnose": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "cli_get": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "cli_show": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "cli_exec": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "cli_config": { + "v_range": [["v7.4.2", ""]], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, @@ -1291,6 +1363,11 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "system_diagnostics": { + "v_range": [["v6.4.0", "v7.4.1"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, }, "v_range": [["v6.0.0", ""]], } diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_acme.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_acme.py index 880b838f8..8f7cd0dc2 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_acme.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_acme.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -268,9 +268,10 @@ def underscore_to_hyphen(data): def system_acme(data, fos): vdom = data["vdom"] system_acme_data = data["system_acme"] - filtered_data = underscore_to_hyphen(filter_system_acme_data(system_acme_data)) + filtered_data = filter_system_acme_data(system_acme_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "acme", data=filtered_data, vdom=vdom) + return fos.set("system", "acme", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_admin.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_admin.py index ac992d2ee..3e15ce662 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_admin.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_admin.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -904,7 +904,8 @@ def system_admin(data, fos, check_mode=False): state = data["state"] system_admin_data = data["system_admin"] - filtered_data = underscore_to_hyphen(filter_system_admin_data(system_admin_data)) + filtered_data = filter_system_admin_data(system_admin_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -968,7 +969,7 @@ def system_admin(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "admin", data=filtered_data, vdom=vdom) + return fos.set("system", "admin", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("system", "admin", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_affinity_interrupt.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_affinity_interrupt.py index 8513a3a40..ca038d049 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_affinity_interrupt.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_affinity_interrupt.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -228,12 +228,13 @@ def system_affinity_interrupt(data, fos): state = data["state"] system_affinity_interrupt_data = data["system_affinity_interrupt"] - filtered_data = underscore_to_hyphen( - filter_system_affinity_interrupt_data(system_affinity_interrupt_data) + filtered_data = filter_system_affinity_interrupt_data( + system_affinity_interrupt_data ) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: - return fos.set("system", "affinity-interrupt", data=filtered_data, vdom=vdom) + return fos.set("system", "affinity-interrupt", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_affinity_packet_redistribution.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_affinity_packet_redistribution.py index 449b38e3e..180d81671 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_affinity_packet_redistribution.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_affinity_packet_redistribution.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -243,15 +243,14 @@ def system_affinity_packet_redistribution(data, fos): system_affinity_packet_redistribution_data = data[ "system_affinity_packet_redistribution" ] - filtered_data = underscore_to_hyphen( - filter_system_affinity_packet_redistribution_data( - system_affinity_packet_redistribution_data - ) + filtered_data = filter_system_affinity_packet_redistribution_data( + system_affinity_packet_redistribution_data ) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: return fos.set( - "system", "affinity-packet-redistribution", data=filtered_data, vdom=vdom + "system", "affinity-packet-redistribution", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_alarm.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_alarm.py index 95dec2dcb..f590dfbd2 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_alarm.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_alarm.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -326,9 +326,10 @@ def underscore_to_hyphen(data): def system_alarm(data, fos): vdom = data["vdom"] system_alarm_data = data["system_alarm"] - filtered_data = underscore_to_hyphen(filter_system_alarm_data(system_alarm_data)) + filtered_data = filter_system_alarm_data(system_alarm_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "alarm", data=filtered_data, vdom=vdom) + return fos.set("system", "alarm", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_alias.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_alias.py index 1c9625ea3..0ba2c2a51 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_alias.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_alias.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -230,7 +230,8 @@ def system_alias(data, fos, check_mode=False): state = data["state"] system_alias_data = data["system_alias"] - filtered_data = underscore_to_hyphen(filter_system_alias_data(system_alias_data)) + filtered_data = filter_system_alias_data(system_alias_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -294,7 +295,7 @@ def system_alias(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "alias", data=filtered_data, vdom=vdom) + return fos.set("system", "alias", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("system", "alias", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_api_user.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_api_user.py index 35ed7120d..aaec1f1ec 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_api_user.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_api_user.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -320,9 +320,8 @@ def system_api_user(data, fos, check_mode=False): state = data["state"] system_api_user_data = data["system_api_user"] - filtered_data = underscore_to_hyphen( - filter_system_api_user_data(system_api_user_data) - ) + filtered_data = filter_system_api_user_data(system_api_user_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -386,7 +385,7 @@ def system_api_user(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "api-user", data=filtered_data, vdom=vdom) + return fos.set("system", "api-user", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("system", "api-user", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_arp_table.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_arp_table.py index 6bea2102d..e65543ca1 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_arp_table.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_arp_table.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -242,9 +242,8 @@ def system_arp_table(data, fos, check_mode=False): state = data["state"] system_arp_table_data = data["system_arp_table"] - filtered_data = underscore_to_hyphen( - filter_system_arp_table_data(system_arp_table_data) - ) + filtered_data = filter_system_arp_table_data(system_arp_table_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -308,7 +307,7 @@ def system_arp_table(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "arp-table", data=filtered_data, vdom=vdom) + return fos.set("system", "arp-table", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("system", "arp-table", mkey=filtered_data["id"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_auto_install.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_auto_install.py index 47a086983..1f0ef0325 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_auto_install.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_auto_install.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -228,11 +228,10 @@ def underscore_to_hyphen(data): def system_auto_install(data, fos): vdom = data["vdom"] system_auto_install_data = data["system_auto_install"] - filtered_data = underscore_to_hyphen( - filter_system_auto_install_data(system_auto_install_data) - ) + filtered_data = filter_system_auto_install_data(system_auto_install_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "auto-install", data=filtered_data, vdom=vdom) + return fos.set("system", "auto-install", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_auto_script.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_auto_script.py index cca20c843..38a30f09d 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_auto_script.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_auto_script.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -266,9 +266,8 @@ def system_auto_script(data, fos, check_mode=False): state = data["state"] system_auto_script_data = data["system_auto_script"] - filtered_data = underscore_to_hyphen( - filter_system_auto_script_data(system_auto_script_data) - ) + filtered_data = filter_system_auto_script_data(system_auto_script_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -332,7 +331,7 @@ def system_auto_script(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "auto-script", data=filtered_data, vdom=vdom) + return fos.set("system", "auto-script", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_automation_action.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_automation_action.py index 6f1e61dd4..c0b2b5411 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_automation_action.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_automation_action.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -656,9 +656,9 @@ def underscore_to_hyphen(data): def valid_attr_to_invalid_attr(data): - specillist = {"message": "fos_message"} + speciallist = {"message": "fos_message"} - for k, v in specillist.items(): + for k, v in speciallist.items(): if v == data: return k @@ -667,8 +667,11 @@ def valid_attr_to_invalid_attr(data): def valid_attr_to_invalid_attrs(data): if isinstance(data, list): + new_data = [] for elem in data: elem = valid_attr_to_invalid_attrs(elem) + new_data.append(elem) + data = new_data elif isinstance(data, dict): new_data = {} for k, v in data.items(): @@ -684,10 +687,8 @@ def system_automation_action(data, fos, check_mode=False): state = data["state"] system_automation_action_data = data["system_automation_action"] - filtered_data = underscore_to_hyphen( - filter_system_automation_action_data(system_automation_action_data) - ) - converted_data = valid_attr_to_invalid_attrs(filtered_data) + filtered_data = filter_system_automation_action_data(system_automation_action_data) + converted_data = underscore_to_hyphen(valid_attr_to_invalid_attrs(filtered_data)) # check_mode starts from here if check_mode: diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_automation_destination.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_automation_destination.py index 5520e0609..b6dbe36fc 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_automation_destination.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_automation_destination.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -252,9 +252,10 @@ def system_automation_destination(data, fos, check_mode=False): state = data["state"] system_automation_destination_data = data["system_automation_destination"] - filtered_data = underscore_to_hyphen( - filter_system_automation_destination_data(system_automation_destination_data) + filtered_data = filter_system_automation_destination_data( + system_automation_destination_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -321,7 +322,7 @@ def system_automation_destination(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "system", "automation-destination", data=filtered_data, vdom=vdom + "system", "automation-destination", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_automation_stitch.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_automation_stitch.py index 60f1f7f89..f3691e362 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_automation_stitch.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_automation_stitch.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -311,9 +311,8 @@ def system_automation_stitch(data, fos, check_mode=False): state = data["state"] system_automation_stitch_data = data["system_automation_stitch"] - filtered_data = underscore_to_hyphen( - filter_system_automation_stitch_data(system_automation_stitch_data) - ) + filtered_data = filter_system_automation_stitch_data(system_automation_stitch_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -377,7 +376,7 @@ def system_automation_stitch(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "automation-stitch", data=filtered_data, vdom=vdom) + return fos.set("system", "automation-stitch", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_automation_trigger.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_automation_trigger.py index 123cca8cf..114426715 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_automation_trigger.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_automation_trigger.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -448,9 +448,10 @@ def system_automation_trigger(data, fos, check_mode=False): state = data["state"] system_automation_trigger_data = data["system_automation_trigger"] - filtered_data = underscore_to_hyphen( - filter_system_automation_trigger_data(system_automation_trigger_data) + filtered_data = filter_system_automation_trigger_data( + system_automation_trigger_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -514,7 +515,7 @@ def system_automation_trigger(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "automation-trigger", data=filtered_data, vdom=vdom) + return fos.set("system", "automation-trigger", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_autoupdate_push_update.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_autoupdate_push_update.py index 5f83d51da..9ffb401f8 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_autoupdate_push_update.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_autoupdate_push_update.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -223,11 +223,12 @@ def underscore_to_hyphen(data): def system_autoupdate_push_update(data, fos): vdom = data["vdom"] system_autoupdate_push_update_data = data["system_autoupdate_push_update"] - filtered_data = underscore_to_hyphen( - filter_system_autoupdate_push_update_data(system_autoupdate_push_update_data) + filtered_data = filter_system_autoupdate_push_update_data( + system_autoupdate_push_update_data ) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system.autoupdate", "push-update", data=filtered_data, vdom=vdom) + return fos.set("system.autoupdate", "push-update", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_autoupdate_schedule.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_autoupdate_schedule.py index f6a5b3d76..fad0ce4a0 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_autoupdate_schedule.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_autoupdate_schedule.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -233,11 +233,12 @@ def underscore_to_hyphen(data): def system_autoupdate_schedule(data, fos): vdom = data["vdom"] system_autoupdate_schedule_data = data["system_autoupdate_schedule"] - filtered_data = underscore_to_hyphen( - filter_system_autoupdate_schedule_data(system_autoupdate_schedule_data) + filtered_data = filter_system_autoupdate_schedule_data( + system_autoupdate_schedule_data ) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system.autoupdate", "schedule", data=filtered_data, vdom=vdom) + return fos.set("system.autoupdate", "schedule", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_autoupdate_tunneling.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_autoupdate_tunneling.py index fcfa5218b..b88821f43 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_autoupdate_tunneling.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_autoupdate_tunneling.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -225,11 +225,12 @@ def underscore_to_hyphen(data): def system_autoupdate_tunneling(data, fos): vdom = data["vdom"] system_autoupdate_tunneling_data = data["system_autoupdate_tunneling"] - filtered_data = underscore_to_hyphen( - filter_system_autoupdate_tunneling_data(system_autoupdate_tunneling_data) + filtered_data = filter_system_autoupdate_tunneling_data( + system_autoupdate_tunneling_data ) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system.autoupdate", "tunneling", data=filtered_data, vdom=vdom) + return fos.set("system.autoupdate", "tunneling", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_central_management.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_central_management.py index 4ee9a808f..e062c650d 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_central_management.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_central_management.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -446,11 +446,12 @@ def system_central_management(data, fos): system_central_management_data = flatten_multilists_attributes( system_central_management_data ) - filtered_data = underscore_to_hyphen( - filter_system_central_management_data(system_central_management_data) + filtered_data = filter_system_central_management_data( + system_central_management_data ) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "central-management", data=filtered_data, vdom=vdom) + return fos.set("system", "central-management", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_cluster_sync.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_cluster_sync.py index e07446961..751fee999 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_cluster_sync.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_cluster_sync.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -400,9 +400,8 @@ def system_cluster_sync(data, fos, check_mode=False): state = data["state"] system_cluster_sync_data = data["system_cluster_sync"] - filtered_data = underscore_to_hyphen( - filter_system_cluster_sync_data(system_cluster_sync_data) - ) + filtered_data = filter_system_cluster_sync_data(system_cluster_sync_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -466,7 +465,7 @@ def system_cluster_sync(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "cluster-sync", data=filtered_data, vdom=vdom) + return fos.set("system", "cluster-sync", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_console.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_console.py index d6024d795..924d59a69 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_console.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_console.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -240,11 +240,10 @@ def underscore_to_hyphen(data): def system_console(data, fos): vdom = data["vdom"] system_console_data = data["system_console"] - filtered_data = underscore_to_hyphen( - filter_system_console_data(system_console_data) - ) + filtered_data = filter_system_console_data(system_console_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "console", data=filtered_data, vdom=vdom) + return fos.set("system", "console", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -279,17 +278,6 @@ versioned_schema = { "v_range": [["v6.0.0", ""]], "type": "dict", "children": { - "baudrate": { - "v_range": [["v6.0.0", ""]], - "type": "string", - "options": [ - {"value": "9600"}, - {"value": "19200"}, - {"value": "38400"}, - {"value": "57600"}, - {"value": "115200"}, - ], - }, "output": { "v_range": [["v6.0.0", ""]], "type": "string", @@ -305,6 +293,17 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "baudrate": { + "v_range": [["v6.0.0", "v7.4.1"]], + "type": "string", + "options": [ + {"value": "9600"}, + {"value": "19200"}, + {"value": "38400"}, + {"value": "57600"}, + {"value": "115200"}, + ], + }, "mode": { "v_range": [["v6.0.0", "v7.4.0"]], "type": "string", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_csf.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_csf.py index 5fabacb2c..b45a7662e 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_csf.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_csf.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -310,6 +310,10 @@ options: description: - Serial. type: str + uid: + description: + - Unique ID of the current CSF node + type: str upstream: description: - IP/FQDN of the FortiGate upstream from this FortiGate in the Security Fabric. @@ -376,6 +380,7 @@ EXAMPLES = """ index: "0" name: "default_name_44" serial: "<your_own_value>" + uid: "<your_own_value>" upstream: "<your_own_value>" upstream_ip: "<your_own_value>" upstream_port: "8013" @@ -485,6 +490,7 @@ def filter_system_csf_data(json): "saml_configuration_sync", "status", "trusted_list", + "uid", "upstream", "upstream_ip", "upstream_port", @@ -546,9 +552,10 @@ def system_csf(data, fos): vdom = data["vdom"] system_csf_data = data["system_csf"] system_csf_data = flatten_multilists_attributes(system_csf_data) - filtered_data = underscore_to_hyphen(filter_system_csf_data(system_csf_data)) + filtered_data = filter_system_csf_data(system_csf_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "csf", data=filtered_data, vdom=vdom) + return fos.set("system", "csf", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -588,6 +595,7 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "uid": {"v_range": [["v7.4.2", ""]], "type": "string"}, "upstream": {"v_range": [["v7.0.2", ""]], "type": "string"}, "upstream_port": {"v_range": [["v6.0.0", ""]], "type": "integer"}, "group_name": {"v_range": [["v6.0.0", ""]], "type": "string"}, diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_custom_language.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_custom_language.py index 07c26ba1f..a9e3c7595 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_custom_language.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_custom_language.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -235,9 +235,8 @@ def system_custom_language(data, fos, check_mode=False): state = data["state"] system_custom_language_data = data["system_custom_language"] - filtered_data = underscore_to_hyphen( - filter_system_custom_language_data(system_custom_language_data) - ) + filtered_data = filter_system_custom_language_data(system_custom_language_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -301,7 +300,7 @@ def system_custom_language(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "custom-language", data=filtered_data, vdom=vdom) + return fos.set("system", "custom-language", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ddns.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ddns.py index c9b288a75..addc1ccee 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ddns.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ddns.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -394,7 +394,8 @@ def system_ddns(data, fos, check_mode=False): state = data["state"] system_ddns_data = data["system_ddns"] - filtered_data = underscore_to_hyphen(filter_system_ddns_data(system_ddns_data)) + filtered_data = filter_system_ddns_data(system_ddns_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -458,7 +459,7 @@ def system_ddns(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "ddns", data=filtered_data, vdom=vdom) + return fos.set("system", "ddns", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("system", "ddns", mkey=filtered_data["ddnsid"], vdom=vdom) @@ -517,6 +518,11 @@ versioned_schema = { {"value": "noip.com"}, ], }, + "addr_type": { + "v_range": [["v7.0.0", ""]], + "type": "string", + "options": [{"value": "ipv4"}, {"value": "ipv6"}], + }, "server_type": { "v_range": [["v7.0.0", ""]], "type": "string", @@ -552,11 +558,6 @@ versioned_schema = { "type": "string", "options": [{"value": "disable"}, {"value": "enable"}], }, - "addr_type": { - "v_range": [["v7.0.0", ""]], - "type": "string", - "options": [{"value": "ipv4"}, {"value": "ipv6"}], - }, "update_interval": {"v_range": [["v6.0.0", ""]], "type": "integer"}, "clear_text": { "v_range": [["v6.0.0", ""]], diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_dedicated_mgmt.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_dedicated_mgmt.py index 9ccd23b3b..738ad0bd8 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_dedicated_mgmt.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_dedicated_mgmt.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -246,11 +246,10 @@ def underscore_to_hyphen(data): def system_dedicated_mgmt(data, fos): vdom = data["vdom"] system_dedicated_mgmt_data = data["system_dedicated_mgmt"] - filtered_data = underscore_to_hyphen( - filter_system_dedicated_mgmt_data(system_dedicated_mgmt_data) - ) + filtered_data = filter_system_dedicated_mgmt_data(system_dedicated_mgmt_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "dedicated-mgmt", data=filtered_data, vdom=vdom) + return fos.set("system", "dedicated-mgmt", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_device_upgrade.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_device_upgrade.py index 091908c9a..8caa221e4 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_device_upgrade.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_device_upgrade.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -93,6 +93,7 @@ options: - Fortinet device type. type: str choices: + - 'fortigate' - 'fortiswitch' - 'fortiap' - 'fortiextender' @@ -117,6 +118,21 @@ options: - 'config-error-log-nonempty' - 'csf-tree-not-supported' - 'node-failed' + ha_reboot_controller: + description: + - Serial number of the FortiGate unit that will control the reboot process for the federated upgrade of the HA cluster. + type: str + known_ha_members: + description: + - Known members of the HA cluster. If a member is missing at upgrade time, the upgrade will be cancelled. + type: list + elements: dict + suboptions: + serial: + description: + - Serial number of HA member + required: true + type: str maximum_minutes: description: - Maximum number of minutes to allow for immediate upgrade preparation. @@ -172,8 +188,12 @@ EXAMPLES = """ state: "present" access_token: "<your_own_value>" system_device_upgrade: - device_type: "fortiswitch" + device_type: "fortigate" failure_reason: "none" + ha_reboot_controller: "<your_own_value>" + known_ha_members: + - + serial: "<your_own_value>" maximum_minutes: "15" serial: "<your_own_value>" setup_time: "<your_own_value>" @@ -266,6 +286,8 @@ def filter_system_device_upgrade_data(json): option_list = [ "device_type", "failure_reason", + "ha_reboot_controller", + "known_ha_members", "maximum_minutes", "serial", "setup_time", @@ -304,12 +326,11 @@ def system_device_upgrade(data, fos): state = data["state"] system_device_upgrade_data = data["system_device_upgrade"] - filtered_data = underscore_to_hyphen( - filter_system_device_upgrade_data(system_device_upgrade_data) - ) + filtered_data = filter_system_device_upgrade_data(system_device_upgrade_data) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: - return fos.set("system", "device-upgrade", data=filtered_data, vdom=vdom) + return fos.set("system", "device-upgrade", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( @@ -365,6 +386,7 @@ versioned_schema = { "v_range": [["v7.2.4", ""]], "type": "string", "options": [ + {"value": "fortigate", "v_range": [["v7.4.2", ""]]}, {"value": "fortiswitch"}, {"value": "fortiap"}, {"value": "fortiextender"}, @@ -411,6 +433,19 @@ versioned_schema = { {"value": "node-failed"}, ], }, + "ha_reboot_controller": {"v_range": [["v7.4.2", ""]], "type": "string"}, + "known_ha_members": { + "type": "list", + "elements": "dict", + "children": { + "serial": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "required": True, + } + }, + "v_range": [["v7.4.2", ""]], + }, }, "v_range": [["v7.2.4", ""]], } diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_dhcp6_server.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_dhcp6_server.py index b1d64e836..f49f7edb4 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_dhcp6_server.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_dhcp6_server.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -417,9 +417,8 @@ def system_dhcp6_server(data, fos, check_mode=False): state = data["state"] system_dhcp6_server_data = data["system_dhcp6_server"] - filtered_data = underscore_to_hyphen( - filter_system_dhcp6_server_data(system_dhcp6_server_data) - ) + filtered_data = filter_system_dhcp6_server_data(system_dhcp6_server_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -483,7 +482,7 @@ def system_dhcp6_server(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system.dhcp6", "server", data=filtered_data, vdom=vdom) + return fos.set("system.dhcp6", "server", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("system.dhcp6", "server", mkey=filtered_data["id"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_dhcp_server.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_dhcp_server.py index ef55a21b3..38d5f8a4f 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_dhcp_server.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_dhcp_server.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -549,7 +549,7 @@ options: type: str timezone: description: - - Select the time zone to be assigned to DHCP clients. + - Select the time zone to be assigned to DHCP clients. Source system.timezone.name. type: str choices: - '01' @@ -1014,9 +1014,8 @@ def system_dhcp_server(data, fos, check_mode=False): system_dhcp_server_data = data["system_dhcp_server"] system_dhcp_server_data = flatten_multilists_attributes(system_dhcp_server_data) - filtered_data = underscore_to_hyphen( - filter_system_dhcp_server_data(system_dhcp_server_data) - ) + filtered_data = filter_system_dhcp_server_data(system_dhcp_server_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -1080,7 +1079,7 @@ def system_dhcp_server(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system.dhcp", "server", data=filtered_data, vdom=vdom) + return fos.set("system.dhcp", "server", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("system.dhcp", "server", mkey=filtered_data["id"], vdom=vdom) @@ -1232,94 +1231,94 @@ versioned_schema = { "v_range": [["v6.0.0", ""]], "type": "string", "options": [ - {"value": "01"}, - {"value": "02"}, - {"value": "03"}, - {"value": "04"}, - {"value": "05"}, - {"value": "81"}, - {"value": "06"}, - {"value": "07"}, - {"value": "08"}, - {"value": "09"}, - {"value": "10"}, - {"value": "11"}, - {"value": "12"}, - {"value": "13"}, - {"value": "74"}, - {"value": "14"}, - {"value": "77"}, - {"value": "15"}, - {"value": "87"}, - {"value": "16"}, - {"value": "17"}, - {"value": "18"}, - {"value": "19"}, - {"value": "20"}, - {"value": "75"}, - {"value": "21"}, - {"value": "22"}, - {"value": "23"}, - {"value": "24"}, - {"value": "80"}, - {"value": "79"}, - {"value": "25"}, - {"value": "26"}, - {"value": "27"}, - {"value": "28"}, - {"value": "78"}, - {"value": "29"}, - {"value": "30"}, - {"value": "31"}, - {"value": "32"}, - {"value": "33"}, - {"value": "34"}, - {"value": "35"}, - {"value": "36"}, - {"value": "37"}, - {"value": "38"}, - {"value": "83"}, - {"value": "84"}, - {"value": "40"}, - {"value": "85"}, - {"value": "39"}, - {"value": "41"}, - {"value": "42"}, - {"value": "43"}, - {"value": "44"}, - {"value": "45"}, - {"value": "46"}, - {"value": "47"}, - {"value": "51"}, - {"value": "48"}, - {"value": "49"}, - {"value": "50"}, - {"value": "52"}, - {"value": "53"}, - {"value": "54"}, - {"value": "55"}, - {"value": "56"}, - {"value": "57"}, - {"value": "58"}, - {"value": "59"}, - {"value": "60"}, - {"value": "61"}, - {"value": "62"}, - {"value": "63"}, - {"value": "64"}, - {"value": "65"}, - {"value": "66"}, - {"value": "67"}, - {"value": "68"}, - {"value": "69"}, - {"value": "70"}, - {"value": "71"}, - {"value": "72"}, - {"value": "00"}, - {"value": "82"}, - {"value": "73"}, - {"value": "86"}, - {"value": "76"}, + {"value": "01", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "02", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "03", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "04", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "05", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "81", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "06", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "07", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "08", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "09", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "10", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "11", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "12", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "13", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "74", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "14", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "77", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "15", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "87", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "16", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "17", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "18", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "19", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "20", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "75", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "21", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "22", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "23", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "24", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "80", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "79", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "25", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "26", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "27", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "28", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "78", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "29", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "30", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "31", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "32", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "33", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "34", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "35", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "36", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "37", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "38", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "83", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "84", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "40", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "85", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "39", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "41", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "42", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "43", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "44", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "45", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "46", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "47", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "51", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "48", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "49", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "50", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "52", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "53", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "54", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "55", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "56", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "57", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "58", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "59", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "60", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "61", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "62", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "63", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "64", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "65", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "66", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "67", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "68", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "69", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "70", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "71", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "72", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "00", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "82", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "73", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "86", "v_range": [["v6.0.0", "v7.4.1"]]}, + {"value": "76", "v_range": [["v6.0.0", "v7.4.1"]]}, ], }, "tftp_server": { diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_dns.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_dns.py index 4a6bbcb4f..1c8400943 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_dns.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_dns.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -413,9 +413,10 @@ def system_dns(data, fos): vdom = data["vdom"] system_dns_data = data["system_dns"] system_dns_data = flatten_multilists_attributes(system_dns_data) - filtered_data = underscore_to_hyphen(filter_system_dns_data(system_dns_data)) + filtered_data = filter_system_dns_data(system_dns_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "dns", data=filtered_data, vdom=vdom) + return fos.set("system", "dns", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_dns64.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_dns64.py index eac6ad65a..79bfb9cc8 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_dns64.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_dns64.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -218,9 +218,10 @@ def underscore_to_hyphen(data): def system_dns64(data, fos): vdom = data["vdom"] system_dns64_data = data["system_dns64"] - filtered_data = underscore_to_hyphen(filter_system_dns64_data(system_dns64_data)) + filtered_data = filter_system_dns64_data(system_dns64_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "dns64", data=filtered_data, vdom=vdom) + return fos.set("system", "dns64", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_dns_database.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_dns_database.py index 5bf067739..1a6aa161a 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_dns_database.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_dns_database.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -439,9 +439,8 @@ def system_dns_database(data, fos, check_mode=False): system_dns_database_data = data["system_dns_database"] system_dns_database_data = flatten_multilists_attributes(system_dns_database_data) - filtered_data = underscore_to_hyphen( - filter_system_dns_database_data(system_dns_database_data) - ) + filtered_data = filter_system_dns_database_data(system_dns_database_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -505,7 +504,7 @@ def system_dns_database(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "dns-database", data=filtered_data, vdom=vdom) + return fos.set("system", "dns-database", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_dns_server.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_dns_server.py index d12995beb..e9b5cfec5 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_dns_server.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_dns_server.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -263,9 +263,8 @@ def system_dns_server(data, fos, check_mode=False): state = data["state"] system_dns_server_data = data["system_dns_server"] - filtered_data = underscore_to_hyphen( - filter_system_dns_server_data(system_dns_server_data) - ) + filtered_data = filter_system_dns_server_data(system_dns_server_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -329,7 +328,7 @@ def system_dns_server(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "dns-server", data=filtered_data, vdom=vdom) + return fos.set("system", "dns-server", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("system", "dns-server", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_dscp_based_priority.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_dscp_based_priority.py index 3a68444fb..890e40df0 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_dscp_based_priority.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_dscp_based_priority.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -241,9 +241,10 @@ def system_dscp_based_priority(data, fos, check_mode=False): state = data["state"] system_dscp_based_priority_data = data["system_dscp_based_priority"] - filtered_data = underscore_to_hyphen( - filter_system_dscp_based_priority_data(system_dscp_based_priority_data) + filtered_data = filter_system_dscp_based_priority_data( + system_dscp_based_priority_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -307,7 +308,7 @@ def system_dscp_based_priority(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "dscp-based-priority", data=filtered_data, vdom=vdom) + return fos.set("system", "dscp-based-priority", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_email_server.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_email_server.py index f01c8c544..4d55d8518 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_email_server.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_email_server.py @@ -39,7 +39,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -308,11 +308,10 @@ def underscore_to_hyphen(data): def system_email_server(data, fos): vdom = data["vdom"] system_email_server_data = data["system_email_server"] - filtered_data = underscore_to_hyphen( - filter_system_email_server_data(system_email_server_data) - ) + filtered_data = filter_system_email_server_data(system_email_server_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "email-server", data=filtered_data, vdom=vdom) + return fos.set("system", "email-server", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_evpn.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_evpn.py index fef5bdb27..543d27c8b 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_evpn.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_evpn.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -274,10 +274,11 @@ def system_evpn(data, fos): state = data["state"] system_evpn_data = data["system_evpn"] - filtered_data = underscore_to_hyphen(filter_system_evpn_data(system_evpn_data)) + filtered_data = filter_system_evpn_data(system_evpn_data) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: - return fos.set("system", "evpn", data=filtered_data, vdom=vdom) + return fos.set("system", "evpn", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("system", "evpn", mkey=filtered_data["id"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_external_resource.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_external_resource.py index 1fb156cfc..ca231074f 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_external_resource.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_external_resource.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -154,6 +154,7 @@ options: - 'domain' - 'malware' - 'mac-address' + - 'data' update_method: description: - External resource update method. @@ -337,9 +338,8 @@ def system_external_resource(data, fos, check_mode=False): state = data["state"] system_external_resource_data = data["system_external_resource"] - filtered_data = underscore_to_hyphen( - filter_system_external_resource_data(system_external_resource_data) - ) + filtered_data = filter_system_external_resource_data(system_external_resource_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -403,7 +403,7 @@ def system_external_resource(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "external-resource", data=filtered_data, vdom=vdom) + return fos.set("system", "external-resource", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( @@ -464,6 +464,7 @@ versioned_schema = { {"value": "domain"}, {"value": "malware", "v_range": [["v6.2.0", ""]]}, {"value": "mac-address", "v_range": [["v7.4.0", ""]]}, + {"value": "data", "v_range": [["v7.4.2", ""]]}, ], }, "update_method": { diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_fabric_vpn.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_fabric_vpn.py index e82f3643f..e0b62afa9 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_fabric_vpn.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_fabric_vpn.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -429,11 +429,10 @@ def system_fabric_vpn(data, fos): vdom = data["vdom"] system_fabric_vpn_data = data["system_fabric_vpn"] system_fabric_vpn_data = flatten_multilists_attributes(system_fabric_vpn_data) - filtered_data = underscore_to_hyphen( - filter_system_fabric_vpn_data(system_fabric_vpn_data) - ) + filtered_data = filter_system_fabric_vpn_data(system_fabric_vpn_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "fabric-vpn", data=filtered_data, vdom=vdom) + return fos.set("system", "fabric-vpn", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_federated_upgrade.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_federated_upgrade.py index 0c683b26c..73dd6ba40 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_federated_upgrade.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_federated_upgrade.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -109,6 +109,17 @@ options: description: - Serial number of the FortiGate unit that will control the reboot process for the federated upgrade of the HA cluster. type: str + known_ha_members: + description: + - Known members of the HA cluster. If a member is missing at upgrade time, the upgrade will be cancelled. + type: list + elements: dict + suboptions: + serial: + description: + - Serial number of HA member + required: true + type: str next_path_index: description: - The index of the next image to upgrade to. @@ -193,6 +204,9 @@ EXAMPLES = """ failure_device: "<your_own_value>" failure_reason: "none" ha_reboot_controller: "<your_own_value>" + known_ha_members: + - + serial: "<your_own_value>" next_path_index: "0" node_list: - @@ -292,6 +306,7 @@ def filter_system_federated_upgrade_data(json): "failure_device", "failure_reason", "ha_reboot_controller", + "known_ha_members", "next_path_index", "node_list", "status", @@ -324,11 +339,10 @@ def underscore_to_hyphen(data): def system_federated_upgrade(data, fos): vdom = data["vdom"] system_federated_upgrade_data = data["system_federated_upgrade"] - filtered_data = underscore_to_hyphen( - filter_system_federated_upgrade_data(system_federated_upgrade_data) - ) + filtered_data = filter_system_federated_upgrade_data(system_federated_upgrade_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "federated-upgrade", data=filtered_data, vdom=vdom) + return fos.set("system", "federated-upgrade", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -411,6 +425,18 @@ versioned_schema = { "upgrade_id": {"v_range": [["v7.0.0", ""]], "type": "integer"}, "next_path_index": {"v_range": [["v7.0.4", ""]], "type": "integer"}, "ha_reboot_controller": {"v_range": [["v7.4.0", ""]], "type": "string"}, + "known_ha_members": { + "type": "list", + "elements": "dict", + "children": { + "serial": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "required": True, + } + }, + "v_range": [["v7.4.2", ""]], + }, "node_list": { "type": "list", "elements": "dict", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_fips_cc.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_fips_cc.py index 3feeec573..7f200f90d 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_fips_cc.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_fips_cc.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -232,11 +232,10 @@ def underscore_to_hyphen(data): def system_fips_cc(data, fos): vdom = data["vdom"] system_fips_cc_data = data["system_fips_cc"] - filtered_data = underscore_to_hyphen( - filter_system_fips_cc_data(system_fips_cc_data) - ) + filtered_data = filter_system_fips_cc_data(system_fips_cc_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "fips-cc", data=filtered_data, vdom=vdom) + return fos.set("system", "fips-cc", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_fm.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_fm.py index 26d875516..3175a942b 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_fm.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_fm.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -252,9 +252,10 @@ def underscore_to_hyphen(data): def system_fm(data, fos): vdom = data["vdom"] system_fm_data = data["system_fm"] - filtered_data = underscore_to_hyphen(filter_system_fm_data(system_fm_data)) + filtered_data = filter_system_fm_data(system_fm_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "fm", data=filtered_data, vdom=vdom) + return fos.set("system", "fm", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_fortiai.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_fortiai.py index b06398f9f..0202b83fa 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_fortiai.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_fortiai.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -224,11 +224,10 @@ def underscore_to_hyphen(data): def system_fortiai(data, fos): vdom = data["vdom"] system_fortiai_data = data["system_fortiai"] - filtered_data = underscore_to_hyphen( - filter_system_fortiai_data(system_fortiai_data) - ) + filtered_data = filter_system_fortiai_data(system_fortiai_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "fortiai", data=filtered_data, vdom=vdom) + return fos.set("system", "fortiai", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_fortiguard.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_fortiguard.py index 1faf14d6c..8ac457935 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_fortiguard.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_fortiguard.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -698,11 +698,10 @@ def system_fortiguard(data, fos): vdom = data["vdom"] system_fortiguard_data = data["system_fortiguard"] system_fortiguard_data = flatten_multilists_attributes(system_fortiguard_data) - filtered_data = underscore_to_hyphen( - filter_system_fortiguard_data(system_fortiguard_data) - ) + filtered_data = filter_system_fortiguard_data(system_fortiguard_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "fortiguard", data=filtered_data, vdom=vdom) + return fos.set("system", "fortiguard", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_fortimanager.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_fortimanager.py index 2bdfae1c6..4391dbb92 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_fortimanager.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_fortimanager.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -255,11 +255,10 @@ def underscore_to_hyphen(data): def system_fortimanager(data, fos): vdom = data["vdom"] system_fortimanager_data = data["system_fortimanager"] - filtered_data = underscore_to_hyphen( - filter_system_fortimanager_data(system_fortimanager_data) - ) + filtered_data = filter_system_fortimanager_data(system_fortimanager_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "fortimanager", data=filtered_data, vdom=vdom) + return fos.set("system", "fortimanager", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_fortindr.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_fortindr.py index e460aa910..666617a8e 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_fortindr.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_fortindr.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -224,11 +224,10 @@ def underscore_to_hyphen(data): def system_fortindr(data, fos): vdom = data["vdom"] system_fortindr_data = data["system_fortindr"] - filtered_data = underscore_to_hyphen( - filter_system_fortindr_data(system_fortindr_data) - ) + filtered_data = filter_system_fortindr_data(system_fortindr_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "fortindr", data=filtered_data, vdom=vdom) + return fos.set("system", "fortindr", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_fortisandbox.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_fortisandbox.py index f3e2e86a6..bcd31fadb 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_fortisandbox.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_fortisandbox.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -282,11 +282,10 @@ def underscore_to_hyphen(data): def system_fortisandbox(data, fos): vdom = data["vdom"] system_fortisandbox_data = data["system_fortisandbox"] - filtered_data = underscore_to_hyphen( - filter_system_fortisandbox_data(system_fortisandbox_data) - ) + filtered_data = filter_system_fortisandbox_data(system_fortisandbox_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "fortisandbox", data=filtered_data, vdom=vdom) + return fos.set("system", "fortisandbox", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_fsso_polling.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_fsso_polling.py index 25e6dc747..e36bb55aa 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_fsso_polling.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_fsso_polling.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -223,11 +223,10 @@ def underscore_to_hyphen(data): def system_fsso_polling(data, fos): vdom = data["vdom"] system_fsso_polling_data = data["system_fsso_polling"] - filtered_data = underscore_to_hyphen( - filter_system_fsso_polling_data(system_fsso_polling_data) - ) + filtered_data = filter_system_fsso_polling_data(system_fsso_polling_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "fsso-polling", data=filtered_data, vdom=vdom) + return fos.set("system", "fsso-polling", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ftm_push.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ftm_push.py index ee1a109db..1b739163e 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ftm_push.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ftm_push.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -240,11 +240,10 @@ def underscore_to_hyphen(data): def system_ftm_push(data, fos): vdom = data["vdom"] system_ftm_push_data = data["system_ftm_push"] - filtered_data = underscore_to_hyphen( - filter_system_ftm_push_data(system_ftm_push_data) - ) + filtered_data = filter_system_ftm_push_data(system_ftm_push_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "ftm-push", data=filtered_data, vdom=vdom) + return fos.set("system", "ftm-push", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_geneve.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_geneve.py index f265df516..29fe00424 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_geneve.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_geneve.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -275,7 +275,8 @@ def system_geneve(data, fos, check_mode=False): state = data["state"] system_geneve_data = data["system_geneve"] - filtered_data = underscore_to_hyphen(filter_system_geneve_data(system_geneve_data)) + filtered_data = filter_system_geneve_data(system_geneve_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -339,7 +340,7 @@ def system_geneve(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "geneve", data=filtered_data, vdom=vdom) + return fos.set("system", "geneve", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("system", "geneve", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_geoip_country.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_geoip_country.py index 94f57bf81..36f459774 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_geoip_country.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_geoip_country.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -230,9 +230,8 @@ def system_geoip_country(data, fos, check_mode=False): state = data["state"] system_geoip_country_data = data["system_geoip_country"] - filtered_data = underscore_to_hyphen( - filter_system_geoip_country_data(system_geoip_country_data) - ) + filtered_data = filter_system_geoip_country_data(system_geoip_country_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -296,7 +295,7 @@ def system_geoip_country(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "geoip-country", data=filtered_data, vdom=vdom) + return fos.set("system", "geoip-country", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_geoip_override.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_geoip_override.py index 67169ad4d..15a47d604 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_geoip_override.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_geoip_override.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -283,9 +283,8 @@ def system_geoip_override(data, fos, check_mode=False): state = data["state"] system_geoip_override_data = data["system_geoip_override"] - filtered_data = underscore_to_hyphen( - filter_system_geoip_override_data(system_geoip_override_data) - ) + filtered_data = filter_system_geoip_override_data(system_geoip_override_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -349,7 +348,7 @@ def system_geoip_override(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "geoip-override", data=filtered_data, vdom=vdom) + return fos.set("system", "geoip-override", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_gi_gk.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_gi_gk.py index 0a6ea42b3..870d4ce7c 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_gi_gk.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_gi_gk.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -207,9 +207,10 @@ def underscore_to_hyphen(data): def system_gi_gk(data, fos): vdom = data["vdom"] system_gi_gk_data = data["system_gi_gk"] - filtered_data = underscore_to_hyphen(filter_system_gi_gk_data(system_gi_gk_data)) + filtered_data = filter_system_gi_gk_data(system_gi_gk_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "gi-gk", data=filtered_data, vdom=vdom) + return fos.set("system", "gi-gk", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -241,15 +242,15 @@ def fortios_system(data, fos): versioned_schema = { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "dict", "children": { "context": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "integer", }, "port": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "integer", }, }, diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_global.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_global.py index d7ec79eb3..419429593 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_global.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_global.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -204,7 +204,7 @@ options: - 'disable' admin_scp: description: - - Enable/disable using SCP to download the system configuration. You can use SCP as an alternative method for backing up the configuration. + - Enable/disable SCP support for system configuration backup, restore, and firmware file upload. type: str choices: - 'enable' @@ -355,6 +355,10 @@ options: choices: - 'enable' - 'disable' + bfd_affinity: + description: + - Affinity setting for BFD daemon (hexadecimal value up to 256 bits in the format of xxxxxxxxxxxxxxxx). + type: str block_session_timer: description: - Duration in seconds for blocked sessions (1 - 300 sec (5 minutes)). @@ -603,6 +607,13 @@ options: choices: - 'enable' - 'disable' + fortigslb_integration: + description: + - Enable/disable integration with the FortiGSLB cloud service. + type: str + choices: + - 'disable' + - 'enable' fortiipam_integration: description: - Enable/disable integration with the FortiIPAM cloud service. @@ -1233,6 +1244,20 @@ options: description: - Proxy worker count. type: int + purdue_level: + description: + - Purdue Level of this FortiGate. + type: str + choices: + - '1' + - '1.5' + - '2' + - '2.5' + - '3' + - '3.5' + - '4' + - '5' + - '5.5' quic_ack_thresold: description: - Maximum number of unacknowledged packets before sending ACK (2 - 5). @@ -1364,11 +1389,43 @@ options: choices: - 'enable' - 'disable' + speedtestd_ctrl_port: + description: + - Speedtest server controller port number. + type: int + speedtestd_server_port: + description: + - Speedtest server port number. + type: int split_port: description: - Split port(s) to multiple 10Gbps ports. type: list elements: str + split_port_mode: + description: + - Configure split port mode of ports. + type: list + elements: dict + suboptions: + interface: + description: + - Split port interface. + required: true + type: str + split_mode: + description: + - The configuration mode for the split port interface. + type: str + choices: + - 'disable' + - '4x10G' + - '4x25G' + - '4x50G' + - '8x25G' + - '8x50G' + - '4x100G' + - '2x200G' ssd_trim_date: description: - Date within a month to run ssd trim. @@ -1439,6 +1496,10 @@ options: choices: - 'enable' - 'disable' + ssh_hostkey: + description: + - Config SSH host key. + type: str ssh_hostkey_algo: description: - Select one or more SSH hostkey algorithms. @@ -1447,9 +1508,22 @@ options: choices: - 'ssh-rsa' - 'ecdsa-sha2-nistp521' + - 'ecdsa-sha2-nistp384' + - 'ecdsa-sha2-nistp256' - 'rsa-sha2-256' - 'rsa-sha2-512' - 'ssh-ed25519' + ssh_hostkey_override: + description: + - Enable/disable SSH host key override in SSH daemon. + type: str + choices: + - 'disable' + - 'enable' + ssh_hostkey_password: + description: + - Password for ssh-hostkey. + type: str ssh_kex_algo: description: - Select one or more SSH kex algorithms. @@ -1630,98 +1704,8 @@ options: - 'disable' timezone: description: - - Number corresponding to your time zone from 00 to 86. Enter set timezone ? to view the list of time zones and the numbers that represent - them. - type: str - choices: - - '01' - - '02' - - '03' - - '04' - - '05' - - '81' - - '06' - - '07' - - '08' - - '09' - - '10' - - '11' - - '12' - - '13' - - '74' - - '14' - - '77' - - '15' - - '87' - - '16' - - '17' - - '18' - - '19' - - '20' - - '75' - - '21' - - '22' - - '23' - - '24' - - '80' - - '79' - - '25' - - '26' - - '27' - - '28' - - '78' - - '29' - - '30' - - '31' - - '32' - - '33' - - '34' - - '35' - - '36' - - '37' - - '38' - - '83' - - '84' - - '40' - - '85' - - '39' - - '41' - - '42' - - '43' - - '44' - - '45' - - '46' - - '47' - - '51' - - '48' - - '49' - - '50' - - '52' - - '53' - - '54' - - '55' - - '56' - - '57' - - '58' - - '59' - - '60' - - '61' - - '62' - - '63' - - '64' - - '65' - - '66' - - '67' - - '68' - - '69' - - '70' - - '71' - - '72' - - '00' - - '82' - - '73' - - '86' - - '76' + - Timezone database name. Enter ? to view the list of timezone. Source system.timezone.name. + type: str tp_mc_skip_policy: description: - Enable/disable skip policy check and allow multicast through. @@ -1825,6 +1809,13 @@ options: choices: - 'disable' - 'enable' + virtual_switch_vlan: + description: + - Enable/disable virtual switch VLAN. + type: str + choices: + - 'enable' + - 'disable' vpn_ems_sn_check: description: - Enable/disable verification of EMS serial number in SSL-VPN and IPsec VPN connection. @@ -1954,6 +1945,7 @@ EXAMPLES = """ av_failopen: "pass" av_failopen_session: "enable" batch_cmdb: "enable" + bfd_affinity: "<your_own_value>" block_session_timer: "30" br_fdb_max_entry: "8192" cert_chain_max: "8" @@ -1995,6 +1987,7 @@ EXAMPLES = """ fortiextender_discovery_lockdown: "disable" fortiextender_provision_on_authorization: "enable" fortiextender_vlan_mode: "enable" + fortigslb_integration: "disable" fortiipam_integration: "enable" fortiservice_port: "8013" fortitoken_cloud: "enable" @@ -2034,7 +2027,7 @@ EXAMPLES = """ internet_service_database: "mini" internet_service_download_list: - - id: "126 (source firewall.internet-service.id)" + id: "128 (source firewall.internet-service.id)" interval: "5" ip_fragment_mem_thresholds: "32" ip_src_port_range: "<your_own_value>" @@ -2065,7 +2058,7 @@ EXAMPLES = """ management_port: "443" management_port_use_admin_sport: "enable" management_vdom: "<your_own_value> (source system.vdom.name)" - max_dlpstat_memory: "157" + max_dlpstat_memory: "159" max_route_cache_size: "0" mc_ttl_notchange: "enable" memory_use_threshold_extreme: "95" @@ -2095,6 +2088,7 @@ EXAMPLES = """ proxy_re_authentication_time: "30" proxy_resource_mode: "enable" proxy_worker_count: "0" + purdue_level: "1" quic_ack_thresold: "3" quic_congestion_control_algo: "cubic" quic_max_datagram_size: "1500" @@ -2117,7 +2111,13 @@ EXAMPLES = """ snat_route_change: "enable" special_file_23_support: "disable" speedtest_server: "enable" + speedtestd_ctrl_port: "5200" + speedtestd_server_port: "5201" split_port: "<your_own_value>" + split_port_mode: + - + interface: "<your_own_value>" + split_mode: "disable" ssd_trim_date: "1" ssd_trim_freq: "never" ssd_trim_hour: "1" @@ -2126,7 +2126,10 @@ EXAMPLES = """ ssh_cbc_cipher: "enable" ssh_enc_algo: "chacha20-poly1305@openssh.com" ssh_hmac_md5: "enable" + ssh_hostkey: "myhostname" ssh_hostkey_algo: "ssh-rsa" + ssh_hostkey_override: "disable" + ssh_hostkey_password: "myhostname" ssh_kex_algo: "diffie-hellman-group1-sha1" ssh_kex_sha1: "enable" ssh_mac_algo: "hmac-md5" @@ -2151,7 +2154,7 @@ EXAMPLES = """ tcp_rst_timer: "5" tcp_timewait_timer: "1" tftp: "enable" - timezone: "01" + timezone: "<your_own_value> (source system.timezone.name)" tp_mc_skip_policy: "enable" traffic_priority: "tos" traffic_priority_level: "low" @@ -2163,15 +2166,16 @@ EXAMPLES = """ udp_idle_timer: "180" url_filter_affinity: "<your_own_value>" url_filter_count: "1" - user_device_store_max_devices: "20921" - user_device_store_max_unified_mem: "104609177" - user_device_store_max_users: "20921" + user_device_store_max_devices: "20911" + user_device_store_max_unified_mem: "104558182" + user_device_store_max_users: "20911" user_server_cert: "<your_own_value> (source certificate.local.name)" vdom_admin: "enable" vdom_mode: "no-vdom" vip_arp_range: "unlimited" virtual_server_count: "20" virtual_server_hardware_acceleration: "disable" + virtual_switch_vlan: "enable" vpn_ems_sn_check: "enable" wad_affinity: "<your_own_value>" wad_csvc_cs_count: "1" @@ -2314,6 +2318,7 @@ def filter_system_global_data(json): "av_failopen", "av_failopen_session", "batch_cmdb", + "bfd_affinity", "block_session_timer", "br_fdb_max_entry", "cert_chain_max", @@ -2355,6 +2360,7 @@ def filter_system_global_data(json): "fortiextender_discovery_lockdown", "fortiextender_provision_on_authorization", "fortiextender_vlan_mode", + "fortigslb_integration", "fortiipam_integration", "fortiservice_port", "fortitoken_cloud", @@ -2453,6 +2459,7 @@ def filter_system_global_data(json): "proxy_re_authentication_time", "proxy_resource_mode", "proxy_worker_count", + "purdue_level", "quic_ack_thresold", "quic_congestion_control_algo", "quic_max_datagram_size", @@ -2475,7 +2482,10 @@ def filter_system_global_data(json): "snat_route_change", "special_file_23_support", "speedtest_server", + "speedtestd_ctrl_port", + "speedtestd_server_port", "split_port", + "split_port_mode", "ssd_trim_date", "ssd_trim_freq", "ssd_trim_hour", @@ -2484,7 +2494,10 @@ def filter_system_global_data(json): "ssh_cbc_cipher", "ssh_enc_algo", "ssh_hmac_md5", + "ssh_hostkey", "ssh_hostkey_algo", + "ssh_hostkey_override", + "ssh_hostkey_password", "ssh_kex_algo", "ssh_kex_sha1", "ssh_mac_algo", @@ -2530,6 +2543,7 @@ def filter_system_global_data(json): "vip_arp_range", "virtual_server_count", "virtual_server_hardware_acceleration", + "virtual_switch_vlan", "vpn_ems_sn_check", "wad_affinity", "wad_csvc_cs_count", @@ -2611,9 +2625,10 @@ def system_global(data, fos): vdom = data["vdom"] system_global_data = data["system_global"] system_global_data = flatten_multilists_attributes(system_global_data) - filtered_data = underscore_to_hyphen(filter_system_global_data(system_global_data)) + filtered_data = filter_system_global_data(system_global_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "global", data=filtered_data, vdom=vdom) + return fos.set("system", "global", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -2789,32 +2804,41 @@ versioned_schema = { "admintimeout": {"v_range": [["v6.0.0", ""]], "type": "integer"}, "admin_console_timeout": {"v_range": [["v6.0.0", ""]], "type": "integer"}, "ssd_trim_freq": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [ - {"value": "never"}, - {"value": "hourly"}, - {"value": "daily"}, - {"value": "weekly"}, - {"value": "monthly"}, + {"value": "never", "v_range": [["v6.0.0", ""]]}, + {"value": "hourly", "v_range": [["v6.0.0", ""]]}, + {"value": "daily", "v_range": [["v6.0.0", ""]]}, + {"value": "weekly", "v_range": [["v6.0.0", ""]]}, + {"value": "monthly", "v_range": [["v6.0.0", ""]]}, ], }, - "ssd_trim_hour": {"v_range": [["v6.0.0", ""]], "type": "integer"}, - "ssd_trim_min": {"v_range": [["v6.0.0", ""]], "type": "integer"}, + "ssd_trim_hour": { + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], + "type": "integer", + }, + "ssd_trim_min": { + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], + "type": "integer", + }, "ssd_trim_weekday": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [ - {"value": "sunday"}, - {"value": "monday"}, - {"value": "tuesday"}, - {"value": "wednesday"}, - {"value": "thursday"}, - {"value": "friday"}, - {"value": "saturday"}, + {"value": "sunday", "v_range": [["v6.0.0", ""]]}, + {"value": "monday", "v_range": [["v6.0.0", ""]]}, + {"value": "tuesday", "v_range": [["v6.0.0", ""]]}, + {"value": "wednesday", "v_range": [["v6.0.0", ""]]}, + {"value": "thursday", "v_range": [["v6.0.0", ""]]}, + {"value": "friday", "v_range": [["v6.0.0", ""]]}, + {"value": "saturday", "v_range": [["v6.0.0", ""]]}, ], }, - "ssd_trim_date": {"v_range": [["v6.0.0", ""]], "type": "integer"}, + "ssd_trim_date": { + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], + "type": "integer", + }, "admin_concurrent": { "v_range": [["v6.0.0", ""]], "type": "string", @@ -2825,6 +2849,21 @@ versioned_schema = { "refresh": {"v_range": [["v6.0.0", ""]], "type": "integer"}, "interval": {"v_range": [["v6.0.0", ""]], "type": "integer"}, "failtime": {"v_range": [["v6.0.0", ""]], "type": "integer"}, + "purdue_level": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [ + {"value": "1"}, + {"value": "1.5"}, + {"value": "2"}, + {"value": "2.5"}, + {"value": "3"}, + {"value": "3.5"}, + {"value": "4"}, + {"value": "5"}, + {"value": "5.5"}, + ], + }, "daily_restart": { "v_range": [["v6.0.0", ""]], "type": "string", @@ -2839,6 +2878,8 @@ versioned_schema = { "wad_restart_start_time": {"v_range": [["v7.2.4", ""]], "type": "string"}, "wad_restart_end_time": {"v_range": [["v7.2.4", ""]], "type": "string"}, "radius_port": {"v_range": [["v6.0.0", ""]], "type": "integer"}, + "speedtestd_server_port": {"v_range": [["v7.4.2", ""]], "type": "integer"}, + "speedtestd_ctrl_port": {"v_range": [["v7.4.2", ""]], "type": "integer"}, "admin_login_max": {"v_range": [["v6.0.0", ""]], "type": "integer"}, "remoteauthtimeout": {"v_range": [["v6.0.0", ""]], "type": "integer"}, "ldapconntimeout": {"v_range": [["v6.0.0", ""]], "type": "integer"}, @@ -2868,100 +2909,7 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, - "timezone": { - "v_range": [["v6.0.0", ""]], - "type": "string", - "options": [ - {"value": "01"}, - {"value": "02"}, - {"value": "03"}, - {"value": "04"}, - {"value": "05"}, - {"value": "81"}, - {"value": "06"}, - {"value": "07"}, - {"value": "08"}, - {"value": "09"}, - {"value": "10"}, - {"value": "11"}, - {"value": "12"}, - {"value": "13"}, - {"value": "74"}, - {"value": "14"}, - {"value": "77"}, - {"value": "15"}, - {"value": "87"}, - {"value": "16"}, - {"value": "17"}, - {"value": "18"}, - {"value": "19"}, - {"value": "20"}, - {"value": "75"}, - {"value": "21"}, - {"value": "22"}, - {"value": "23"}, - {"value": "24"}, - {"value": "80"}, - {"value": "79"}, - {"value": "25"}, - {"value": "26"}, - {"value": "27"}, - {"value": "28"}, - {"value": "78"}, - {"value": "29"}, - {"value": "30"}, - {"value": "31"}, - {"value": "32"}, - {"value": "33"}, - {"value": "34"}, - {"value": "35"}, - {"value": "36"}, - {"value": "37"}, - {"value": "38"}, - {"value": "83"}, - {"value": "84"}, - {"value": "40"}, - {"value": "85"}, - {"value": "39"}, - {"value": "41"}, - {"value": "42"}, - {"value": "43"}, - {"value": "44"}, - {"value": "45"}, - {"value": "46"}, - {"value": "47"}, - {"value": "51"}, - {"value": "48"}, - {"value": "49"}, - {"value": "50"}, - {"value": "52"}, - {"value": "53"}, - {"value": "54"}, - {"value": "55"}, - {"value": "56"}, - {"value": "57"}, - {"value": "58"}, - {"value": "59"}, - {"value": "60"}, - {"value": "61"}, - {"value": "62"}, - {"value": "63"}, - {"value": "64"}, - {"value": "65"}, - {"value": "66"}, - {"value": "67"}, - {"value": "68"}, - {"value": "69"}, - {"value": "70"}, - {"value": "71"}, - {"value": "72"}, - {"value": "00"}, - {"value": "82"}, - {"value": "73"}, - {"value": "86"}, - {"value": "76"}, - ], - }, + "timezone": {"v_range": [["v6.0.0", ""]], "type": "string"}, "traffic_priority": { "v_range": [["v6.0.0", ""]], "type": "string", @@ -3112,6 +3060,8 @@ versioned_schema = { "options": [ {"value": "ssh-rsa"}, {"value": "ecdsa-sha2-nistp521"}, + {"value": "ecdsa-sha2-nistp384", "v_range": [["v7.4.2", ""]]}, + {"value": "ecdsa-sha2-nistp256", "v_range": [["v7.4.2", ""]]}, {"value": "rsa-sha2-256"}, {"value": "rsa-sha2-512"}, {"value": "ssh-ed25519"}, @@ -3119,6 +3069,13 @@ versioned_schema = { "multiple_values": True, "elements": "str", }, + "ssh_hostkey_override": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "disable"}, {"value": "enable"}], + }, + "ssh_hostkey_password": {"v_range": [["v7.4.2", ""]], "type": "string"}, + "ssh_hostkey": {"v_range": [["v7.4.2", ""]], "type": "string"}, "snat_route_change": { "v_range": [["v6.0.0", ""]], "type": "string", @@ -3536,10 +3493,14 @@ versioned_schema = { }, "arp_max_entry": {"v_range": [["v6.0.0", ""]], "type": "integer"}, "ha_affinity": {"v_range": [["v7.0.1", ""]], "type": "string"}, + "bfd_affinity": {"v_range": [["v7.4.2", ""]], "type": "string"}, "cmdbsvr_affinity": {"v_range": [["v7.0.1", ""]], "type": "string"}, "av_affinity": {"v_range": [["v6.0.0", ""]], "type": "string"}, "wad_affinity": {"v_range": [["v6.0.0", ""]], "type": "string"}, - "ips_affinity": {"v_range": [["v6.0.0", ""]], "type": "string"}, + "ips_affinity": { + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], + "type": "string", + }, "miglog_affinity": {"v_range": [["v6.0.0", ""]], "type": "string"}, "syslog_affinity": {"v_range": [["v7.2.4", ""]], "type": "string"}, "url_filter_affinity": {"v_range": [["v6.2.0", ""]], "type": "string"}, @@ -3568,11 +3529,6 @@ versioned_schema = { }, ], }, - "ipsec_soft_dec_async": { - "v_range": [["v6.0.0", ""]], - "type": "string", - "options": [{"value": "enable"}, {"value": "disable"}], - }, "device_idle_timeout": {"v_range": [["v6.0.0", ""]], "type": "integer"}, "user_device_store_max_devices": { "v_range": [["v6.4.4", ""]], @@ -3705,8 +3661,13 @@ versioned_schema = { "options": [{"value": "disable"}, {"value": "enable"}], }, "sflowd_max_children_num": {"v_range": [["v7.2.4", ""]], "type": "integer"}, + "fortigslb_integration": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "disable"}, {"value": "enable"}], + }, "split_port": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "list", "multiple_values": True, "elements": "str", @@ -3745,6 +3706,42 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "virtual_switch_vlan": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "split_port_mode": { + "type": "list", + "elements": "dict", + "children": { + "interface": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "required": True, + }, + "split_mode": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "disable"}, + {"value": "4x10G"}, + {"value": "4x25G"}, + {"value": "4x50G"}, + {"value": "8x25G"}, + {"value": "8x50G"}, + {"value": "4x100G"}, + {"value": "2x200G"}, + ], + }, + }, + "v_range": [["v7.4.2", "v7.4.2"]], + }, + "ipsec_soft_dec_async": { + "v_range": [["v6.0.0", "v7.4.1"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "gui_allow_default_hostname": { "v_range": [["v6.2.0", "v7.4.0"]], "type": "string", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_gre_tunnel.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_gre_tunnel.py index a1bdf2013..3cdee19e7 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_gre_tunnel.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_gre_tunnel.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -88,6 +88,13 @@ options: default: null type: dict suboptions: + auto_asic_offload: + description: + - Enable/disable automatic ASIC offloading. + type: str + choices: + - 'enable' + - 'disable' checksum_reception: description: - Enable/disable validating checksums in received GRE packets. @@ -191,6 +198,7 @@ EXAMPLES = """ state: "present" access_token: "<your_own_value>" system_gre_tunnel: + auto_asic_offload: "enable" checksum_reception: "disable" checksum_transmission: "disable" diffservcode: "<your_own_value>" @@ -203,7 +211,7 @@ EXAMPLES = """ key_outbound: "0" local_gw: "<your_own_value>" local_gw6: "<your_own_value>" - name: "default_name_15" + name: "default_name_16" remote_gw: "<your_own_value>" remote_gw6: "<your_own_value>" sequence_number_reception: "disable" @@ -301,6 +309,7 @@ from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.compariso def filter_system_gre_tunnel_data(json): option_list = [ + "auto_asic_offload", "checksum_reception", "checksum_transmission", "diffservcode", @@ -350,9 +359,8 @@ def system_gre_tunnel(data, fos, check_mode=False): state = data["state"] system_gre_tunnel_data = data["system_gre_tunnel"] - filtered_data = underscore_to_hyphen( - filter_system_gre_tunnel_data(system_gre_tunnel_data) - ) + filtered_data = filter_system_gre_tunnel_data(system_gre_tunnel_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -416,7 +424,7 @@ def system_gre_tunnel(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "gre-tunnel", data=filtered_data, vdom=vdom) + return fos.set("system", "gre-tunnel", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("system", "gre-tunnel", mkey=filtered_data["name"], vdom=vdom) @@ -577,6 +585,11 @@ versioned_schema = { "diffservcode": {"v_range": [["v6.2.0", ""]], "type": "string"}, "keepalive_interval": {"v_range": [["v6.0.0", ""]], "type": "integer"}, "keepalive_failtimes": {"v_range": [["v6.0.0", ""]], "type": "integer"}, + "auto_asic_offload": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, }, "v_range": [["v6.0.0", ""]], } diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ha.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ha.py index af4bb8263..adf6f5586 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ha.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ha.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -225,6 +225,27 @@ options: choices: - 'enable' - 'disable' + ipsec_phase2_proposal: + description: + - IPsec phase2 proposal. + type: list + elements: str + choices: + - 'aes128-sha1' + - 'aes128-sha256' + - 'aes128-sha384' + - 'aes128-sha512' + - 'aes192-sha1' + - 'aes192-sha256' + - 'aes192-sha384' + - 'aes192-sha512' + - 'aes256-sha1' + - 'aes256-sha256' + - 'aes256-sha384' + - 'aes256-sha512' + - 'aes128gcm' + - 'aes256gcm' + - 'chacha20poly1305' key: description: - Key. @@ -607,6 +628,10 @@ options: description: - Remote IP monitoring failover threshold (0 - 50). type: int + pingserver_flip_timeout: + description: + - Time to wait in minutes before renegotiating after a remote IP monitoring failover. + type: int pingserver_monitor_interface: description: - Interfaces to check for remote IP monitoring. Source system.interface.name. @@ -710,6 +735,7 @@ EXAMPLES = """ http_proxy_threshold: "<your_own_value>" imap_proxy_threshold: "<your_own_value>" inter_cluster_session_sync: "enable" + ipsec_phase2_proposal: "aes128-sha1" key: "<your_own_value>" l2ep_eth_type: "<your_own_value>" link_failed_signal: "enable" @@ -769,7 +795,7 @@ EXAMPLES = """ unicast_hb_peerip: "<your_own_value>" unicast_peers: - - id: "91" + id: "92" peer_ip: "<your_own_value>" unicast_status: "enable" uninterruptible_primary_wait: "30" @@ -781,6 +807,7 @@ EXAMPLES = """ override: "enable" override_wait_time: "0" pingserver_failover_threshold: "0" + pingserver_flip_timeout: "60" pingserver_monitor_interface: "<your_own_value> (source system.interface.name)" pingserver_secondary_force_reset: "enable" pingserver_slave_force_reset: "enable" @@ -788,7 +815,7 @@ EXAMPLES = """ vcluster_id: "<you_own_value>" vdom: - - name: "default_name_108 (source system.vdom.name)" + name: "default_name_110 (source system.vdom.name)" vcluster_id: "0" vcluster_status: "enable" vcluster2: "enable" @@ -902,6 +929,7 @@ def filter_system_ha_data(json): "http_proxy_threshold", "imap_proxy_threshold", "inter_cluster_session_sync", + "ipsec_phase2_proposal", "key", "l2ep_eth_type", "link_failed_signal", @@ -998,6 +1026,7 @@ def flatten_multilists_attributes(data): ["pingserver_monitor_interface"], ["vcluster", "monitor"], ["vcluster", "pingserver_monitor_interface"], + ["ipsec_phase2_proposal"], ["secondary_vcluster", "monitor"], ["secondary_vcluster", "pingserver_monitor_interface"], ] @@ -1025,9 +1054,10 @@ def system_ha(data, fos): vdom = data["vdom"] system_ha_data = data["system_ha"] system_ha_data = flatten_multilists_attributes(system_ha_data) - filtered_data = underscore_to_hyphen(filter_system_ha_data(system_ha_data)) + filtered_data = filter_system_ha_data(system_ha_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "ha", data=filtered_data, vdom=vdom) + return fos.set("system", "ha", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -1377,6 +1407,10 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "pingserver_flip_timeout": { + "v_range": [["v7.4.2", ""]], + "type": "integer", + }, "vdom": { "type": "list", "elements": "dict", @@ -1403,9 +1437,12 @@ versioned_schema = { "options": [{"value": "enable"}, {"value": "disable"}], }, "ssd_failover": { - "v_range": [["v6.2.0", ""]], + "v_range": [["v6.2.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", - "options": [{"value": "enable"}, {"value": "disable"}], + "options": [ + {"value": "enable", "v_range": [["v6.2.0", ""]]}, + {"value": "disable", "v_range": [["v6.2.0", ""]]}, + ], }, "memory_compatible_mode": { "v_range": [["v6.0.0", ""]], @@ -1428,6 +1465,29 @@ versioned_schema = { "type": "integer", }, "failover_hold_time": {"v_range": [["v7.0.0", ""]], "type": "integer"}, + "ipsec_phase2_proposal": { + "v_range": [["v7.4.2", ""]], + "type": "list", + "options": [ + {"value": "aes128-sha1"}, + {"value": "aes128-sha256"}, + {"value": "aes128-sha384"}, + {"value": "aes128-sha512"}, + {"value": "aes192-sha1"}, + {"value": "aes192-sha256"}, + {"value": "aes192-sha384"}, + {"value": "aes192-sha512"}, + {"value": "aes256-sha1"}, + {"value": "aes256-sha256"}, + {"value": "aes256-sha384"}, + {"value": "aes256-sha512"}, + {"value": "aes128gcm"}, + {"value": "aes256gcm"}, + {"value": "chacha20poly1305"}, + ], + "multiple_values": True, + "elements": "str", + }, "uninterruptible_upgrade": { "v_range": [["v6.0.0", "v7.4.0"]], "type": "string", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ha_monitor.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ha_monitor.py index e3f8b92f2..0acadf59c 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ha_monitor.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ha_monitor.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -215,11 +215,10 @@ def underscore_to_hyphen(data): def system_ha_monitor(data, fos): vdom = data["vdom"] system_ha_monitor_data = data["system_ha_monitor"] - filtered_data = underscore_to_hyphen( - filter_system_ha_monitor_data(system_ha_monitor_data) - ) + filtered_data = filter_system_ha_monitor_data(system_ha_monitor_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "ha-monitor", data=filtered_data, vdom=vdom) + return fos.set("system", "ha-monitor", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ike.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ike.py index b7ceac35e..69b42f962 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ike.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ike.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -745,9 +745,10 @@ def underscore_to_hyphen(data): def system_ike(data, fos): vdom = data["vdom"] system_ike_data = data["system_ike"] - filtered_data = underscore_to_hyphen(filter_system_ike_data(system_ike_data)) + filtered_data = filter_system_ike_data(system_ike_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "ike", data=filtered_data, vdom=vdom) + return fos.set("system", "ike", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_interface.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_interface.py index a1ee1706b..ae4f0e1d0 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_interface.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_interface.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -690,6 +690,16 @@ options: description: - Transparent mode forward domain. type: int + forward_error_correction: + description: + - Configure forward error correction (FEC). + type: str + choices: + - 'none' + - 'disable' + - 'cl91-rs-fec' + - 'cl74-fc-fec' + - 'auto' gi_gk: description: - Enable/disable Gi Gatekeeper. @@ -763,6 +773,14 @@ options: description: - Ingress Spillover threshold (0 - 16776000 kbps), 0 means unlimited. type: int + interconnect_profile: + description: + - Set interconnect profile. + type: str + choices: + - 'default' + - 'profile1' + - 'profile2' interface: description: - Interface name. Source system.interface.name. @@ -1201,6 +1219,13 @@ options: description: - Advertisement interval (1 - 255 seconds). type: int + ignore_default_route: + description: + - Enable/disable ignoring of default route when checking destination. + type: str + choices: + - 'enable' + - 'disable' preempt: description: - Enable/disable preempt mode. @@ -1358,6 +1383,21 @@ options: - Select SFP media interface type type: str choices: + - 'none' + - 'gmii' + - 'sgmii' + - 'sr' + - 'lr' + - 'cr' + - 'sr2' + - 'lr2' + - 'cr2' + - 'sr4' + - 'lr4' + - 'cr4' + - 'sr8' + - 'lr8' + - 'cr8' - 'cfp2-sr10' - 'cfp2-lr4' member: @@ -1382,6 +1422,43 @@ options: choices: - 'operational' - 'administrative' + mirroring_direction: + description: + - Port mirroring direction. + type: str + choices: + - 'rx' + - 'tx' + - 'both' + mirroring_filter: + description: + - Mirroring filter. + type: dict + suboptions: + filter_dport: + description: + - Destinatin port of mirroring filter. + type: int + filter_dstip: + description: + - Destinatin IP and mask of mirroring filter. + type: str + filter_protocol: + description: + - Protocol of mirroring filter. + type: int + filter_sport: + description: + - Source port of mirroring filter. + type: int + filter_srcip: + description: + - Source IP and mask of mirroring filter. + type: str + mirroring_port: + description: + - Mirroring port. Source system.interface.name. + type: str mode: description: - Addressing mode (static, DHCP, PPPoE). @@ -1436,6 +1513,10 @@ options: - 'tx' - 'rx' - 'both' + np_qos_profile: + description: + - NP QoS profile ID. + type: int outbandwidth: description: - Bandwidth limit for outgoing traffic (0 - 80000000 kbps). @@ -1456,6 +1537,13 @@ options: description: - sFlow polling interval in seconds (1 - 255). type: int + port_mirroring: + description: + - Enable/disable NP port mirroring. + type: str + choices: + - 'disable' + - 'enable' pppoe_unnumbered_negotiate: description: - Enable/disable PPPoE unnumbered negotiation. @@ -1648,6 +1736,30 @@ options: - DHCP relay IP address. type: list elements: str + security_8021x_dynamic_vlan_id: + description: + - VLAN ID for virtual switch. + type: int + security_8021x_master: + description: + - 802.1X master virtual-switch. + type: str + security_8021x_member_mode: + description: + - 802.1X member mode. + type: str + choices: + - 'switch' + - 'disable' + security_8021x_mode: + description: + - 802.1X mode. + type: str + choices: + - 'default' + - 'dynamic-vlan' + - 'fallback' + - 'slave' security_exempt_list: description: - Name of security-exempt-list. @@ -1722,7 +1834,19 @@ options: - '10000auto' - '40000full' - '40000auto' + - '100auto' + - '2500auto' + - '5000auto' + - '25000full' + - '25000auto' + - '50000full' + - '50000auto' - '100Gfull' + - '100Gauto' + - '200Gfull' + - '200Gauto' + - '400Gfull' + - '400Gauto' - '1000half' spillover_threshold: description: @@ -1749,6 +1873,13 @@ options: choices: - 'disable' - 'enable' + stp_edge: + description: + - Enable/disable as STP edge port. + type: str + choices: + - 'disable' + - 'enable' stp_ha_secondary: description: - Control STP behavior on HA secondary. @@ -1987,6 +2118,13 @@ options: description: - TCP maximum segment size. 0 means do not change segment size. type: int + trunk: + description: + - Enable/disable VLAN trunk. + type: str + choices: + - 'enable' + - 'disable' trust_ip_1: description: - Trusted host for dedicated management traffic (0.0.0.0/24 for all hosts). @@ -2295,6 +2433,7 @@ EXAMPLES = """ fortilink_split_interface: "enable" fortilink_stacking: "enable" forward_domain: "0" + forward_error_correction: "none" gi_gk: "enable" gwdetect: "enable" ha_priority: "1" @@ -2307,6 +2446,7 @@ EXAMPLES = """ ingress_cos: "disable" ingress_shaping_profile: "<your_own_value> (source firewall.shaping-profile.profile-name)" ingress_spillover_threshold: "0" + interconnect_profile: "default" interface: "<your_own_value> (source system.interface.name)" internal: "0" ip: "<your_own_value>" @@ -2336,7 +2476,7 @@ EXAMPLES = """ dhcp6_relay_source_ip: "<your_own_value>" dhcp6_relay_type: "regular" icmp6_send_redirect: "enable" - interface_identifier: "myId_145" + interface_identifier: "myId_147" ip6_address: "<your_own_value>" ip6_allowaccess: "ping" ip6_default_life: "1800" @@ -2393,6 +2533,7 @@ EXAMPLES = """ - accept_mode: "enable" adv_interval: "1" + ignore_default_route: "enable" preempt: "enable" priority: "100" start_time: "3" @@ -2415,30 +2556,40 @@ EXAMPLES = """ macaddr: "<your_own_value>" managed_device: - - name: "default_name_218" + name: "default_name_221" managed_subnetwork_size: "32" management_ip: "<your_own_value>" measured_downstream_bandwidth: "0" measured_upstream_bandwidth: "0" - mediatype: "cfp2-sr10" + mediatype: "none" member: - interface_name: "<your_own_value> (source system.interface.name)" min_links: "1" min_links_down: "operational" + mirroring_direction: "rx" + mirroring_filter: + filter_dport: "0" + filter_dstip: "<your_own_value>" + filter_protocol: "0" + filter_sport: "0" + filter_srcip: "<your_own_value>" + mirroring_port: "<your_own_value> (source system.interface.name)" mode: "static" monitor_bandwidth: "enable" mtu: "1500" mtu_override: "enable" - name: "default_name_232" + name: "default_name_243" ndiscforward: "enable" netbios_forward: "disable" netflow_sampler: "disable" + np_qos_profile: "0" outbandwidth: "0" padt_retry_timeout: "1" password: "<your_own_value>" ping_serv_status: "0" polling_interval: "20" + port_mirroring: "disable" pppoe_unnumbered_negotiate: "enable" pptp_auth_type: "auto" pptp_client: "enable" @@ -2468,16 +2619,20 @@ EXAMPLES = """ detectserver: "<your_own_value>" gwdetect: "enable" ha_priority: "1" - id: "269" + id: "282" ip: "<your_own_value>" ping_serv_status: "0" secip_relay_ip: "<your_own_value>" + security_8021x_dynamic_vlan_id: "0" + security_8021x_master: "<your_own_value>" + security_8021x_member_mode: "switch" + security_8021x_mode: "default" security_exempt_list: "<your_own_value>" security_external_logout: "<your_own_value>" security_external_web: "<your_own_value>" security_groups: - - name: "default_name_277 (source user.group.name)" + name: "default_name_294 (source user.group.name)" security_mac_auth_bypass: "mac-auth-only" security_mode: "none" security_redirect_url: "<your_own_value>" @@ -2489,6 +2644,7 @@ EXAMPLES = """ src_check: "enable" status: "up" stp: "disable" + stp_edge: "disable" stp_ha_secondary: "disable" stp_ha_slave: "disable" stpforward: "enable" @@ -2525,11 +2681,12 @@ EXAMPLES = """ tagging: - category: "<your_own_value> (source system.object-tagging.category)" - name: "default_name_324" + name: "default_name_342" tags: - - name: "default_name_326 (source system.object-tagging.tags.name)" + name: "default_name_344 (source system.object-tagging.tags.name)" tcp_mss: "0" + trunk: "enable" trust_ip_1: "<your_own_value>" trust_ip_2: "<your_own_value>" trust_ip_3: "<your_own_value>" @@ -2553,7 +2710,7 @@ EXAMPLES = """ priority: "100" proxy_arp: - - id: "349" + id: "368" ip: "<your_own_value>" start_time: "3" status: "enable" @@ -2745,6 +2902,7 @@ def filter_system_interface_data(json): "fortilink_split_interface", "fortilink_stacking", "forward_domain", + "forward_error_correction", "gi_gk", "gwdetect", "ha_priority", @@ -2757,6 +2915,7 @@ def filter_system_interface_data(json): "ingress_cos", "ingress_shaping_profile", "ingress_spillover_threshold", + "interconnect_profile", "interface", "internal", "ip", @@ -2786,6 +2945,9 @@ def filter_system_interface_data(json): "member", "min_links", "min_links_down", + "mirroring_direction", + "mirroring_filter", + "mirroring_port", "mode", "monitor_bandwidth", "mtu", @@ -2794,11 +2956,13 @@ def filter_system_interface_data(json): "ndiscforward", "netbios_forward", "netflow_sampler", + "np_qos_profile", "outbandwidth", "padt_retry_timeout", "password", "ping_serv_status", "polling_interval", + "port_mirroring", "pppoe_unnumbered_negotiate", "pptp_auth_type", "pptp_client", @@ -2822,6 +2986,10 @@ def filter_system_interface_data(json): "scan_botnet_connections", "secondary_IP", "secondaryip", + "security_8021x_dynamic_vlan_id", + "security_8021x_master", + "security_8021x_member_mode", + "security_8021x_mode", "security_exempt_list", "security_external_logout", "security_external_web", @@ -2837,6 +3005,7 @@ def filter_system_interface_data(json): "src_check", "status", "stp", + "stp_edge", "stp_ha_secondary", "stp_ha_slave", "stpforward", @@ -2872,6 +3041,7 @@ def filter_system_interface_data(json): "system_id_type", "tagging", "tcp_mss", + "trunk", "trust_ip_1", "trust_ip_2", "trust_ip_3", @@ -2967,9 +3137,8 @@ def system_interface(data, fos, check_mode=False): system_interface_data = data["system_interface"] system_interface_data = flatten_multilists_attributes(system_interface_data) - filtered_data = underscore_to_hyphen( - filter_system_interface_data(system_interface_data) - ) + filtered_data = filter_system_interface_data(system_interface_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -3033,7 +3202,7 @@ def system_interface(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "interface", data=filtered_data, vdom=vdom) + return fos.set("system", "interface", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("system", "interface", mkey=filtered_data["name"], vdom=vdom) @@ -3416,14 +3585,27 @@ versioned_schema = { {"value": "10000auto"}, {"value": "40000full"}, {"value": "40000auto", "v_range": [["v7.4.0", ""]]}, + {"value": "100auto", "v_range": [["v7.4.2", "v7.4.2"]]}, + {"value": "2500auto", "v_range": [["v7.4.2", "v7.4.2"]]}, + {"value": "5000auto", "v_range": [["v7.4.2", "v7.4.2"]]}, + {"value": "25000full", "v_range": [["v7.4.2", "v7.4.2"]]}, + {"value": "25000auto", "v_range": [["v7.4.2", "v7.4.2"]]}, + {"value": "50000full", "v_range": [["v7.4.2", "v7.4.2"]]}, + {"value": "50000auto", "v_range": [["v7.4.2", "v7.4.2"]]}, { "value": "100Gfull", "v_range": [ ["v6.0.0", "v6.2.7"], ["v6.4.1", "v7.0.12"], ["v7.2.1", "v7.2.4"], + ["v7.4.2", "v7.4.2"], ], }, + {"value": "100Gauto", "v_range": [["v7.4.2", "v7.4.2"]]}, + {"value": "200Gfull", "v_range": [["v7.4.2", "v7.4.2"]]}, + {"value": "200Gauto", "v_range": [["v7.4.2", "v7.4.2"]]}, + {"value": "400Gfull", "v_range": [["v7.4.2", "v7.4.2"]]}, + {"value": "400Gauto", "v_range": [["v7.4.2", "v7.4.2"]]}, {"value": "1000half", "v_range": [["v6.0.0", "v7.0.3"]]}, ], }, @@ -3466,6 +3648,7 @@ versioned_schema = { ["v6.0.0", "v6.2.7"], ["v6.4.1", "v7.0.12"], ["v7.2.1", "v7.2.4"], + ["v7.4.2", "v7.4.2"], ], }, ], @@ -4375,6 +4558,11 @@ versioned_schema = { "multiple_values": True, "elements": "str", }, + "ignore_default_route": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "status": { "v_range": [["v6.0.0", ""]], "type": "string", @@ -4412,20 +4600,31 @@ versioned_schema = { }, }, }, + "gi_gk": { + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "sw_algorithm": { - "v_range": [["v7.2.0", "v7.2.0"], ["v7.4.0", ""]], + "v_range": [["v7.2.0", "v7.2.0"], ["v7.4.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "l2"}, {"value": "l3"}, {"value": "eh"}], }, "egress_queues": { - "v_range": [["v6.4.0", "v6.4.0"], ["v7.2.0", "v7.2.0"], ["v7.4.0", ""]], + "v_range": [ + ["v6.4.0", "v6.4.0"], + ["v7.2.0", "v7.2.0"], + ["v7.4.0", "v7.4.1"], + ["v7.4.3", ""], + ], "type": "dict", "children": { "cos0": { "v_range": [ ["v6.4.0", "v6.4.0"], ["v7.2.0", "v7.2.0"], - ["v7.4.0", ""], + ["v7.4.0", "v7.4.1"], + ["v7.4.3", ""], ], "type": "string", }, @@ -4433,7 +4632,8 @@ versioned_schema = { "v_range": [ ["v6.4.0", "v6.4.0"], ["v7.2.0", "v7.2.0"], - ["v7.4.0", ""], + ["v7.4.0", "v7.4.1"], + ["v7.4.3", ""], ], "type": "string", }, @@ -4441,7 +4641,8 @@ versioned_schema = { "v_range": [ ["v6.4.0", "v6.4.0"], ["v7.2.0", "v7.2.0"], - ["v7.4.0", ""], + ["v7.4.0", "v7.4.1"], + ["v7.4.3", ""], ], "type": "string", }, @@ -4449,7 +4650,8 @@ versioned_schema = { "v_range": [ ["v6.4.0", "v6.4.0"], ["v7.2.0", "v7.2.0"], - ["v7.4.0", ""], + ["v7.4.0", "v7.4.1"], + ["v7.4.3", ""], ], "type": "string", }, @@ -4457,7 +4659,8 @@ versioned_schema = { "v_range": [ ["v6.4.0", "v6.4.0"], ["v7.2.0", "v7.2.0"], - ["v7.4.0", ""], + ["v7.4.0", "v7.4.1"], + ["v7.4.3", ""], ], "type": "string", }, @@ -4465,7 +4668,8 @@ versioned_schema = { "v_range": [ ["v6.4.0", "v6.4.0"], ["v7.2.0", "v7.2.0"], - ["v7.4.0", ""], + ["v7.4.0", "v7.4.1"], + ["v7.4.3", ""], ], "type": "string", }, @@ -4473,7 +4677,8 @@ versioned_schema = { "v_range": [ ["v6.4.0", "v6.4.0"], ["v7.2.0", "v7.2.0"], - ["v7.4.0", ""], + ["v7.4.0", "v7.4.1"], + ["v7.4.3", ""], ], "type": "string", }, @@ -4481,14 +4686,20 @@ versioned_schema = { "v_range": [ ["v6.4.0", "v6.4.0"], ["v7.2.0", "v7.2.0"], - ["v7.4.0", ""], + ["v7.4.0", "v7.4.1"], + ["v7.4.3", ""], ], "type": "string", }, }, }, "ingress_cos": { - "v_range": [["v6.4.0", "v6.4.0"], ["v7.2.0", "v7.2.0"], ["v7.4.0", ""]], + "v_range": [ + ["v6.4.0", "v6.4.0"], + ["v7.2.0", "v7.2.0"], + ["v7.4.0", "v7.4.1"], + ["v7.4.3", ""], + ], "type": "string", "options": [ {"value": "disable"}, @@ -4503,7 +4714,12 @@ versioned_schema = { ], }, "egress_cos": { - "v_range": [["v6.4.0", "v6.4.0"], ["v7.2.0", "v7.2.0"], ["v7.4.0", ""]], + "v_range": [ + ["v6.4.0", "v6.4.0"], + ["v7.2.0", "v7.2.0"], + ["v7.4.0", "v7.4.1"], + ["v7.4.3", ""], + ], "type": "string", "options": [ {"value": "disable"}, @@ -4517,32 +4733,89 @@ versioned_schema = { {"value": "cos7"}, ], }, - "disconnect_threshold": {"v_range": [["v6.0.0", "v7.4.0"]], "type": "integer"}, "mediatype": { "v_range": [ ["v6.0.0", "v6.2.7"], ["v6.4.1", "v7.0.12"], ["v7.2.1", "v7.2.4"], + ["v7.4.2", "v7.4.2"], ], "type": "string", - "options": [{"value": "cfp2-sr10"}, {"value": "cfp2-lr4"}], + "options": [ + {"value": "none", "v_range": [["v7.4.2", "v7.4.2"]]}, + {"value": "gmii", "v_range": [["v7.4.2", "v7.4.2"]]}, + {"value": "sgmii", "v_range": [["v7.4.2", "v7.4.2"]]}, + {"value": "sr", "v_range": [["v7.4.2", "v7.4.2"]]}, + {"value": "lr", "v_range": [["v7.4.2", "v7.4.2"]]}, + {"value": "cr", "v_range": [["v7.4.2", "v7.4.2"]]}, + {"value": "sr2", "v_range": [["v7.4.2", "v7.4.2"]]}, + {"value": "lr2", "v_range": [["v7.4.2", "v7.4.2"]]}, + {"value": "cr2", "v_range": [["v7.4.2", "v7.4.2"]]}, + {"value": "sr4", "v_range": [["v7.4.2", "v7.4.2"]]}, + {"value": "lr4", "v_range": [["v7.4.2", "v7.4.2"]]}, + {"value": "cr4", "v_range": [["v7.4.2", "v7.4.2"]]}, + {"value": "sr8", "v_range": [["v7.4.2", "v7.4.2"]]}, + {"value": "lr8", "v_range": [["v7.4.2", "v7.4.2"]]}, + {"value": "cr8", "v_range": [["v7.4.2", "v7.4.2"]]}, + { + "value": "cfp2-sr10", + "v_range": [ + ["v6.0.0", "v6.2.7"], + ["v6.4.1", "v7.0.12"], + ["v7.2.1", "v7.2.4"], + ], + }, + { + "value": "cfp2-lr4", + "v_range": [ + ["v6.0.0", "v6.2.7"], + ["v6.4.1", "v7.0.12"], + ["v7.2.1", "v7.2.4"], + ], + }, + ], }, - "gi_gk": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "trunk": { + "v_range": [["v7.4.2", "v7.4.2"]], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "security_8021x_mode": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "default"}, + {"value": "dynamic-vlan"}, + {"value": "fallback"}, + {"value": "slave"}, + ], + }, + "security_8021x_master": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "string"}, + "security_8021x_dynamic_vlan_id": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "security_8021x_member_mode": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "switch"}, {"value": "disable"}], + }, "stp": { "v_range": [ ["v6.0.0", "v6.2.7"], ["v6.4.1", "v7.0.12"], ["v7.2.1", "v7.2.4"], + ["v7.4.2", "v7.4.2"], ], "type": "string", "options": [{"value": "disable"}, {"value": "enable"}], }, "stp_ha_secondary": { - "v_range": [["v7.0.0", "v7.0.12"], ["v7.2.1", "v7.2.4"]], + "v_range": [ + ["v7.0.0", "v7.0.12"], + ["v7.2.1", "v7.2.4"], + ["v7.4.2", "v7.4.2"], + ], "type": "string", "options": [ {"value": "disable"}, @@ -4550,6 +4823,58 @@ versioned_schema = { {"value": "priority-adjust"}, ], }, + "stp_edge": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "disable"}, {"value": "enable"}], + }, + "forward_error_correction": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "none"}, + {"value": "disable"}, + {"value": "cl91-rs-fec"}, + {"value": "cl74-fc-fec"}, + {"value": "auto"}, + ], + }, + "interconnect_profile": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "default"}, + {"value": "profile1"}, + {"value": "profile2"}, + ], + }, + "np_qos_profile": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "port_mirroring": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "disable"}, {"value": "enable"}], + }, + "mirroring_direction": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "rx"}, {"value": "tx"}, {"value": "both"}], + }, + "mirroring_port": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "string"}, + "mirroring_filter": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "dict", + "children": { + "filter_srcip": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "string"}, + "filter_dstip": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "string"}, + "filter_sport": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "filter_dport": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "filter_protocol": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + }, + }, + "disconnect_threshold": {"v_range": [["v6.0.0", "v7.4.0"]], "type": "integer"}, "cli_conn_status": { "v_range": [["v6.0.0", "v7.0.5"], ["v7.2.0", "v7.2.0"]], "type": "integer", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ipam.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ipam.py index 007b3caf7..d0eea2c46 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ipam.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ipam.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -131,6 +131,13 @@ options: description: - Configure IPAM pool subnet, Class A - Class B subnet. type: str + require_subnet_size_match: + description: + - Enable/disable reassignment of subnets to make requested and actual sizes match. + type: str + choices: + - 'disable' + - 'enable' rules: description: - Configure IPAM allocation rules. @@ -227,20 +234,21 @@ EXAMPLES = """ description: "<your_own_value>" name: "default_name_10" subnet: "<your_own_value>" + require_subnet_size_match: "disable" rules: - description: "<your_own_value>" device: - - name: "default_name_15" + name: "default_name_16" dhcp: "enable" interface: - - name: "default_name_18" - name: "default_name_19" + name: "default_name_19" + name: "default_name_20" pool: - - name: "default_name_21 (source system.ipam.pools.name)" + name: "default_name_22 (source system.ipam.pools.name)" role: "any" server_type: "fabric-root" status: "enable" @@ -333,6 +341,7 @@ def filter_system_ipam_data(json): "manage_ssid_addresses", "pool_subnet", "pools", + "require_subnet_size_match", "rules", "server_type", "status", @@ -364,9 +373,10 @@ def underscore_to_hyphen(data): def system_ipam(data, fos): vdom = data["vdom"] system_ipam_data = data["system_ipam"] - filtered_data = underscore_to_hyphen(filter_system_ipam_data(system_ipam_data)) + filtered_data = filter_system_ipam_data(system_ipam_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "ipam", data=filtered_data, vdom=vdom) + return fos.set("system", "ipam", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -419,6 +429,11 @@ versioned_schema = { "type": "string", "options": [{"value": "disable"}, {"value": "enable"}], }, + "require_subnet_size_match": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "disable"}, {"value": "enable"}], + }, "manage_lan_addresses": { "v_range": [["v7.4.0", ""]], "type": "string", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ipip_tunnel.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ipip_tunnel.py index 97ce80dae..20af2cc33 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ipip_tunnel.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ipip_tunnel.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -263,9 +263,8 @@ def system_ipip_tunnel(data, fos, check_mode=False): state = data["state"] system_ipip_tunnel_data = data["system_ipip_tunnel"] - filtered_data = underscore_to_hyphen( - filter_system_ipip_tunnel_data(system_ipip_tunnel_data) - ) + filtered_data = filter_system_ipip_tunnel_data(system_ipip_tunnel_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -329,7 +328,7 @@ def system_ipip_tunnel(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "ipip-tunnel", data=filtered_data, vdom=vdom) + return fos.set("system", "ipip-tunnel", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ips.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ips.py index 448dff5cd..4130aead1 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ips.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ips.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -210,9 +210,10 @@ def underscore_to_hyphen(data): def system_ips(data, fos): vdom = data["vdom"] system_ips_data = data["system_ips"] - filtered_data = underscore_to_hyphen(filter_system_ips_data(system_ips_data)) + filtered_data = filter_system_ips_data(system_ips_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "ips", data=filtered_data, vdom=vdom) + return fos.set("system", "ips", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ips_urlfilter_dns.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ips_urlfilter_dns.py index cb2cde784..96f786cbb 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ips_urlfilter_dns.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ips_urlfilter_dns.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -241,9 +241,8 @@ def system_ips_urlfilter_dns(data, fos, check_mode=False): state = data["state"] system_ips_urlfilter_dns_data = data["system_ips_urlfilter_dns"] - filtered_data = underscore_to_hyphen( - filter_system_ips_urlfilter_dns_data(system_ips_urlfilter_dns_data) - ) + filtered_data = filter_system_ips_urlfilter_dns_data(system_ips_urlfilter_dns_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -307,7 +306,7 @@ def system_ips_urlfilter_dns(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "ips-urlfilter-dns", data=filtered_data, vdom=vdom) + return fos.set("system", "ips-urlfilter-dns", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ips_urlfilter_dns6.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ips_urlfilter_dns6.py index 93e162334..277886834 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ips_urlfilter_dns6.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ips_urlfilter_dns6.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -233,9 +233,10 @@ def system_ips_urlfilter_dns6(data, fos, check_mode=False): state = data["state"] system_ips_urlfilter_dns6_data = data["system_ips_urlfilter_dns6"] - filtered_data = underscore_to_hyphen( - filter_system_ips_urlfilter_dns6_data(system_ips_urlfilter_dns6_data) + filtered_data = filter_system_ips_urlfilter_dns6_data( + system_ips_urlfilter_dns6_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -299,7 +300,7 @@ def system_ips_urlfilter_dns6(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "ips-urlfilter-dns6", data=filtered_data, vdom=vdom) + return fos.set("system", "ips-urlfilter-dns6", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ipsec_aggregate.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ipsec_aggregate.py index 136ac5927..0a14183e6 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ipsec_aggregate.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ipsec_aggregate.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -250,9 +250,8 @@ def system_ipsec_aggregate(data, fos, check_mode=False): state = data["state"] system_ipsec_aggregate_data = data["system_ipsec_aggregate"] - filtered_data = underscore_to_hyphen( - filter_system_ipsec_aggregate_data(system_ipsec_aggregate_data) - ) + filtered_data = filter_system_ipsec_aggregate_data(system_ipsec_aggregate_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -316,7 +315,7 @@ def system_ipsec_aggregate(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "ipsec-aggregate", data=filtered_data, vdom=vdom) + return fos.set("system", "ipsec-aggregate", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ipv6_neighbor_cache.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ipv6_neighbor_cache.py index 40614d64b..56737ccb9 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ipv6_neighbor_cache.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ipv6_neighbor_cache.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -242,9 +242,10 @@ def system_ipv6_neighbor_cache(data, fos, check_mode=False): state = data["state"] system_ipv6_neighbor_cache_data = data["system_ipv6_neighbor_cache"] - filtered_data = underscore_to_hyphen( - filter_system_ipv6_neighbor_cache_data(system_ipv6_neighbor_cache_data) + filtered_data = filter_system_ipv6_neighbor_cache_data( + system_ipv6_neighbor_cache_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -308,7 +309,7 @@ def system_ipv6_neighbor_cache(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "ipv6-neighbor-cache", data=filtered_data, vdom=vdom) + return fos.set("system", "ipv6-neighbor-cache", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ipv6_tunnel.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ipv6_tunnel.py index dc33a6c30..1f294db35 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ipv6_tunnel.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ipv6_tunnel.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -263,9 +263,8 @@ def system_ipv6_tunnel(data, fos, check_mode=False): state = data["state"] system_ipv6_tunnel_data = data["system_ipv6_tunnel"] - filtered_data = underscore_to_hyphen( - filter_system_ipv6_tunnel_data(system_ipv6_tunnel_data) - ) + filtered_data = filter_system_ipv6_tunnel_data(system_ipv6_tunnel_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -329,7 +328,7 @@ def system_ipv6_tunnel(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "ipv6-tunnel", data=filtered_data, vdom=vdom) + return fos.set("system", "ipv6-tunnel", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_isf_queue_profile.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_isf_queue_profile.py index 129f0e3f5..b4f1c00d0 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_isf_queue_profile.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_isf_queue_profile.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -287,9 +287,8 @@ def system_isf_queue_profile(data, fos, check_mode=False): state = data["state"] system_isf_queue_profile_data = data["system_isf_queue_profile"] - filtered_data = underscore_to_hyphen( - filter_system_isf_queue_profile_data(system_isf_queue_profile_data) - ) + filtered_data = filter_system_isf_queue_profile_data(system_isf_queue_profile_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -353,7 +352,7 @@ def system_isf_queue_profile(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "isf-queue-profile", data=filtered_data, vdom=vdom) + return fos.set("system", "isf-queue-profile", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( @@ -399,25 +398,45 @@ versioned_schema = { "elements": "dict", "children": { "name": { - "v_range": [["v6.4.0", "v6.4.0"], ["v7.2.0", "v7.2.0"], ["v7.4.0", ""]], + "v_range": [ + ["v6.4.0", "v6.4.0"], + ["v7.2.0", "v7.2.0"], + ["v7.4.0", "v7.4.1"], + ["v7.4.3", ""], + ], "type": "string", "required": True, }, "guaranteed_bandwidth": { - "v_range": [["v6.4.0", "v6.4.0"], ["v7.2.0", "v7.2.0"], ["v7.4.0", ""]], + "v_range": [ + ["v6.4.0", "v6.4.0"], + ["v7.2.0", "v7.2.0"], + ["v7.4.0", "v7.4.1"], + ["v7.4.3", ""], + ], "type": "integer", }, "maximum_bandwidth": { - "v_range": [["v6.4.0", "v6.4.0"], ["v7.2.0", "v7.2.0"], ["v7.4.0", ""]], + "v_range": [ + ["v6.4.0", "v6.4.0"], + ["v7.2.0", "v7.2.0"], + ["v7.4.0", "v7.4.1"], + ["v7.4.3", ""], + ], "type": "integer", }, "bandwidth_unit": { - "v_range": [["v6.4.0", "v6.4.0"], ["v7.2.0", "v7.2.0"], ["v7.4.0", ""]], + "v_range": [ + ["v6.4.0", "v6.4.0"], + ["v7.2.0", "v7.2.0"], + ["v7.4.0", "v7.4.1"], + ["v7.4.3", ""], + ], "type": "string", "options": [{"value": "kbps"}, {"value": "pps"}], }, "burst_bps_granularity": { - "v_range": [["v7.2.0", "v7.2.0"], ["v7.4.0", ""]], + "v_range": [["v7.2.0", "v7.2.0"], ["v7.4.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [ {"value": "disable"}, @@ -431,7 +450,7 @@ versioned_schema = { ], }, "burst_pps_granularity": { - "v_range": [["v7.2.0", "v7.2.0"], ["v7.4.0", ""]], + "v_range": [["v7.2.0", "v7.2.0"], ["v7.4.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [ {"value": "disable"}, @@ -450,7 +469,12 @@ versioned_schema = { "options": [{"value": "disable"}, {"value": "enable"}], }, }, - "v_range": [["v6.4.0", "v6.4.0"], ["v7.2.0", "v7.2.0"], ["v7.4.0", ""]], + "v_range": [ + ["v6.4.0", "v6.4.0"], + ["v7.2.0", "v7.2.0"], + ["v7.4.0", "v7.4.1"], + ["v7.4.3", ""], + ], } diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_link_monitor.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_link_monitor.py index 57f3b9d94..101445feb 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_link_monitor.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_link_monitor.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -547,9 +547,8 @@ def system_link_monitor(data, fos, check_mode=False): system_link_monitor_data = data["system_link_monitor"] system_link_monitor_data = flatten_multilists_attributes(system_link_monitor_data) - filtered_data = underscore_to_hyphen( - filter_system_link_monitor_data(system_link_monitor_data) - ) + filtered_data = filter_system_link_monitor_data(system_link_monitor_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -613,7 +612,7 @@ def system_link_monitor(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "link-monitor", data=filtered_data, vdom=vdom) + return fos.set("system", "link-monitor", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_lldp_network_policy.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_lldp_network_policy.py index f70e735bd..f752a5a07 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_lldp_network_policy.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_lldp_network_policy.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -545,9 +545,10 @@ def system_lldp_network_policy(data, fos, check_mode=False): state = data["state"] system_lldp_network_policy_data = data["system_lldp_network_policy"] - filtered_data = underscore_to_hyphen( - filter_system_lldp_network_policy_data(system_lldp_network_policy_data) + filtered_data = filter_system_lldp_network_policy_data( + system_lldp_network_policy_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -611,7 +612,7 @@ def system_lldp_network_policy(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system.lldp", "network-policy", data=filtered_data, vdom=vdom) + return fos.set("system.lldp", "network-policy", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_lte_modem.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_lte_modem.py index 2e7db2145..1b8559912 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_lte_modem.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_lte_modem.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -276,11 +276,10 @@ def underscore_to_hyphen(data): def system_lte_modem(data, fos): vdom = data["vdom"] system_lte_modem_data = data["system_lte_modem"] - filtered_data = underscore_to_hyphen( - filter_system_lte_modem_data(system_lte_modem_data) - ) + filtered_data = filter_system_lte_modem_data(system_lte_modem_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "lte-modem", data=filtered_data, vdom=vdom) + return fos.set("system", "lte-modem", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_mac_address_table.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_mac_address_table.py index 63855474f..8f0af4ba9 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_mac_address_table.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_mac_address_table.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -235,9 +235,8 @@ def system_mac_address_table(data, fos, check_mode=False): state = data["state"] system_mac_address_table_data = data["system_mac_address_table"] - filtered_data = underscore_to_hyphen( - filter_system_mac_address_table_data(system_mac_address_table_data) - ) + filtered_data = filter_system_mac_address_table_data(system_mac_address_table_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -301,7 +300,7 @@ def system_mac_address_table(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "mac-address-table", data=filtered_data, vdom=vdom) + return fos.set("system", "mac-address-table", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_management_tunnel.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_management_tunnel.py index 4be0173f5..ccaccda4e 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_management_tunnel.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_management_tunnel.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -258,11 +258,10 @@ def underscore_to_hyphen(data): def system_management_tunnel(data, fos): vdom = data["vdom"] system_management_tunnel_data = data["system_management_tunnel"] - filtered_data = underscore_to_hyphen( - filter_system_management_tunnel_data(system_management_tunnel_data) - ) + filtered_data = filter_system_management_tunnel_data(system_management_tunnel_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "management-tunnel", data=filtered_data, vdom=vdom) + return fos.set("system", "management-tunnel", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_mem_mgr.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_mem_mgr.py index 9a7ca1724..b0e904424 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_mem_mgr.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_mem_mgr.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -202,11 +202,10 @@ def underscore_to_hyphen(data): def system_mem_mgr(data, fos): vdom = data["vdom"] system_mem_mgr_data = data["system_mem_mgr"] - filtered_data = underscore_to_hyphen( - filter_system_mem_mgr_data(system_mem_mgr_data) - ) + filtered_data = filter_system_mem_mgr_data(system_mem_mgr_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "mem-mgr", data=filtered_data, vdom=vdom) + return fos.set("system", "mem-mgr", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_mobile_tunnel.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_mobile_tunnel.py index c9427d43f..77fdba7bf 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_mobile_tunnel.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_mobile_tunnel.py @@ -39,7 +39,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -341,9 +341,8 @@ def system_mobile_tunnel(data, fos, check_mode=False): state = data["state"] system_mobile_tunnel_data = data["system_mobile_tunnel"] - filtered_data = underscore_to_hyphen( - filter_system_mobile_tunnel_data(system_mobile_tunnel_data) - ) + filtered_data = filter_system_mobile_tunnel_data(system_mobile_tunnel_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -407,7 +406,7 @@ def system_mobile_tunnel(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "mobile-tunnel", data=filtered_data, vdom=vdom) + return fos.set("system", "mobile-tunnel", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_modem.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_modem.py index a2b3b6c88..4d67234e1 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_modem.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_modem.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -588,9 +588,10 @@ def system_modem(data, fos): vdom = data["vdom"] system_modem_data = data["system_modem"] system_modem_data = flatten_multilists_attributes(system_modem_data) - filtered_data = underscore_to_hyphen(filter_system_modem_data(system_modem_data)) + filtered_data = filter_system_modem_data(system_modem_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "modem", data=filtered_data, vdom=vdom) + return fos.set("system", "modem", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_nat64.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_nat64.py index ce83f7469..d42390e4e 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_nat64.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_nat64.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -269,9 +269,10 @@ def underscore_to_hyphen(data): def system_nat64(data, fos): vdom = data["vdom"] system_nat64_data = data["system_nat64"] - filtered_data = underscore_to_hyphen(filter_system_nat64_data(system_nat64_data)) + filtered_data = filter_system_nat64_data(system_nat64_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "nat64", data=filtered_data, vdom=vdom) + return fos.set("system", "nat64", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_nd_proxy.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_nd_proxy.py index 2aa0107ed..2a7408443 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_nd_proxy.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_nd_proxy.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -219,11 +219,10 @@ def underscore_to_hyphen(data): def system_nd_proxy(data, fos): vdom = data["vdom"] system_nd_proxy_data = data["system_nd_proxy"] - filtered_data = underscore_to_hyphen( - filter_system_nd_proxy_data(system_nd_proxy_data) - ) + filtered_data = filter_system_nd_proxy_data(system_nd_proxy_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "nd-proxy", data=filtered_data, vdom=vdom) + return fos.set("system", "nd-proxy", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_netflow.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_netflow.py index 3b1ea6d5d..c24156dc5 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_netflow.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_netflow.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -92,6 +92,41 @@ options: description: - NetFlow collector port number. type: int + collectors: + description: + - Netflow collectors. + type: list + elements: dict + suboptions: + collector_ip: + description: + - Collector IP. + type: str + collector_port: + description: + - NetFlow collector port number. + type: int + id: + description: + - ID. see <a href='#notes'>Notes</a>. + required: true + type: int + interface: + description: + - Specify outgoing interface to reach server. Source system.interface.name. + type: str + interface_select_method: + description: + - Specify how to select outgoing interface to reach server. + type: str + choices: + - 'auto' + - 'sdwan' + - 'specify' + source_ip: + description: + - Source IP address for communication with the NetFlow agent. + type: str inactive_flow_timeout: description: - Timeout for periodic report of finished flows (10 - 600 sec). @@ -130,6 +165,14 @@ EXAMPLES = """ active_flow_timeout: "1800" collector_ip: "<your_own_value>" collector_port: "2055" + collectors: + - + collector_ip: "<your_own_value>" + collector_port: "2055" + id: "9" + interface: "<your_own_value> (source system.interface.name)" + interface_select_method: "auto" + source_ip: "84.230.14.43" inactive_flow_timeout: "15" interface: "<your_own_value> (source system.interface.name)" interface_select_method: "auto" @@ -222,6 +265,7 @@ def filter_system_netflow_data(json): "active_flow_timeout", "collector_ip", "collector_port", + "collectors", "inactive_flow_timeout", "interface", "interface_select_method", @@ -256,11 +300,10 @@ def underscore_to_hyphen(data): def system_netflow(data, fos): vdom = data["vdom"] system_netflow_data = data["system_netflow"] - filtered_data = underscore_to_hyphen( - filter_system_netflow_data(system_netflow_data) - ) + filtered_data = filter_system_netflow_data(system_netflow_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "netflow", data=filtered_data, vdom=vdom) + return fos.set("system", "netflow", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -295,19 +338,44 @@ versioned_schema = { "v_range": [["v6.0.0", ""]], "type": "dict", "children": { - "collector_ip": {"v_range": [["v6.0.0", ""]], "type": "string"}, - "collector_port": {"v_range": [["v6.0.0", ""]], "type": "integer"}, - "source_ip": {"v_range": [["v6.0.0", ""]], "type": "string"}, "active_flow_timeout": {"v_range": [["v6.0.0", ""]], "type": "integer"}, "inactive_flow_timeout": {"v_range": [["v6.0.0", ""]], "type": "integer"}, "template_tx_timeout": {"v_range": [["v6.0.0", ""]], "type": "integer"}, "template_tx_counter": {"v_range": [["v6.0.0", ""]], "type": "integer"}, + "collectors": { + "type": "list", + "elements": "dict", + "children": { + "id": { + "v_range": [["v7.4.2", ""]], + "type": "integer", + "required": True, + }, + "collector_ip": {"v_range": [["v7.4.2", ""]], "type": "string"}, + "collector_port": {"v_range": [["v7.4.2", ""]], "type": "integer"}, + "source_ip": {"v_range": [["v7.4.2", ""]], "type": "string"}, + "interface_select_method": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [ + {"value": "auto"}, + {"value": "sdwan"}, + {"value": "specify"}, + ], + }, + "interface": {"v_range": [["v7.4.2", ""]], "type": "string"}, + }, + "v_range": [["v7.4.2", ""]], + }, + "collector_ip": {"v_range": [["v6.0.0", "v7.4.1"]], "type": "string"}, + "collector_port": {"v_range": [["v6.0.0", "v7.4.1"]], "type": "integer"}, + "source_ip": {"v_range": [["v6.0.0", "v7.4.1"]], "type": "string"}, "interface_select_method": { - "v_range": [["v7.0.1", ""]], + "v_range": [["v7.0.1", "v7.4.1"]], "type": "string", "options": [{"value": "auto"}, {"value": "sdwan"}, {"value": "specify"}], }, - "interface": {"v_range": [["v7.0.1", ""]], "type": "string"}, + "interface": {"v_range": [["v7.0.1", "v7.4.1"]], "type": "string"}, }, } diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_network_visibility.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_network_visibility.py index 338c2224c..bb395eb64 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_network_visibility.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_network_visibility.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -246,11 +246,12 @@ def underscore_to_hyphen(data): def system_network_visibility(data, fos): vdom = data["vdom"] system_network_visibility_data = data["system_network_visibility"] - filtered_data = underscore_to_hyphen( - filter_system_network_visibility_data(system_network_visibility_data) + filtered_data = filter_system_network_visibility_data( + system_network_visibility_data ) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "network-visibility", data=filtered_data, vdom=vdom) + return fos.set("system", "network-visibility", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_np6.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_np6.py index c6b435c5d..4ad316367 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_np6.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_np6.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -708,7 +708,8 @@ def system_np6(data, fos, check_mode=False): state = data["state"] system_np6_data = data["system_np6"] - filtered_data = underscore_to_hyphen(filter_system_np6_data(system_np6_data)) + filtered_data = filter_system_np6_data(system_np6_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -772,7 +773,7 @@ def system_np6(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "np6", data=filtered_data, vdom=vdom) + return fos.set("system", "np6", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("system", "np6", mkey=filtered_data["name"], vdom=vdom) @@ -813,19 +814,23 @@ versioned_schema = { "type": "list", "elements": "dict", "children": { - "name": {"v_range": [["v6.0.0", ""]], "type": "string", "required": True}, + "name": { + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], + "type": "string", + "required": True, + }, "fastpath": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "disable"}, {"value": "enable"}], }, "low_latency_mode": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "disable"}, {"value": "enable"}], }, "per_session_accounting": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [ {"value": "disable"}, @@ -834,54 +839,100 @@ versioned_schema = { ], }, "garbage_session_collector": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "disable"}, {"value": "enable"}], }, - "session_collector_interval": {"v_range": [["v6.0.0", ""]], "type": "integer"}, - "session_timeout_interval": {"v_range": [["v6.0.0", ""]], "type": "integer"}, + "session_collector_interval": { + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], + "type": "integer", + }, + "session_timeout_interval": { + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], + "type": "integer", + }, "session_timeout_random_range": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "integer", }, "session_timeout_fixed": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "disable"}, {"value": "enable"}], }, "hpe": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "dict", "children": { - "tcpsyn_max": {"v_range": [["v6.0.0", ""]], "type": "integer"}, - "tcpsyn_ack_max": {"v_range": [["v7.0.0", ""]], "type": "integer"}, - "tcpfin_rst_max": {"v_range": [["v7.0.0", ""]], "type": "integer"}, - "tcp_max": {"v_range": [["v6.0.0", ""]], "type": "integer"}, - "udp_max": {"v_range": [["v6.0.0", ""]], "type": "integer"}, - "icmp_max": {"v_range": [["v6.0.0", ""]], "type": "integer"}, - "sctp_max": {"v_range": [["v6.0.0", ""]], "type": "integer"}, - "esp_max": {"v_range": [["v6.0.0", ""]], "type": "integer"}, - "ip_frag_max": {"v_range": [["v6.0.0", ""]], "type": "integer"}, - "ip_others_max": {"v_range": [["v6.0.0", ""]], "type": "integer"}, - "arp_max": {"v_range": [["v6.0.0", ""]], "type": "integer"}, - "l2_others_max": {"v_range": [["v6.0.0", ""]], "type": "integer"}, + "tcpsyn_max": { + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], + "type": "integer", + }, + "tcpsyn_ack_max": { + "v_range": [["v7.0.0", "v7.4.1"], ["v7.4.3", ""]], + "type": "integer", + }, + "tcpfin_rst_max": { + "v_range": [["v7.0.0", "v7.4.1"], ["v7.4.3", ""]], + "type": "integer", + }, + "tcp_max": { + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], + "type": "integer", + }, + "udp_max": { + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], + "type": "integer", + }, + "icmp_max": { + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], + "type": "integer", + }, + "sctp_max": { + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], + "type": "integer", + }, + "esp_max": { + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], + "type": "integer", + }, + "ip_frag_max": { + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], + "type": "integer", + }, + "ip_others_max": { + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], + "type": "integer", + }, + "arp_max": { + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], + "type": "integer", + }, + "l2_others_max": { + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], + "type": "integer", + }, "pri_type_max": { - "v_range": [["v6.0.0", "v6.0.0"], ["v6.0.11", ""]], + "v_range": [ + ["v6.0.0", "v6.0.0"], + ["v6.0.11", "v7.4.1"], + ["v7.4.3", ""], + ], "type": "integer", }, "enable_shaper": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "disable"}, {"value": "enable"}], }, }, }, "fp_anomaly": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "dict", "children": { "tcp_syn_fin": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [ {"value": "allow"}, @@ -890,7 +941,7 @@ versioned_schema = { ], }, "tcp_fin_noack": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [ {"value": "allow"}, @@ -899,7 +950,7 @@ versioned_schema = { ], }, "tcp_fin_only": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [ {"value": "allow"}, @@ -908,7 +959,7 @@ versioned_schema = { ], }, "tcp_no_flag": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [ {"value": "allow"}, @@ -917,7 +968,7 @@ versioned_schema = { ], }, "tcp_syn_data": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [ {"value": "allow"}, @@ -926,7 +977,7 @@ versioned_schema = { ], }, "tcp_winnuke": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [ {"value": "allow"}, @@ -935,7 +986,7 @@ versioned_schema = { ], }, "tcp_land": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [ {"value": "allow"}, @@ -944,7 +995,7 @@ versioned_schema = { ], }, "udp_land": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [ {"value": "allow"}, @@ -953,7 +1004,7 @@ versioned_schema = { ], }, "icmp_land": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [ {"value": "allow"}, @@ -962,7 +1013,7 @@ versioned_schema = { ], }, "icmp_frag": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [ {"value": "allow"}, @@ -971,7 +1022,7 @@ versioned_schema = { ], }, "ipv4_land": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [ {"value": "allow"}, @@ -980,7 +1031,7 @@ versioned_schema = { ], }, "ipv4_proto_err": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [ {"value": "allow"}, @@ -989,7 +1040,7 @@ versioned_schema = { ], }, "ipv4_unknopt": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [ {"value": "allow"}, @@ -998,7 +1049,7 @@ versioned_schema = { ], }, "ipv4_optrr": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [ {"value": "allow"}, @@ -1007,7 +1058,7 @@ versioned_schema = { ], }, "ipv4_optssrr": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [ {"value": "allow"}, @@ -1016,7 +1067,7 @@ versioned_schema = { ], }, "ipv4_optlsrr": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [ {"value": "allow"}, @@ -1025,7 +1076,7 @@ versioned_schema = { ], }, "ipv4_optstream": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [ {"value": "allow"}, @@ -1034,7 +1085,7 @@ versioned_schema = { ], }, "ipv4_optsecurity": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [ {"value": "allow"}, @@ -1043,7 +1094,7 @@ versioned_schema = { ], }, "ipv4_opttimestamp": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [ {"value": "allow"}, @@ -1052,27 +1103,27 @@ versioned_schema = { ], }, "ipv4_csum_err": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "drop"}, {"value": "trap-to-host"}], }, "tcp_csum_err": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "drop"}, {"value": "trap-to-host"}], }, "udp_csum_err": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "drop"}, {"value": "trap-to-host"}], }, "icmp_csum_err": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "drop"}, {"value": "trap-to-host"}], }, "ipv6_land": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [ {"value": "allow"}, @@ -1081,7 +1132,7 @@ versioned_schema = { ], }, "ipv6_proto_err": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [ {"value": "allow"}, @@ -1090,7 +1141,7 @@ versioned_schema = { ], }, "ipv6_unknopt": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [ {"value": "allow"}, @@ -1099,7 +1150,7 @@ versioned_schema = { ], }, "ipv6_saddr_err": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [ {"value": "allow"}, @@ -1108,7 +1159,7 @@ versioned_schema = { ], }, "ipv6_daddr_err": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [ {"value": "allow"}, @@ -1117,7 +1168,7 @@ versioned_schema = { ], }, "ipv6_optralert": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [ {"value": "allow"}, @@ -1126,7 +1177,7 @@ versioned_schema = { ], }, "ipv6_optjumbo": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [ {"value": "allow"}, @@ -1135,7 +1186,7 @@ versioned_schema = { ], }, "ipv6_opttunnel": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [ {"value": "allow"}, @@ -1144,7 +1195,7 @@ versioned_schema = { ], }, "ipv6_opthomeaddr": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [ {"value": "allow"}, @@ -1153,7 +1204,7 @@ versioned_schema = { ], }, "ipv6_optnsap": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [ {"value": "allow"}, @@ -1162,7 +1213,7 @@ versioned_schema = { ], }, "ipv6_optendpid": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [ {"value": "allow"}, @@ -1171,7 +1222,7 @@ versioned_schema = { ], }, "ipv6_optinvld": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [ {"value": "allow"}, @@ -1200,7 +1251,7 @@ versioned_schema = { "options": [{"value": "global-hash"}, {"value": "round-robin-global"}], }, }, - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], } diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_npu.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_npu.py index f63ed6a29..e00da6cf8 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_npu.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_npu.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -98,6 +98,163 @@ options: choices: - 'enable' - 'disable' + default_qos_type: + description: + - Set default QoS type. + type: str + choices: + - 'policing' + - 'shaping' + - 'policing-enhanced' + dos_options: + description: + - NPU DoS configurations. + type: dict + suboptions: + npu_dos_meter_mode: + description: + - Set DoS meter NPU offloading mode. + type: str + choices: + - 'global' + - 'local' + npu_dos_tpe_mode: + description: + - Enable/disable insertion of DoS meter ID to session table. + type: str + choices: + - 'enable' + - 'disable' + double_level_mcast_offload: + description: + - Enable double level mcast offload. + type: str + choices: + - 'enable' + - 'disable' + dsw_dts_profile: + description: + - Configure NPU DSW DTS profile. + type: list + elements: dict + suboptions: + action: + description: + - Set NPU DSW DTS profile action. + type: str + choices: + - 'wait' + - 'drop' + - 'drop_tmr_0' + - 'drop_tmr_1' + - 'enque' + - 'enque_0' + - 'enque_1' + min_limit: + description: + - Set NPU DSW DTS profile min-limt. + type: int + profile_id: + description: + - Set NPU DSW DTS profile profile id. see <a href='#notes'>Notes</a>. + required: true + type: int + step: + description: + - Set NPU DSW DTS profile step. + type: int + dsw_queue_dts_profile: + description: + - Configure NPU DSW Queue DTS profile. + type: list + elements: dict + suboptions: + iport: + description: + - Set NPU DSW DTS in port. + type: str + choices: + - 'eif0' + - 'eif1' + - 'eif2' + - 'eif3' + - 'eif4' + - 'eif5' + - 'eif6' + - 'eif7' + - 'htx0' + - 'htx1' + - 'sse0' + - 'sse1' + - 'sse2' + - 'sse3' + - 'rlt' + - 'dfr' + - 'ipseci' + - 'ipseco' + - 'ipti' + - 'ipto' + - 'vep0' + - 'vep2' + - 'vep4' + - 'vep6' + - 'ivs' + - 'l2ti1' + - 'l2to' + - 'l2ti0' + - 'ple' + - 'spath' + - 'qtm' + name: + description: + - Name. + required: true + type: str + oport: + description: + - Set NPU DSW DTS out port. + type: str + choices: + - 'eif0' + - 'eif1' + - 'eif2' + - 'eif3' + - 'eif4' + - 'eif5' + - 'eif6' + - 'eif7' + - 'hrx' + - 'sse0' + - 'sse1' + - 'sse2' + - 'sse3' + - 'rlt' + - 'dfr' + - 'ipseci' + - 'ipseco' + - 'ipti' + - 'ipto' + - 'vep0' + - 'vep2' + - 'vep4' + - 'vep6' + - 'ivs' + - 'l2ti1' + - 'l2to' + - 'l2ti0' + - 'ple' + - 'sync' + - 'nss' + - 'tsk' + - 'qtm' + profile_id: + description: + - Set NPU DSW DTS profile ID. + type: int + queue_select: + description: + - Set NPU DSW DTS queue ID select (0 - reset to default). + type: int fastpath: description: - Enable/disable NP6 offloading (also called fast path). @@ -105,6 +262,287 @@ options: choices: - 'disable' - 'enable' + fp_anomaly: + description: + - IPv4/IPv6 anomaly protection. + type: dict + suboptions: + icmp_csum_err: + description: + - Invalid IPv4 ICMP checksum anomalies. + type: str + choices: + - 'drop' + - 'trap-to-host' + icmp_frag: + description: + - Layer 3 fragmented packets that could be part of layer 4 ICMP anomalies. + type: str + choices: + - 'allow' + - 'drop' + - 'trap-to-host' + icmp_land: + description: + - ICMP land anomalies. + type: str + choices: + - 'allow' + - 'drop' + - 'trap-to-host' + ipv4_csum_err: + description: + - Invalid IPv4 IP checksum anomalies. + type: str + choices: + - 'drop' + - 'trap-to-host' + ipv4_land: + description: + - Land anomalies. + type: str + choices: + - 'allow' + - 'drop' + - 'trap-to-host' + ipv4_optlsrr: + description: + - Loose source record route option anomalies. + type: str + choices: + - 'allow' + - 'drop' + - 'trap-to-host' + ipv4_optrr: + description: + - Record route option anomalies. + type: str + choices: + - 'allow' + - 'drop' + - 'trap-to-host' + ipv4_optsecurity: + description: + - Security option anomalies. + type: str + choices: + - 'allow' + - 'drop' + - 'trap-to-host' + ipv4_optssrr: + description: + - Strict source record route option anomalies. + type: str + choices: + - 'allow' + - 'drop' + - 'trap-to-host' + ipv4_optstream: + description: + - Stream option anomalies. + type: str + choices: + - 'allow' + - 'drop' + - 'trap-to-host' + ipv4_opttimestamp: + description: + - Timestamp option anomalies. + type: str + choices: + - 'allow' + - 'drop' + - 'trap-to-host' + ipv4_proto_err: + description: + - Invalid layer 4 protocol anomalies. + type: str + choices: + - 'allow' + - 'drop' + - 'trap-to-host' + ipv4_unknopt: + description: + - Unknown option anomalies. + type: str + choices: + - 'allow' + - 'drop' + - 'trap-to-host' + ipv6_daddr_err: + description: + - Destination address as unspecified or loopback address anomalies. + type: str + choices: + - 'allow' + - 'drop' + - 'trap-to-host' + ipv6_land: + description: + - Land anomalies. + type: str + choices: + - 'allow' + - 'drop' + - 'trap-to-host' + ipv6_optendpid: + description: + - End point identification anomalies. + type: str + choices: + - 'allow' + - 'drop' + - 'trap-to-host' + ipv6_opthomeaddr: + description: + - Home address option anomalies. + type: str + choices: + - 'allow' + - 'drop' + - 'trap-to-host' + ipv6_optinvld: + description: + - Invalid option anomalies.Invalid option anomalies. + type: str + choices: + - 'allow' + - 'drop' + - 'trap-to-host' + ipv6_optjumbo: + description: + - Jumbo options anomalies. + type: str + choices: + - 'allow' + - 'drop' + - 'trap-to-host' + ipv6_optnsap: + description: + - Network service access point address option anomalies. + type: str + choices: + - 'allow' + - 'drop' + - 'trap-to-host' + ipv6_optralert: + description: + - Router alert option anomalies. + type: str + choices: + - 'allow' + - 'drop' + - 'trap-to-host' + ipv6_opttunnel: + description: + - Tunnel encapsulation limit option anomalies. + type: str + choices: + - 'allow' + - 'drop' + - 'trap-to-host' + ipv6_proto_err: + description: + - Layer 4 invalid protocol anomalies. + type: str + choices: + - 'allow' + - 'drop' + - 'trap-to-host' + ipv6_saddr_err: + description: + - Source address as multicast anomalies. + type: str + choices: + - 'allow' + - 'drop' + - 'trap-to-host' + ipv6_unknopt: + description: + - Unknown option anomalies. + type: str + choices: + - 'allow' + - 'drop' + - 'trap-to-host' + tcp_csum_err: + description: + - Invalid IPv4 TCP checksum anomalies. + type: str + choices: + - 'drop' + - 'trap-to-host' + tcp_fin_noack: + description: + - TCP SYN flood with FIN flag set without ACK setting anomalies. + type: str + choices: + - 'allow' + - 'drop' + - 'trap-to-host' + tcp_fin_only: + description: + - TCP SYN flood with only FIN flag set anomalies. + type: str + choices: + - 'allow' + - 'drop' + - 'trap-to-host' + tcp_land: + description: + - TCP land anomalies. + type: str + choices: + - 'allow' + - 'drop' + - 'trap-to-host' + tcp_no_flag: + description: + - TCP SYN flood with no flag set anomalies. + type: str + choices: + - 'allow' + - 'drop' + - 'trap-to-host' + tcp_syn_data: + description: + - TCP SYN flood packets with data anomalies. + type: str + choices: + - 'allow' + - 'drop' + - 'trap-to-host' + tcp_syn_fin: + description: + - TCP SYN flood SYN/FIN flag set anomalies. + type: str + choices: + - 'allow' + - 'drop' + - 'trap-to-host' + tcp_winnuke: + description: + - TCP WinNuke anomalies. + type: str + choices: + - 'allow' + - 'drop' + - 'trap-to-host' + udp_csum_err: + description: + - Invalid IPv4 UDP checksum anomalies. + type: str + choices: + - 'drop' + - 'trap-to-host' + udp_land: + description: + - UDP land anomalies. + type: str + choices: + - 'allow' + - 'drop' + - 'trap-to-host' gtp_enhanced_cpu_range: description: - GTP enhanced CPU range option. @@ -120,6 +558,118 @@ options: choices: - 'enable' - 'disable' + gtp_support: + description: + - Enable/Disable NP7 GTP support + type: str + choices: + - 'enable' + - 'disable' + hash_tbl_spread: + description: + - Enable/disable hash table entry spread . + type: str + choices: + - 'enable' + - 'disable' + hpe: + description: + - Host protection engine configuration. + type: dict + suboptions: + all_protocol: + description: + - Maximum packet rate of each host queue except high priority traffic(1K - 32M pps), set 0 to disable. + type: int + arp_max: + description: + - Maximum ARP packet rate (1K - 32M pps). Entry is valid when ARP is removed from high-priority traffic. + type: int + enable_shaper: + description: + - Enable/Disable NPU Host Protection Engine (HPE) for packet type shaper. + type: str + choices: + - 'disable' + - 'enable' + esp_max: + description: + - Maximum ESP packet rate (1K - 32M pps). + type: int + high_priority: + description: + - Maximum packet rate for high priority traffic packets (1K - 32M pps). + type: int + icmp_max: + description: + - Maximum ICMP packet rate (1K - 32M pps). + type: int + ip_frag_max: + description: + - Maximum fragmented IP packet rate (1K - 32M pps). + type: int + ip_others_max: + description: + - Maximum IP packet rate for other packets (packet types that cannot be set with other options) (1K - 32G pps). + type: int + l2_others_max: + description: + - Maximum L2 packet rate for L2 packets that are not ARP packets (1K - 32M pps). + type: int + sctp_max: + description: + - Maximum SCTP packet rate (1K - 32M pps). + type: int + tcp_max: + description: + - Maximum TCP packet rate (1K - 32M pps). + type: int + tcpfin_rst_max: + description: + - Maximum TCP carries FIN or RST flags packet rate (1K - 32M pps). + type: int + tcpsyn_ack_max: + description: + - Maximum TCP carries SYN and ACK flags packet rate (1K - 32M pps). + type: int + tcpsyn_max: + description: + - Maximum TCP SYN packet rate (1K - 40M pps). + type: int + udp_max: + description: + - Maximum UDP packet rate (1K - 32M pps). + type: int + htab_dedi_queue_nr: + description: + - Set the number of dedicate queue for hash table messages. + type: int + htab_msg_queue: + description: + - Set hash table message queue mode. + type: str + choices: + - 'data' + - 'idle' + - 'dedicated' + htx_icmp_csum_chk: + description: + - Set HTX icmp csum checking mode. + type: str + choices: + - 'drop' + - 'pass' + inbound_dscp_copy_port: + description: + - Physical interfaces that support inbound-dscp-copy. + type: list + elements: dict + suboptions: + interface: + description: + - Physical interface name. + required: true + type: str intf_shaping_offload: description: - Enable/disable NPU offload when doing interface-based traffic shaping according to the egress-shaping-profile. @@ -127,6 +677,33 @@ options: choices: - 'enable' - 'disable' + ip_fragment_offload: + description: + - Enable/disable NP7 NPU IP fragment offload. + type: str + choices: + - 'disable' + - 'enable' + ip_reassembly: + description: + - IP reassebmly engine configuration. + type: dict + suboptions: + max_timeout: + description: + - Maximum timeout value for IP reassembly (5 us - 600,000,000 us). + type: int + min_timeout: + description: + - Minimum timeout value for IP reassembly (5 us - 600,000,000 us). + type: int + status: + description: + - Set IP reassembly processing status. + type: str + choices: + - 'disable' + - 'enable' ipsec_dec_subengine_mask: description: - IPsec decryption subengine mask (0x1 - 0xff). @@ -149,6 +726,14 @@ options: choices: - 'disable' - 'enable' + ipsec_ob_np_sel: + description: + - IPsec NP selection for OB SA offloading. + type: str + choices: + - 'rr' + - 'Packet' + - 'Hash' ipsec_over_vlink: description: - Enable/disable IPsec over vlink. @@ -200,6 +785,14 @@ options: choices: - 'disable' - 'enable' + max_receive_unit: + description: + - Set the maximum packet size for receive, larger packets will be silently dropped. + type: int + max_session_timeout: + description: + - Maximum time interval for refreshing NPU-offloaded sessions (10 - 1000 sec). + type: int mcast_session_accounting: description: - Enable/disable traffic accounting for each multicast session through TAE counter. @@ -208,6 +801,2224 @@ options: - 'tpe-based' - 'session-based' - 'disable' + napi_break_interval: + description: + - NAPI break interval . + type: int + np_queues: + description: + - Configure queue assignment on NP7. + type: dict + suboptions: + ethernet_type: + description: + - Configure a NP7 QoS Ethernet Type. + type: list + elements: dict + suboptions: + name: + description: + - Ethernet Type Name. + required: true + type: str + queue: + description: + - Queue Number. + type: int + type: + description: + - Ethernet Type. + type: str + weight: + description: + - Class Weight. + type: int + ip_protocol: + description: + - Configure a NP7 QoS IP Protocol. + type: list + elements: dict + suboptions: + name: + description: + - IP Protocol Name. + required: true + type: str + protocol: + description: + - IP Protocol. + type: int + queue: + description: + - Queue Number. + type: int + weight: + description: + - Class Weight. + type: int + ip_service: + description: + - Configure a NP7 QoS IP Service. + type: list + elements: dict + suboptions: + dport: + description: + - Destination port. + type: int + name: + description: + - IP service name. + required: true + type: str + protocol: + description: + - IP protocol. + type: int + queue: + description: + - Queue number. + type: int + sport: + description: + - Source port. + type: int + weight: + description: + - Class weight. + type: int + profile: + description: + - Configure a NP7 class profile. + type: list + elements: dict + suboptions: + cos0: + description: + - Queue number of CoS 0. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + cos1: + description: + - Queue number of CoS 1. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + cos2: + description: + - Queue number of CoS 2. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + cos3: + description: + - Queue number of CoS 3. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + cos4: + description: + - Queue number of CoS 4. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + cos5: + description: + - Queue number of CoS 5. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + cos6: + description: + - Queue number of CoS 6. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + cos7: + description: + - Queue number of CoS 7. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp0: + description: + - Queue number of DSCP 0. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp1: + description: + - Queue number of DSCP 1. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp10: + description: + - Queue number of DSCP 10. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp11: + description: + - Queue number of DSCP 11. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp12: + description: + - Queue number of DSCP 12. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp13: + description: + - Queue number of DSCP 13. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp14: + description: + - Queue number of DSCP 14. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp15: + description: + - Queue number of DSCP 15. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp16: + description: + - Queue number of DSCP 16. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp17: + description: + - Queue number of DSCP 17. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp18: + description: + - Queue number of DSCP 18. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp19: + description: + - Queue number of DSCP 19. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp2: + description: + - Queue number of DSCP 2. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp20: + description: + - Queue number of DSCP 20. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp21: + description: + - Queue number of DSCP 21. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp22: + description: + - Queue number of DSCP 22. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp23: + description: + - Queue number of DSCP 23. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp24: + description: + - Queue number of DSCP 24. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp25: + description: + - Queue number of DSCP 25. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp26: + description: + - Queue number of DSCP 26. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp27: + description: + - Queue number of DSCP 27. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp28: + description: + - Queue number of DSCP 28. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp29: + description: + - Queue number of DSCP 29. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp3: + description: + - Queue number of DSCP 3. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp30: + description: + - Queue number of DSCP 30. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp31: + description: + - Queue number of DSCP 31. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp32: + description: + - Queue number of DSCP 32. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp33: + description: + - Queue number of DSCP 33. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp34: + description: + - Queue number of DSCP 34. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp35: + description: + - Queue number of DSCP 35. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp36: + description: + - Queue number of DSCP 36. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp37: + description: + - Queue number of DSCP 37. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp38: + description: + - Queue number of DSCP 38. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp39: + description: + - Queue number of DSCP 39. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp4: + description: + - Queue number of DSCP 4. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp40: + description: + - Queue number of DSCP 40. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp41: + description: + - Queue number of DSCP 41. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp42: + description: + - Queue number of DSCP 42. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp43: + description: + - Queue number of DSCP 43. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp44: + description: + - Queue number of DSCP 44. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp45: + description: + - Queue number of DSCP 45. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp46: + description: + - Queue number of DSCP 46. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp47: + description: + - Queue number of DSCP 47. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp48: + description: + - Queue number of DSCP 48. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp49: + description: + - Queue number of DSCP 49. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp5: + description: + - Queue number of DSCP 5. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp50: + description: + - Queue number of DSCP 50. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp51: + description: + - Queue number of DSCP 51. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp52: + description: + - Queue number of DSCP 52. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp53: + description: + - Queue number of DSCP 53. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp54: + description: + - Queue number of DSCP 54. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp55: + description: + - Queue number of DSCP 55. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp56: + description: + - Queue number of DSCP 56. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp57: + description: + - Queue number of DSCP 57. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp58: + description: + - Queue number of DSCP 58. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp59: + description: + - Queue number of DSCP 59. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp6: + description: + - Queue number of DSCP 6. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp60: + description: + - Queue number of DSCP 60. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp61: + description: + - Queue number of DSCP 61. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp62: + description: + - Queue number of DSCP 62. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp63: + description: + - Queue number of DSCP 63. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp7: + description: + - Queue number of DSCP 7. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp8: + description: + - Queue number of DSCP 8. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + dscp9: + description: + - Queue number of DSCP 9. + type: str + choices: + - 'queue0' + - 'queue1' + - 'queue2' + - 'queue3' + - 'queue4' + - 'queue5' + - 'queue6' + - 'queue7' + id: + description: + - Profile ID. see <a href='#notes'>Notes</a>. + required: true + type: int + type: + description: + - Profile type. + type: str + choices: + - 'cos' + - 'dscp' + weight: + description: + - Class weight. + type: int + scheduler: + description: + - Configure a NP7 QoS Scheduler. + type: list + elements: dict + suboptions: + mode: + description: + - Scheduler mode. + type: str + choices: + - 'none' + - 'priority' + - 'round-robin' + name: + description: + - Scheduler name. + required: true + type: str + npu_group_effective_scope: + description: + - npu-group-effective-scope defines under which npu-group cmds such as list/purge will be excecuted. Default scope is for all four HS-ok + groups. (0-3). + type: int + npu_tcam: + description: + - Configure NPU TCAM policies. + type: list + elements: dict + suboptions: + data: + description: + - Data fields of TCAM. + type: dict + suboptions: + df: + description: + - tcam data ip flag df. + type: str + choices: + - 'enable' + - 'disable' + dstip: + description: + - tcam data dst ipv4 address. + type: str + dstipv6: + description: + - tcam data dst ipv6 address. + type: str + dstmac: + description: + - tcam data dst macaddr. + type: str + dstport: + description: + - tcam data L4 dst port. + type: int + ethertype: + description: + - tcam data ethertype. + type: str + ext_tag: + description: + - tcam data extension tag. + type: str + choices: + - 'enable' + - 'disable' + frag_off: + description: + - tcam data ip flag fragment offset. + type: int + gen_buf_cnt: + description: + - tcam data gen info buffer count. + type: int + gen_iv: + description: + - tcam data gen info iv. + type: str + choices: + - 'valid' + - 'invalid' + gen_l3_flags: + description: + - tcam data gen info L3 flags. + type: int + gen_l4_flags: + description: + - tcam data gen info L4 flags. + type: int + gen_pkt_ctrl: + description: + - tcam data gen info packet control. + type: int + gen_pri: + description: + - tcam data gen info priority. + type: int + gen_pri_v: + description: + - tcam data gen info priority valid. + type: str + choices: + - 'valid' + - 'invalid' + gen_tv: + description: + - tcam data gen info tv. + type: str + choices: + - 'valid' + - 'invalid' + ihl: + description: + - tcam data ipv4 IHL. + type: int + ip4_id: + description: + - tcam data ipv4 id. + type: int + ip6_fl: + description: + - tcam data ipv6 flow label. + type: int + ipver: + description: + - tcam data ip header version. + type: int + l4_wd10: + description: + - tcam data L4 word10. + type: int + l4_wd11: + description: + - tcam data L4 word11. + type: int + l4_wd8: + description: + - tcam data L4 word8. + type: int + l4_wd9: + description: + - tcam data L4 word9. + type: int + mf: + description: + - tcam data ip flag mf. + type: str + choices: + - 'enable' + - 'disable' + protocol: + description: + - tcam data ip protocol. + type: int + slink: + description: + - tcam data sublink. + type: int + smac_change: + description: + - tcam data source MAC change. + type: str + choices: + - 'enable' + - 'disable' + sp: + description: + - tcam data source port. + type: int + src_cfi: + description: + - tcam data source cfi. + type: str + choices: + - 'enable' + - 'disable' + src_prio: + description: + - tcam data source priority. + type: int + src_updt: + description: + - tcam data source update. + type: str + choices: + - 'enable' + - 'disable' + srcip: + description: + - tcam data src ipv4 address. + type: str + srcipv6: + description: + - tcam data src ipv6 address. + type: str + srcmac: + description: + - tcam data src macaddr. + type: str + srcport: + description: + - tcam data L4 src port. + type: int + svid: + description: + - tcam data source vid. + type: int + tcp_ack: + description: + - tcam data tcp flag ack. + type: str + choices: + - 'enable' + - 'disable' + tcp_cwr: + description: + - tcam data tcp flag cwr. + type: str + choices: + - 'enable' + - 'disable' + tcp_ece: + description: + - tcam data tcp flag ece. + type: str + choices: + - 'enable' + - 'disable' + tcp_fin: + description: + - tcam data tcp flag fin. + type: str + choices: + - 'enable' + - 'disable' + tcp_push: + description: + - tcam data tcp flag push. + type: str + choices: + - 'enable' + - 'disable' + tcp_rst: + description: + - tcam data tcp flag rst. + type: str + choices: + - 'enable' + - 'disable' + tcp_syn: + description: + - tcam data tcp flag syn. + type: str + choices: + - 'enable' + - 'disable' + tcp_urg: + description: + - tcam data tcp flag urg. + type: str + choices: + - 'enable' + - 'disable' + tgt_cfi: + description: + - tcam data target cfi. + type: str + choices: + - 'enable' + - 'disable' + tgt_prio: + description: + - tcam data target priority. + type: int + tgt_updt: + description: + - tcam data target port update. + type: str + choices: + - 'enable' + - 'disable' + tgt_v: + description: + - tcam data target valid. + type: str + choices: + - 'valid' + - 'invalid' + tos: + description: + - tcam data ip tos. + type: int + tp: + description: + - tcam data target port. + type: int + ttl: + description: + - tcam data ip ttl. + type: int + tvid: + description: + - tcam data target vid. + type: int + vdid: + description: + - tcam data vdom id. + type: int + mask: + description: + - Mask fields of TCAM. + type: dict + suboptions: + df: + description: + - tcam mask ip flag df. + type: str + choices: + - 'enable' + - 'disable' + dstip: + description: + - tcam mask dst ipv4 address. + type: str + dstipv6: + description: + - tcam mask dst ipv6 address. + type: str + dstmac: + description: + - tcam mask dst macaddr. + type: str + dstport: + description: + - tcam mask L4 dst port. + type: int + ethertype: + description: + - tcam mask ethertype. + type: str + ext_tag: + description: + - tcam mask extension tag. + type: str + choices: + - 'enable' + - 'disable' + frag_off: + description: + - tcam data ip flag fragment offset. + type: int + gen_buf_cnt: + description: + - tcam mask gen info buffer count. + type: int + gen_iv: + description: + - tcam mask gen info iv. + type: str + choices: + - 'valid' + - 'invalid' + gen_l3_flags: + description: + - tcam mask gen info L3 flags. + type: int + gen_l4_flags: + description: + - tcam mask gen info L4 flags. + type: int + gen_pkt_ctrl: + description: + - tcam mask gen info packet control. + type: int + gen_pri: + description: + - tcam mask gen info priority. + type: int + gen_pri_v: + description: + - tcam mask gen info priority valid. + type: str + choices: + - 'valid' + - 'invalid' + gen_tv: + description: + - tcam mask gen info tv. + type: str + choices: + - 'valid' + - 'invalid' + ihl: + description: + - tcam mask ipv4 IHL. + type: int + ip4_id: + description: + - tcam mask ipv4 id. + type: int + ip6_fl: + description: + - tcam mask ipv6 flow label. + type: int + ipver: + description: + - tcam mask ip header version. + type: int + l4_wd10: + description: + - tcam mask L4 word10. + type: int + l4_wd11: + description: + - tcam mask L4 word11. + type: int + l4_wd8: + description: + - tcam mask L4 word8. + type: int + l4_wd9: + description: + - tcam mask L4 word9. + type: int + mf: + description: + - tcam mask ip flag mf. + type: str + choices: + - 'enable' + - 'disable' + protocol: + description: + - tcam mask ip protocol. + type: int + slink: + description: + - tcam mask sublink. + type: int + smac_change: + description: + - tcam mask source MAC change. + type: str + choices: + - 'enable' + - 'disable' + sp: + description: + - tcam mask source port. + type: int + src_cfi: + description: + - tcam mask source cfi. + type: str + choices: + - 'enable' + - 'disable' + src_prio: + description: + - tcam mask source priority. + type: int + src_updt: + description: + - tcam mask source update. + type: str + choices: + - 'enable' + - 'disable' + srcip: + description: + - tcam mask src ipv4 address. + type: str + srcipv6: + description: + - tcam mask src ipv6 address. + type: str + srcmac: + description: + - tcam mask src macaddr. + type: str + srcport: + description: + - tcam mask L4 src port. + type: int + svid: + description: + - tcam mask source vid. + type: int + tcp_ack: + description: + - tcam mask tcp flag ack. + type: str + choices: + - 'enable' + - 'disable' + tcp_cwr: + description: + - tcam mask tcp flag cwr. + type: str + choices: + - 'enable' + - 'disable' + tcp_ece: + description: + - tcam mask tcp flag ece. + type: str + choices: + - 'enable' + - 'disable' + tcp_fin: + description: + - tcam mask tcp flag fin. + type: str + choices: + - 'enable' + - 'disable' + tcp_push: + description: + - tcam mask tcp flag push. + type: str + choices: + - 'enable' + - 'disable' + tcp_rst: + description: + - tcam mask tcp flag rst. + type: str + choices: + - 'enable' + - 'disable' + tcp_syn: + description: + - tcam mask tcp flag syn. + type: str + choices: + - 'enable' + - 'disable' + tcp_urg: + description: + - tcam mask tcp flag urg. + type: str + choices: + - 'enable' + - 'disable' + tgt_cfi: + description: + - tcam mask target cfi. + type: str + choices: + - 'enable' + - 'disable' + tgt_prio: + description: + - tcam mask target priority. + type: int + tgt_updt: + description: + - tcam mask target port update. + type: str + choices: + - 'enable' + - 'disable' + tgt_v: + description: + - tcam mask target valid. + type: str + choices: + - 'valid' + - 'invalid' + tos: + description: + - tcam mask ip tos. + type: int + tp: + description: + - tcam mask target port. + type: int + ttl: + description: + - tcam mask ip ttl. + type: int + tvid: + description: + - tcam mask target vid. + type: int + vdid: + description: + - tcam mask vdom id. + type: int + mir_act: + description: + - Mirror action of TCAM. + type: dict + suboptions: + vlif: + description: + - tcam mirror action vlif. + type: int + name: + description: + - NPU TCAM policies name. + required: true + type: str + oid: + description: + - NPU TCAM OID. + type: int + pri_act: + description: + - Priority action of TCAM. + type: dict + suboptions: + priority: + description: + - tcam priority action priority. + type: int + weight: + description: + - tcam priority action weight. + type: int + sact: + description: + - Source action of TCAM. + type: dict + suboptions: + act: + description: + - tcam sact act. + type: int + act_v: + description: + - Enable to set sact act. + type: str + choices: + - 'enable' + - 'disable' + bmproc: + description: + - tcam sact bmproc. + type: int + bmproc_v: + description: + - Enable to set sact bmproc. + type: str + choices: + - 'enable' + - 'disable' + df_lif: + description: + - tcam sact df-lif. + type: int + df_lif_v: + description: + - Enable to set sact df-lif. + type: str + choices: + - 'enable' + - 'disable' + dfr: + description: + - tcam sact dfr. + type: int + dfr_v: + description: + - Enable to set sact dfr. + type: str + choices: + - 'enable' + - 'disable' + dmac_skip: + description: + - tcam sact dmac-skip. + type: int + dmac_skip_v: + description: + - Enable to set sact dmac-skip. + type: str + choices: + - 'enable' + - 'disable' + dosen: + description: + - tcam sact dosen. + type: int + dosen_v: + description: + - Enable to set sact dosen. + type: str + choices: + - 'enable' + - 'disable' + espff_proc: + description: + - tcam sact espff-proc. + type: int + espff_proc_v: + description: + - Enable to set sact espff-proc. + type: str + choices: + - 'enable' + - 'disable' + etype_pid: + description: + - tcam sact etype-pid. + type: int + etype_pid_v: + description: + - Enable to set sact etype-pid. + type: str + choices: + - 'enable' + - 'disable' + frag_proc: + description: + - tcam sact frag-proc. + type: int + frag_proc_v: + description: + - Enable to set sact frag-proc. + type: str + choices: + - 'enable' + - 'disable' + fwd: + description: + - tcam sact fwd. + type: int + fwd_lif: + description: + - tcam sact fwd-lif. + type: int + fwd_lif_v: + description: + - Enable to set sact fwd-lif. + type: str + choices: + - 'enable' + - 'disable' + fwd_tvid: + description: + - tcam sact fwd-tvid. + type: int + fwd_tvid_v: + description: + - Enable to set sact fwd-vid. + type: str + choices: + - 'enable' + - 'disable' + fwd_v: + description: + - Enable to set sact fwd. + type: str + choices: + - 'enable' + - 'disable' + icpen: + description: + - tcam sact icpen. + type: int + icpen_v: + description: + - Enable to set sact icpen. + type: str + choices: + - 'enable' + - 'disable' + igmp_mld_snp: + description: + - tcam sact igmp-mld-snp. + type: int + igmp_mld_snp_v: + description: + - Enable to set sact igmp-mld-snp. + type: str + choices: + - 'enable' + - 'disable' + learn: + description: + - tcam sact learn. + type: int + learn_v: + description: + - Enable to set sact learn. + type: str + choices: + - 'enable' + - 'disable' + m_srh_ctrl: + description: + - tcam sact m-srh-ctrl. + type: int + m_srh_ctrl_v: + description: + - Enable to set sact m-srh-ctrl. + type: str + choices: + - 'enable' + - 'disable' + mac_id: + description: + - tcam sact mac-id. + type: int + mac_id_v: + description: + - Enable to set sact mac-id. + type: str + choices: + - 'enable' + - 'disable' + mss: + description: + - tcam sact mss. + type: int + mss_v: + description: + - Enable to set sact mss. + type: str + choices: + - 'enable' + - 'disable' + pleen: + description: + - tcam sact pleen. + type: int + pleen_v: + description: + - Enable to set sact pleen. + type: str + choices: + - 'enable' + - 'disable' + prio_pid: + description: + - tcam sact prio-pid. + type: int + prio_pid_v: + description: + - Enable to set sact prio-pid. + type: str + choices: + - 'enable' + - 'disable' + promis: + description: + - tcam sact promis. + type: int + promis_v: + description: + - Enable to set sact promis. + type: str + choices: + - 'enable' + - 'disable' + rfsh: + description: + - tcam sact rfsh. + type: int + rfsh_v: + description: + - Enable to set sact rfsh. + type: str + choices: + - 'enable' + - 'disable' + smac_skip: + description: + - tcam sact smac-skip. + type: int + smac_skip_v: + description: + - Enable to set sact smac-skip. + type: str + choices: + - 'enable' + - 'disable' + tp_smchk: + description: + - tcam sact tp mode. + type: int + tp_smchk_v: + description: + - Enable to set sact tp mode. + type: str + choices: + - 'enable' + - 'disable' + tpe_id: + description: + - tcam sact tpe-id. + type: int + tpe_id_v: + description: + - Enable to set sact tpe-id. + type: str + choices: + - 'enable' + - 'disable' + vdm: + description: + - tcam sact vdm. + type: int + vdm_v: + description: + - Enable to set sact vdm. + type: str + choices: + - 'enable' + - 'disable' + vdom_id: + description: + - tcam sact vdom-id. + type: int + vdom_id_v: + description: + - Enable to set sact vdom-id. + type: str + choices: + - 'enable' + - 'disable' + x_mode: + description: + - tcam sact x-mode. + type: int + x_mode_v: + description: + - Enable to set sact x-mode. + type: str + choices: + - 'enable' + - 'disable' + tact: + description: + - Target action of TCAM. + type: dict + suboptions: + act: + description: + - tcam tact act. + type: int + act_v: + description: + - Enable to set tact act. + type: str + choices: + - 'enable' + - 'disable' + fmtuv4_s: + description: + - tcam tact fmtuv4-s. + type: int + fmtuv4_s_v: + description: + - Enable to set tact fmtuv4-s. + type: str + choices: + - 'enable' + - 'disable' + fmtuv6_s: + description: + - tcam tact fmtuv6-s. + type: int + fmtuv6_s_v: + description: + - Enable to set tact fmtuv6-s. + type: str + choices: + - 'enable' + - 'disable' + lnkid: + description: + - tcam tact lnkid. + type: int + lnkid_v: + description: + - Enable to set tact lnkid. + type: str + choices: + - 'enable' + - 'disable' + mac_id: + description: + - tcam tact mac-id. + type: int + mac_id_v: + description: + - Enable to set tact mac-id. + type: str + choices: + - 'enable' + - 'disable' + mss_t: + description: + - tcam tact mss. + type: int + mss_t_v: + description: + - Enable to set tact mss. + type: str + choices: + - 'enable' + - 'disable' + mtuv4: + description: + - tcam tact mtuv4. + type: int + mtuv4_v: + description: + - Enable to set tact mtuv4. + type: str + choices: + - 'enable' + - 'disable' + mtuv6: + description: + - tcam tact mtuv6. + type: int + mtuv6_v: + description: + - Enable to set tact mtuv6. + type: str + choices: + - 'enable' + - 'disable' + slif_act: + description: + - tcam tact slif-act. + type: int + slif_act_v: + description: + - Enable to set tact slif-act. + type: str + choices: + - 'enable' + - 'disable' + sublnkid: + description: + - tcam tact sublnkid. + type: int + sublnkid_v: + description: + - Enable to set tact sublnkid. + type: str + choices: + - 'enable' + - 'disable' + tgtv_act: + description: + - tcam tact tgtv-act. + type: int + tgtv_act_v: + description: + - Enable to set tact tgtv-act. + type: str + choices: + - 'enable' + - 'disable' + tlif_act: + description: + - tcam tact tlif-act. + type: int + tlif_act_v: + description: + - Enable to set tact tlif-act. + type: str + choices: + - 'enable' + - 'disable' + tpeid: + description: + - tcam tact tpeid. + type: int + tpeid_v: + description: + - Enable to set tact tpeid. + type: str + choices: + - 'enable' + - 'disable' + v6fe: + description: + - tcam tact v6fe. + type: int + v6fe_v: + description: + - Enable to set tact v6fe. + type: str + choices: + - 'enable' + - 'disable' + vep_en: + description: + - tcam tact vep_en. + type: int + vep_en_v: + description: + - Enable to set tact vep-en. + type: str + choices: + - 'enable' + - 'disable' + vep_slid: + description: + - tcam tact vep_slid. + type: int + vep_slid_v: + description: + - Enable to set tact vep-slid. + type: str + choices: + - 'enable' + - 'disable' + xlt_lif: + description: + - tcam tact xlt-lif. + type: int + xlt_lif_v: + description: + - Enable to set tact xlt-lif. + type: str + choices: + - 'enable' + - 'disable' + xlt_vid: + description: + - tcam tact xlt-vid. + type: int + xlt_vid_v: + description: + - Enable to set tact xlt-vid. + type: str + choices: + - 'enable' + - 'disable' + type: + description: + - TCAM policy type. + type: str + choices: + - 'L2_src_tc' + - 'L2_tgt_tc' + - 'L2_src_mir' + - 'L2_tgt_mir' + - 'L2_src_act' + - 'L2_tgt_act' + - 'IPv4_src_tc' + - 'IPv4_tgt_tc' + - 'IPv4_src_mir' + - 'IPv4_tgt_mir' + - 'IPv4_src_act' + - 'IPv4_tgt_act' + - 'IPv6_src_tc' + - 'IPv6_tgt_tc' + - 'IPv6_src_mir' + - 'IPv6_tgt_mir' + - 'IPv6_src_act' + - 'IPv6_tgt_act' + vid: + description: + - NPU TCAM VID. + type: int + per_session_accounting: + description: + - Set per-session accounting. + type: str + choices: + - 'traffic-log-only' + - 'disable' + - 'enable' port_cpu_map: description: - Configure NPU interface to CPU core mapping. @@ -238,6 +3049,22 @@ options: description: - Mapping NPU group index. type: int + port_path_option: + description: + - Configure port using NPU or Intel-NIC. + type: dict + suboptions: + ports_using_npu: + description: + - Set ha/aux ports to handle traffic with NPU (otherwise traffic goes to Intel-NIC and then CPU). + type: list + elements: dict + suboptions: + interface_name: + description: + - Available interfaces for NPU path. + required: true + type: str priority_protocol: description: - Configure NPU priority protocol. @@ -272,6 +3099,13 @@ options: - 'disable' - 'priority' - 'round-robin' + qtm_buf_mode: + description: + - QTM channel configuration for packet buffer. + type: str + choices: + - '6ch' + - '4ch' rdp_offload: description: - Enable/disable RDP offload. @@ -279,6 +3113,10 @@ options: choices: - 'enable' - 'disable' + session_acct_interval: + description: + - Session accounting update interval (1 - 10 sec). + type: int session_denied_offload: description: - Enable/disable offloading of denied sessions. Requires ses-denied-traffic to be set. @@ -286,6 +3124,13 @@ options: choices: - 'disable' - 'enable' + shaping_stats: + description: + - Enable/disable NP7 traffic shaping statistics . + type: str + choices: + - 'disable' + - 'enable' sse_backpressure: description: - Enable/disable SSE backpressure. @@ -413,6 +3258,20 @@ options: choices: - 'enable' - 'disable' + ull_port_mode: + description: + - Set ULL port"s speed to 10G/25G . + type: str + choices: + - '10G' + - '25G' + vlan_lookup_cache: + description: + - Enable/disable vlan lookup cache . + type: str + choices: + - 'enable' + - 'disable' """ EXAMPLES = """ @@ -423,14 +3282,98 @@ EXAMPLES = """ capwap_offload: "enable" dedicated_management_affinity: "<your_own_value>" dedicated_management_cpu: "enable" + default_qos_type: "policing" + dos_options: + npu_dos_meter_mode: "global" + npu_dos_tpe_mode: "enable" + double_level_mcast_offload: "enable" + dsw_dts_profile: + - + action: "wait" + min_limit: "0" + profile_id: "<you_own_value>" + step: "0" + dsw_queue_dts_profile: + - + iport: "eif0" + name: "default_name_18" + oport: "eif0" + profile_id: "0" + queue_select: "0" fastpath: "disable" + fp_anomaly: + icmp_csum_err: "drop" + icmp_frag: "allow" + icmp_land: "allow" + ipv4_csum_err: "drop" + ipv4_land: "allow" + ipv4_optlsrr: "allow" + ipv4_optrr: "allow" + ipv4_optsecurity: "allow" + ipv4_optssrr: "allow" + ipv4_optstream: "allow" + ipv4_opttimestamp: "allow" + ipv4_proto_err: "allow" + ipv4_unknopt: "allow" + ipv6_daddr_err: "allow" + ipv6_land: "allow" + ipv6_optendpid: "allow" + ipv6_opthomeaddr: "allow" + ipv6_optinvld: "allow" + ipv6_optjumbo: "allow" + ipv6_optnsap: "allow" + ipv6_optralert: "allow" + ipv6_opttunnel: "allow" + ipv6_proto_err: "allow" + ipv6_saddr_err: "allow" + ipv6_unknopt: "allow" + tcp_csum_err: "drop" + tcp_fin_noack: "allow" + tcp_fin_only: "allow" + tcp_land: "allow" + tcp_no_flag: "allow" + tcp_syn_data: "allow" + tcp_syn_fin: "allow" + tcp_winnuke: "allow" + udp_csum_err: "drop" + udp_land: "allow" gtp_enhanced_cpu_range: "0" gtp_enhanced_mode: "enable" + gtp_support: "enable" + hash_tbl_spread: "enable" + hpe: + all_protocol: "400000" + arp_max: "5000" + enable_shaper: "disable" + esp_max: "5000" + high_priority: "400000" + icmp_max: "5000" + ip_frag_max: "5000" + ip_others_max: "5000" + l2_others_max: "5000" + sctp_max: "5000" + tcp_max: "40000" + tcpfin_rst_max: "40000" + tcpsyn_ack_max: "40000" + tcpsyn_max: "40000" + udp_max: "40000" + htab_dedi_queue_nr: "4" + htab_msg_queue: "data" + htx_icmp_csum_chk: "drop" + inbound_dscp_copy_port: + - + interface: "<your_own_value>" intf_shaping_offload: "enable" + ip_fragment_offload: "disable" + ip_reassembly: + max_timeout: "200000" + min_timeout: "64" + status: "disable" ipsec_dec_subengine_mask: "<your_own_value>" ipsec_enc_subengine_mask: "<your_own_value>" ipsec_inbound_cache: "enable" ipsec_mtu_override: "disable" + ipsec_ob_np_sel: "rr" ipsec_over_vlink: "enable" isf_np_queues: cos0: "<your_own_value> (source system.isf-queue-profile.name)" @@ -442,7 +3385,329 @@ EXAMPLES = """ cos6: "<your_own_value> (source system.isf-queue-profile.name)" cos7: "<your_own_value> (source system.isf-queue-profile.name)" lag_out_port_select: "disable" + max_receive_unit: "0" + max_session_timeout: "40" mcast_session_accounting: "tpe-based" + napi_break_interval: "0" + np_queues: + ethernet_type: + - + name: "default_name_112" + queue: "0" + type: "<your_own_value>" + weight: "15" + ip_protocol: + - + name: "default_name_117" + protocol: "0" + queue: "0" + weight: "14" + ip_service: + - + dport: "0" + name: "default_name_123" + protocol: "0" + queue: "0" + sport: "0" + weight: "13" + profile: + - + cos0: "queue0" + cos1: "queue0" + cos2: "queue0" + cos3: "queue0" + cos4: "queue0" + cos5: "queue0" + cos6: "queue0" + cos7: "queue0" + dscp0: "queue0" + dscp1: "queue0" + dscp10: "queue0" + dscp11: "queue0" + dscp12: "queue0" + dscp13: "queue0" + dscp14: "queue0" + dscp15: "queue0" + dscp16: "queue0" + dscp17: "queue0" + dscp18: "queue0" + dscp19: "queue0" + dscp2: "queue0" + dscp20: "queue0" + dscp21: "queue0" + dscp22: "queue0" + dscp23: "queue0" + dscp24: "queue0" + dscp25: "queue0" + dscp26: "queue0" + dscp27: "queue0" + dscp28: "queue0" + dscp29: "queue0" + dscp3: "queue0" + dscp30: "queue0" + dscp31: "queue0" + dscp32: "queue0" + dscp33: "queue0" + dscp34: "queue0" + dscp35: "queue0" + dscp36: "queue0" + dscp37: "queue0" + dscp38: "queue0" + dscp39: "queue0" + dscp4: "queue0" + dscp40: "queue0" + dscp41: "queue0" + dscp42: "queue0" + dscp43: "queue0" + dscp44: "queue0" + dscp45: "queue0" + dscp46: "queue0" + dscp47: "queue0" + dscp48: "queue0" + dscp49: "queue0" + dscp5: "queue0" + dscp50: "queue0" + dscp51: "queue0" + dscp52: "queue0" + dscp53: "queue0" + dscp54: "queue0" + dscp55: "queue0" + dscp56: "queue0" + dscp57: "queue0" + dscp58: "queue0" + dscp59: "queue0" + dscp6: "queue0" + dscp60: "queue0" + dscp61: "queue0" + dscp62: "queue0" + dscp63: "queue0" + dscp7: "queue0" + dscp8: "queue0" + dscp9: "queue0" + id: "201" + type: "cos" + weight: "6" + scheduler: + - + mode: "none" + name: "default_name_206" + npu_group_effective_scope: "255" + npu_tcam: + - + data: + df: "enable" + dstip: "<your_own_value>" + dstipv6: "<your_own_value>" + dstmac: "<your_own_value>" + dstport: "0" + ethertype: "<your_own_value>" + ext_tag: "enable" + frag_off: "0" + gen_buf_cnt: "0" + gen_iv: "valid" + gen_l3_flags: "0" + gen_l4_flags: "0" + gen_pkt_ctrl: "0" + gen_pri: "0" + gen_pri_v: "valid" + gen_tv: "valid" + ihl: "0" + ip4_id: "0" + ip6_fl: "0" + ipver: "0" + l4_wd10: "0" + l4_wd11: "0" + l4_wd8: "0" + l4_wd9: "0" + mf: "enable" + protocol: "0" + slink: "0" + smac_change: "enable" + sp: "0" + src_cfi: "enable" + src_prio: "0" + src_updt: "enable" + srcip: "<your_own_value>" + srcipv6: "<your_own_value>" + srcmac: "<your_own_value>" + srcport: "0" + svid: "0" + tcp_ack: "enable" + tcp_cwr: "enable" + tcp_ece: "enable" + tcp_fin: "enable" + tcp_push: "enable" + tcp_rst: "enable" + tcp_syn: "enable" + tcp_urg: "enable" + tgt_cfi: "enable" + tgt_prio: "0" + tgt_updt: "enable" + tgt_v: "valid" + tos: "0" + tp: "0" + ttl: "0" + tvid: "0" + vdid: "0" + mask: + df: "enable" + dstip: "<your_own_value>" + dstipv6: "<your_own_value>" + dstmac: "<your_own_value>" + dstport: "0" + ethertype: "<your_own_value>" + ext_tag: "enable" + frag_off: "0" + gen_buf_cnt: "0" + gen_iv: "valid" + gen_l3_flags: "0" + gen_l4_flags: "0" + gen_pkt_ctrl: "0" + gen_pri: "0" + gen_pri_v: "valid" + gen_tv: "valid" + ihl: "0" + ip4_id: "0" + ip6_fl: "0" + ipver: "0" + l4_wd10: "0" + l4_wd11: "0" + l4_wd8: "0" + l4_wd9: "0" + mf: "enable" + protocol: "0" + slink: "0" + smac_change: "enable" + sp: "0" + src_cfi: "enable" + src_prio: "0" + src_updt: "enable" + srcip: "<your_own_value>" + srcipv6: "<your_own_value>" + srcmac: "<your_own_value>" + srcport: "0" + svid: "0" + tcp_ack: "enable" + tcp_cwr: "enable" + tcp_ece: "enable" + tcp_fin: "enable" + tcp_push: "enable" + tcp_rst: "enable" + tcp_syn: "enable" + tcp_urg: "enable" + tgt_cfi: "enable" + tgt_prio: "0" + tgt_updt: "enable" + tgt_v: "valid" + tos: "0" + tp: "0" + ttl: "0" + tvid: "0" + vdid: "0" + mir_act: + vlif: "0" + name: "default_name_321" + oid: "0" + pri_act: + priority: "0" + weight: "0" + sact: + act: "0" + act_v: "enable" + bmproc: "0" + bmproc_v: "enable" + df_lif: "0" + df_lif_v: "enable" + dfr: "0" + dfr_v: "enable" + dmac_skip: "0" + dmac_skip_v: "enable" + dosen: "0" + dosen_v: "enable" + espff_proc: "0" + espff_proc_v: "enable" + etype_pid: "0" + etype_pid_v: "enable" + frag_proc: "0" + frag_proc_v: "enable" + fwd: "0" + fwd_lif: "0" + fwd_lif_v: "enable" + fwd_tvid: "0" + fwd_tvid_v: "enable" + fwd_v: "enable" + icpen: "0" + icpen_v: "enable" + igmp_mld_snp: "0" + igmp_mld_snp_v: "enable" + learn: "0" + learn_v: "enable" + m_srh_ctrl: "0" + m_srh_ctrl_v: "enable" + mac_id: "0" + mac_id_v: "enable" + mss: "0" + mss_v: "enable" + pleen: "0" + pleen_v: "enable" + prio_pid: "0" + prio_pid_v: "enable" + promis: "0" + promis_v: "enable" + rfsh: "0" + rfsh_v: "enable" + smac_skip: "0" + smac_skip_v: "enable" + tp_smchk: "0" + tp_smchk_v: "enable" + tpe_id: "0" + tpe_id_v: "enable" + vdm: "0" + vdm_v: "enable" + vdom_id: "0" + vdom_id_v: "enable" + x_mode: "0" + x_mode_v: "enable" + tact: + act: "0" + act_v: "enable" + fmtuv4_s: "0" + fmtuv4_s_v: "enable" + fmtuv6_s: "0" + fmtuv6_s_v: "enable" + lnkid: "0" + lnkid_v: "enable" + mac_id: "0" + mac_id_v: "enable" + mss_t: "0" + mss_t_v: "enable" + mtuv4: "0" + mtuv4_v: "enable" + mtuv6: "0" + mtuv6_v: "enable" + slif_act: "0" + slif_act_v: "enable" + sublnkid: "0" + sublnkid_v: "enable" + tgtv_act: "0" + tgtv_act_v: "enable" + tlif_act: "0" + tlif_act_v: "enable" + tpeid: "0" + tpeid_v: "enable" + v6fe: "0" + v6fe_v: "enable" + vep_en: "0" + vep_en_v: "enable" + vep_slid: "0" + vep_slid_v: "enable" + xlt_lif: "0" + xlt_lif_v: "enable" + xlt_vid: "0" + xlt_vid_v: "enable" + type: "L2_src_tc" + vid: "0" + per_session_accounting: "traffic-log-only" port_cpu_map: - cpu_core: "<your_own_value>" @@ -451,13 +3716,20 @@ EXAMPLES = """ - interface: "<your_own_value>" npu_group_index: "0" + port_path_option: + ports_using_npu: + - + interface_name: "<your_own_value>" priority_protocol: bfd: "enable" bgp: "enable" slbc: "enable" qos_mode: "disable" + qtm_buf_mode: "6ch" rdp_offload: "enable" + session_acct_interval: "5" session_denied_offload: "disable" + shaping_stats: "disable" sse_backpressure: "enable" strip_clear_text_padding: "enable" strip_esp_padding: "enable" @@ -476,6 +3748,8 @@ EXAMPLES = """ draco15: "enable" tcp_udp_port: "include" uesp_offload: "enable" + ull_port_mode: "10G" + vlan_lookup_cache: "enable" """ RETURN = """ @@ -562,24 +3836,51 @@ def filter_system_npu_data(json): "capwap_offload", "dedicated_management_affinity", "dedicated_management_cpu", + "default_qos_type", + "dos_options", + "double_level_mcast_offload", + "dsw_dts_profile", + "dsw_queue_dts_profile", "fastpath", + "fp_anomaly", "gtp_enhanced_cpu_range", "gtp_enhanced_mode", + "gtp_support", + "hash_tbl_spread", + "hpe", + "htab_dedi_queue_nr", + "htab_msg_queue", + "htx_icmp_csum_chk", + "inbound_dscp_copy_port", "intf_shaping_offload", + "ip_fragment_offload", + "ip_reassembly", "ipsec_dec_subengine_mask", "ipsec_enc_subengine_mask", "ipsec_inbound_cache", "ipsec_mtu_override", + "ipsec_ob_np_sel", "ipsec_over_vlink", "isf_np_queues", "lag_out_port_select", + "max_receive_unit", + "max_session_timeout", "mcast_session_accounting", + "napi_break_interval", + "np_queues", + "npu_group_effective_scope", + "npu_tcam", + "per_session_accounting", "port_cpu_map", "port_npu_map", + "port_path_option", "priority_protocol", "qos_mode", + "qtm_buf_mode", "rdp_offload", + "session_acct_interval", "session_denied_offload", + "shaping_stats", "sse_backpressure", "strip_clear_text_padding", "strip_esp_padding", @@ -587,6 +3888,8 @@ def filter_system_npu_data(json): "sw_np_bandwidth", "sw_tr_hash", "uesp_offload", + "ull_port_mode", + "vlan_lookup_cache", ] json = remove_invalid_fields(json) @@ -615,9 +3918,10 @@ def underscore_to_hyphen(data): def system_npu(data, fos): vdom = data["vdom"] system_npu_data = data["system_npu"] - filtered_data = underscore_to_hyphen(filter_system_npu_data(system_npu_data)) + filtered_data = filter_system_npu_data(system_npu_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "npu", data=filtered_data, vdom=vdom) + return fos.set("system", "npu", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -669,7 +3973,8 @@ versioned_schema = { "v_range": [ ["v6.4.0", "v6.4.0"], ["v7.2.0", "v7.2.0"], - ["v7.4.0", ""], + ["v7.4.0", "v7.4.1"], + ["v7.4.3", ""], ], "type": "string", "required": True, @@ -678,15 +3983,21 @@ versioned_schema = { "v_range": [ ["v6.4.0", "v6.4.0"], ["v7.2.0", "v7.2.0"], - ["v7.4.0", ""], + ["v7.4.0", "v7.4.1"], + ["v7.4.3", ""], ], "type": "string", }, }, - "v_range": [["v6.4.0", "v6.4.0"], ["v7.2.0", "v7.2.0"], ["v7.4.0", ""]], + "v_range": [ + ["v6.4.0", "v6.4.0"], + ["v7.2.0", "v7.2.0"], + ["v7.4.0", "v7.4.1"], + ["v7.4.3", ""], + ], }, "fastpath": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "disable"}, {"value": "enable"}], }, @@ -695,10 +4006,16 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, - "ipsec_enc_subengine_mask": {"v_range": [["v6.0.0", ""]], "type": "string"}, - "ipsec_dec_subengine_mask": {"v_range": [["v6.0.0", ""]], "type": "string"}, + "ipsec_enc_subengine_mask": { + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], + "type": "string", + }, + "ipsec_dec_subengine_mask": { + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], + "type": "string", + }, "sw_np_bandwidth": { - "v_range": [["v6.2.0", ""]], + "v_range": [["v6.2.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [ {"value": "0G"}, @@ -706,9 +4023,9 @@ versioned_schema = { {"value": "4G"}, {"value": "5G"}, {"value": "6G"}, - {"value": "7G", "v_range": [["v7.4.0", ""]]}, - {"value": "8G", "v_range": [["v7.4.0", ""]]}, - {"value": "9G", "v_range": [["v7.4.0", ""]]}, + {"value": "7G", "v_range": [["v7.4.0", "v7.4.1"], ["v7.4.3", ""]]}, + {"value": "8G", "v_range": [["v7.4.0", "v7.4.1"], ["v7.4.3", ""]]}, + {"value": "9G", "v_range": [["v7.4.0", "v7.4.1"], ["v7.4.3", ""]]}, ], }, "gtp_enhanced_mode": { @@ -717,52 +4034,57 @@ versioned_schema = { "options": [{"value": "enable"}, {"value": "disable"}], }, "gtp_enhanced_cpu_range": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "0"}, {"value": "1"}, {"value": "2"}], }, "intf_shaping_offload": { - "v_range": [["v6.4.0", ""]], + "v_range": [["v6.4.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, "strip_esp_padding": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, "strip_clear_text_padding": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, "ipsec_inbound_cache": { - "v_range": [["v6.2.0", ""]], + "v_range": [["v6.2.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, "sse_backpressure": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, "rdp_offload": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, "ipsec_over_vlink": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, "uesp_offload": { - "v_range": [["v7.0.0", ""]], + "v_range": [["v7.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, "qos_mode": { - "v_range": [["v6.4.0", "v6.4.0"], ["v7.2.0", "v7.2.0"], ["v7.4.0", ""]], + "v_range": [ + ["v6.4.0", "v6.4.0"], + ["v7.2.0", "v7.2.0"], + ["v7.4.0", "v7.4.1"], + ["v7.4.3", ""], + ], "type": "string", "options": [ {"value": "disable"}, @@ -771,14 +4093,20 @@ versioned_schema = { ], }, "isf_np_queues": { - "v_range": [["v6.4.0", "v6.4.0"], ["v7.2.0", "v7.2.0"], ["v7.4.0", ""]], + "v_range": [ + ["v6.4.0", "v6.4.0"], + ["v7.2.0", "v7.2.0"], + ["v7.4.0", "v7.4.1"], + ["v7.4.3", ""], + ], "type": "dict", "children": { "cos0": { "v_range": [ ["v6.4.0", "v6.4.0"], ["v7.2.0", "v7.2.0"], - ["v7.4.0", ""], + ["v7.4.0", "v7.4.1"], + ["v7.4.3", ""], ], "type": "string", }, @@ -786,7 +4114,8 @@ versioned_schema = { "v_range": [ ["v6.4.0", "v6.4.0"], ["v7.2.0", "v7.2.0"], - ["v7.4.0", ""], + ["v7.4.0", "v7.4.1"], + ["v7.4.3", ""], ], "type": "string", }, @@ -794,7 +4123,8 @@ versioned_schema = { "v_range": [ ["v6.4.0", "v6.4.0"], ["v7.2.0", "v7.2.0"], - ["v7.4.0", ""], + ["v7.4.0", "v7.4.1"], + ["v7.4.3", ""], ], "type": "string", }, @@ -802,7 +4132,8 @@ versioned_schema = { "v_range": [ ["v6.4.0", "v6.4.0"], ["v7.2.0", "v7.2.0"], - ["v7.4.0", ""], + ["v7.4.0", "v7.4.1"], + ["v7.4.3", ""], ], "type": "string", }, @@ -810,7 +4141,8 @@ versioned_schema = { "v_range": [ ["v6.4.0", "v6.4.0"], ["v7.2.0", "v7.2.0"], - ["v7.4.0", ""], + ["v7.4.0", "v7.4.1"], + ["v7.4.3", ""], ], "type": "string", }, @@ -818,7 +4150,8 @@ versioned_schema = { "v_range": [ ["v6.4.0", "v6.4.0"], ["v7.2.0", "v7.2.0"], - ["v7.4.0", ""], + ["v7.4.0", "v7.4.1"], + ["v7.4.3", ""], ], "type": "string", }, @@ -826,7 +4159,8 @@ versioned_schema = { "v_range": [ ["v6.4.0", "v6.4.0"], ["v7.2.0", "v7.2.0"], - ["v7.4.0", ""], + ["v7.4.0", "v7.4.1"], + ["v7.4.3", ""], ], "type": "string", }, @@ -834,7 +4168,8 @@ versioned_schema = { "v_range": [ ["v6.4.0", "v6.4.0"], ["v7.2.0", "v7.2.0"], - ["v7.4.0", ""], + ["v7.4.0", "v7.4.1"], + ["v7.4.3", ""], ], "type": "string", }, @@ -845,7 +4180,8 @@ versioned_schema = { ["v6.0.0", "v6.0.0"], ["v6.0.11", "v6.2.0"], ["v6.2.5", "v6.2.7"], - ["v6.4.4", ""], + ["v6.4.4", "v7.4.1"], + ["v7.4.3", ""], ], "type": "string", "options": [ @@ -855,21 +4191,30 @@ versioned_schema = { ], }, "ipsec_mtu_override": { - "v_range": [["v6.2.0", "v6.2.0"], ["v6.2.7", "v6.2.7"], ["v6.4.4", ""]], + "v_range": [ + ["v6.2.0", "v6.2.0"], + ["v6.2.7", "v6.2.7"], + ["v6.4.4", "v7.4.1"], + ["v7.4.3", ""], + ], "type": "string", "options": [{"value": "disable"}, {"value": "enable"}], }, "lag_out_port_select": { - "v_range": [["v6.2.0", "v6.2.7"], ["v6.4.1", ""]], + "v_range": [["v6.2.0", "v6.2.7"], ["v6.4.1", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "disable"}, {"value": "enable"}], }, "sw_eh_hash": { - "v_range": [["v7.2.0", "v7.2.0"], ["v7.4.0", ""]], + "v_range": [["v7.2.0", "v7.2.0"], ["v7.4.0", "v7.4.1"], ["v7.4.3", ""]], "type": "dict", "children": { "computation": { - "v_range": [["v7.2.0", "v7.2.0"], ["v7.4.0", ""]], + "v_range": [ + ["v7.2.0", "v7.2.0"], + ["v7.4.0", "v7.4.1"], + ["v7.4.3", ""], + ], "type": "string", "options": [ {"value": "xor16"}, @@ -879,88 +4224,150 @@ versioned_schema = { ], }, "ip_protocol": { - "v_range": [["v7.2.0", "v7.2.0"], ["v7.4.0", ""]], + "v_range": [ + ["v7.2.0", "v7.2.0"], + ["v7.4.0", "v7.4.1"], + ["v7.4.3", ""], + ], "type": "string", "options": [{"value": "include"}, {"value": "exclude"}], }, "source_ip_upper_16": { - "v_range": [["v7.2.0", "v7.2.0"], ["v7.4.0", ""]], + "v_range": [ + ["v7.2.0", "v7.2.0"], + ["v7.4.0", "v7.4.1"], + ["v7.4.3", ""], + ], "type": "string", "options": [{"value": "include"}, {"value": "exclude"}], }, "source_ip_lower_16": { - "v_range": [["v7.2.0", "v7.2.0"], ["v7.4.0", ""]], + "v_range": [ + ["v7.2.0", "v7.2.0"], + ["v7.4.0", "v7.4.1"], + ["v7.4.3", ""], + ], "type": "string", "options": [{"value": "include"}, {"value": "exclude"}], }, "destination_ip_upper_16": { - "v_range": [["v7.2.0", "v7.2.0"], ["v7.4.0", ""]], + "v_range": [ + ["v7.2.0", "v7.2.0"], + ["v7.4.0", "v7.4.1"], + ["v7.4.3", ""], + ], "type": "string", "options": [{"value": "include"}, {"value": "exclude"}], }, "destination_ip_lower_16": { - "v_range": [["v7.2.0", "v7.2.0"], ["v7.4.0", ""]], + "v_range": [ + ["v7.2.0", "v7.2.0"], + ["v7.4.0", "v7.4.1"], + ["v7.4.3", ""], + ], "type": "string", "options": [{"value": "include"}, {"value": "exclude"}], }, "source_port": { - "v_range": [["v7.2.0", "v7.2.0"], ["v7.4.0", ""]], + "v_range": [ + ["v7.2.0", "v7.2.0"], + ["v7.4.0", "v7.4.1"], + ["v7.4.3", ""], + ], "type": "string", "options": [{"value": "include"}, {"value": "exclude"}], }, "destination_port": { - "v_range": [["v7.2.0", "v7.2.0"], ["v7.4.0", ""]], + "v_range": [ + ["v7.2.0", "v7.2.0"], + ["v7.4.0", "v7.4.1"], + ["v7.4.3", ""], + ], "type": "string", "options": [{"value": "include"}, {"value": "exclude"}], }, "netmask_length": { - "v_range": [["v7.2.0", "v7.2.0"], ["v7.4.0", ""]], + "v_range": [ + ["v7.2.0", "v7.2.0"], + ["v7.4.0", "v7.4.1"], + ["v7.4.3", ""], + ], "type": "integer", }, }, }, "sw_tr_hash": { - "v_range": [["v7.4.0", ""]], + "v_range": [["v7.4.0", "v7.4.1"], ["v7.4.3", ""]], "type": "dict", "children": { "draco15": { - "v_range": [["v7.4.0", ""]], + "v_range": [["v7.4.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, "tcp_udp_port": { - "v_range": [["v7.4.0", ""]], + "v_range": [["v7.4.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "include"}, {"value": "exclude"}], }, }, }, "session_denied_offload": { - "v_range": [["v7.0.0", ""]], + "v_range": [["v7.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "disable"}, {"value": "enable"}], }, "priority_protocol": { - "v_range": [["v6.0.0", "v6.0.0"], ["v6.0.11", ""]], + "v_range": [["v6.0.0", "v6.0.0"], ["v6.0.11", "v7.4.1"], ["v7.4.3", ""]], "type": "dict", "children": { "bgp": { - "v_range": [["v6.0.0", "v6.0.0"], ["v6.0.11", ""]], + "v_range": [ + ["v6.0.0", "v6.0.0"], + ["v6.0.11", "v7.4.1"], + ["v7.4.3", ""], + ], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, "slbc": { - "v_range": [["v6.0.0", "v6.0.0"], ["v6.0.11", ""]], + "v_range": [ + ["v6.0.0", "v6.0.0"], + ["v6.0.11", "v7.4.1"], + ["v7.4.3", ""], + ], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, "bfd": { - "v_range": [["v6.0.0", "v6.0.0"], ["v6.0.11", ""]], + "v_range": [ + ["v6.0.0", "v6.0.0"], + ["v6.0.11", "v7.4.1"], + ["v7.4.3", ""], + ], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, }, }, + "port_path_option": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "dict", + "children": { + "ports_using_npu": { + "type": "list", + "elements": "dict", + "children": { + "interface_name": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "required": True, + } + }, + "v_range": [["v7.4.2", "v7.4.2"]], + } + }, + }, "port_npu_map": { "type": "list", "elements": "dict", @@ -970,6 +4377,7 @@ versioned_schema = { ["v6.0.0", "v6.2.7"], ["v6.4.1", "v7.0.12"], ["v7.2.1", "v7.2.4"], + ["v7.4.2", "v7.4.2"], ], "type": "string", "required": True, @@ -979,6 +4387,7 @@ versioned_schema = { ["v6.0.0", "v6.2.7"], ["v6.4.1", "v7.0.12"], ["v7.2.1", "v7.2.4"], + ["v7.4.2", "v7.4.2"], ], "type": "integer", }, @@ -987,8 +4396,2536 @@ versioned_schema = { ["v6.0.0", "v6.2.7"], ["v6.4.1", "v7.0.12"], ["v7.2.1", "v7.2.4"], + ["v7.4.2", "v7.4.2"], + ], + }, + "ipsec_ob_np_sel": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "rr"}, {"value": "Packet"}, {"value": "Hash"}], + }, + "npu_group_effective_scope": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "dos_options": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "dict", + "children": { + "npu_dos_meter_mode": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "global"}, {"value": "local"}], + }, + "npu_dos_tpe_mode": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + }, + }, + "napi_break_interval": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "hpe": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "dict", + "children": { + "all_protocol": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "tcpsyn_max": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "tcpsyn_ack_max": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "tcpfin_rst_max": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "tcp_max": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "udp_max": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "icmp_max": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "sctp_max": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "esp_max": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "ip_frag_max": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "ip_others_max": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "arp_max": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "l2_others_max": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "high_priority": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "enable_shaper": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "disable"}, {"value": "enable"}], + }, + }, + }, + "default_qos_type": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "policing"}, + {"value": "shaping"}, + {"value": "policing-enhanced"}, + ], + }, + "shaping_stats": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "disable"}, {"value": "enable"}], + }, + "gtp_support": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "per_session_accounting": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "traffic-log-only"}, + {"value": "disable"}, + {"value": "enable"}, ], }, + "session_acct_interval": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "max_session_timeout": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "fp_anomaly": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "dict", + "children": { + "tcp_syn_fin": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "allow"}, + {"value": "drop"}, + {"value": "trap-to-host"}, + ], + }, + "tcp_fin_noack": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "allow"}, + {"value": "drop"}, + {"value": "trap-to-host"}, + ], + }, + "tcp_fin_only": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "allow"}, + {"value": "drop"}, + {"value": "trap-to-host"}, + ], + }, + "tcp_no_flag": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "allow"}, + {"value": "drop"}, + {"value": "trap-to-host"}, + ], + }, + "tcp_syn_data": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "allow"}, + {"value": "drop"}, + {"value": "trap-to-host"}, + ], + }, + "tcp_winnuke": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "allow"}, + {"value": "drop"}, + {"value": "trap-to-host"}, + ], + }, + "tcp_land": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "allow"}, + {"value": "drop"}, + {"value": "trap-to-host"}, + ], + }, + "udp_land": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "allow"}, + {"value": "drop"}, + {"value": "trap-to-host"}, + ], + }, + "icmp_land": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "allow"}, + {"value": "drop"}, + {"value": "trap-to-host"}, + ], + }, + "icmp_frag": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "allow"}, + {"value": "drop"}, + {"value": "trap-to-host"}, + ], + }, + "ipv4_land": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "allow"}, + {"value": "drop"}, + {"value": "trap-to-host"}, + ], + }, + "ipv4_proto_err": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "allow"}, + {"value": "drop"}, + {"value": "trap-to-host"}, + ], + }, + "ipv4_unknopt": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "allow"}, + {"value": "drop"}, + {"value": "trap-to-host"}, + ], + }, + "ipv4_optrr": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "allow"}, + {"value": "drop"}, + {"value": "trap-to-host"}, + ], + }, + "ipv4_optssrr": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "allow"}, + {"value": "drop"}, + {"value": "trap-to-host"}, + ], + }, + "ipv4_optlsrr": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "allow"}, + {"value": "drop"}, + {"value": "trap-to-host"}, + ], + }, + "ipv4_optstream": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "allow"}, + {"value": "drop"}, + {"value": "trap-to-host"}, + ], + }, + "ipv4_optsecurity": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "allow"}, + {"value": "drop"}, + {"value": "trap-to-host"}, + ], + }, + "ipv4_opttimestamp": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "allow"}, + {"value": "drop"}, + {"value": "trap-to-host"}, + ], + }, + "ipv4_csum_err": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "drop"}, {"value": "trap-to-host"}], + }, + "tcp_csum_err": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "drop"}, {"value": "trap-to-host"}], + }, + "udp_csum_err": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "drop"}, {"value": "trap-to-host"}], + }, + "icmp_csum_err": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "drop"}, {"value": "trap-to-host"}], + }, + "ipv6_land": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "allow"}, + {"value": "drop"}, + {"value": "trap-to-host"}, + ], + }, + "ipv6_proto_err": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "allow"}, + {"value": "drop"}, + {"value": "trap-to-host"}, + ], + }, + "ipv6_unknopt": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "allow"}, + {"value": "drop"}, + {"value": "trap-to-host"}, + ], + }, + "ipv6_saddr_err": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "allow"}, + {"value": "drop"}, + {"value": "trap-to-host"}, + ], + }, + "ipv6_daddr_err": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "allow"}, + {"value": "drop"}, + {"value": "trap-to-host"}, + ], + }, + "ipv6_optralert": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "allow"}, + {"value": "drop"}, + {"value": "trap-to-host"}, + ], + }, + "ipv6_optjumbo": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "allow"}, + {"value": "drop"}, + {"value": "trap-to-host"}, + ], + }, + "ipv6_opttunnel": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "allow"}, + {"value": "drop"}, + {"value": "trap-to-host"}, + ], + }, + "ipv6_opthomeaddr": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "allow"}, + {"value": "drop"}, + {"value": "trap-to-host"}, + ], + }, + "ipv6_optnsap": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "allow"}, + {"value": "drop"}, + {"value": "trap-to-host"}, + ], + }, + "ipv6_optendpid": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "allow"}, + {"value": "drop"}, + {"value": "trap-to-host"}, + ], + }, + "ipv6_optinvld": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "allow"}, + {"value": "drop"}, + {"value": "trap-to-host"}, + ], + }, + }, + }, + "ip_reassembly": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "dict", + "children": { + "min_timeout": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "max_timeout": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "status": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "disable"}, {"value": "enable"}], + }, + }, + }, + "hash_tbl_spread": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "vlan_lookup_cache": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "ip_fragment_offload": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "disable"}, {"value": "enable"}], + }, + "htx_icmp_csum_chk": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "drop"}, {"value": "pass"}], + }, + "htab_msg_queue": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "data"}, {"value": "idle"}, {"value": "dedicated"}], + }, + "htab_dedi_queue_nr": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "dsw_dts_profile": { + "type": "list", + "elements": "dict", + "children": { + "profile_id": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + "required": True, + }, + "min_limit": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "step": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "action": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "wait"}, + {"value": "drop"}, + {"value": "drop_tmr_0"}, + {"value": "drop_tmr_1"}, + {"value": "enque"}, + {"value": "enque_0"}, + {"value": "enque_1"}, + ], + }, + }, + "v_range": [["v7.4.2", "v7.4.2"]], + }, + "dsw_queue_dts_profile": { + "type": "list", + "elements": "dict", + "children": { + "name": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "required": True, + }, + "iport": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "eif0"}, + {"value": "eif1"}, + {"value": "eif2"}, + {"value": "eif3"}, + {"value": "eif4"}, + {"value": "eif5"}, + {"value": "eif6"}, + {"value": "eif7"}, + {"value": "htx0"}, + {"value": "htx1"}, + {"value": "sse0"}, + {"value": "sse1"}, + {"value": "sse2"}, + {"value": "sse3"}, + {"value": "rlt"}, + {"value": "dfr"}, + {"value": "ipseci"}, + {"value": "ipseco"}, + {"value": "ipti"}, + {"value": "ipto"}, + {"value": "vep0"}, + {"value": "vep2"}, + {"value": "vep4"}, + {"value": "vep6"}, + {"value": "ivs"}, + {"value": "l2ti1"}, + {"value": "l2to"}, + {"value": "l2ti0"}, + {"value": "ple"}, + {"value": "spath"}, + {"value": "qtm"}, + ], + }, + "oport": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "eif0"}, + {"value": "eif1"}, + {"value": "eif2"}, + {"value": "eif3"}, + {"value": "eif4"}, + {"value": "eif5"}, + {"value": "eif6"}, + {"value": "eif7"}, + {"value": "hrx"}, + {"value": "sse0"}, + {"value": "sse1"}, + {"value": "sse2"}, + {"value": "sse3"}, + {"value": "rlt"}, + {"value": "dfr"}, + {"value": "ipseci"}, + {"value": "ipseco"}, + {"value": "ipti"}, + {"value": "ipto"}, + {"value": "vep0"}, + {"value": "vep2"}, + {"value": "vep4"}, + {"value": "vep6"}, + {"value": "ivs"}, + {"value": "l2ti1"}, + {"value": "l2to"}, + {"value": "l2ti0"}, + {"value": "ple"}, + {"value": "sync"}, + {"value": "nss"}, + {"value": "tsk"}, + {"value": "qtm"}, + ], + }, + "profile_id": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "queue_select": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + }, + "v_range": [["v7.4.2", "v7.4.2"]], + }, + "npu_tcam": { + "type": "list", + "elements": "dict", + "children": { + "name": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "required": True, + }, + "type": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "L2_src_tc"}, + {"value": "L2_tgt_tc"}, + {"value": "L2_src_mir"}, + {"value": "L2_tgt_mir"}, + {"value": "L2_src_act"}, + {"value": "L2_tgt_act"}, + {"value": "IPv4_src_tc"}, + {"value": "IPv4_tgt_tc"}, + {"value": "IPv4_src_mir"}, + {"value": "IPv4_tgt_mir"}, + {"value": "IPv4_src_act"}, + {"value": "IPv4_tgt_act"}, + {"value": "IPv6_src_tc"}, + {"value": "IPv6_tgt_tc"}, + {"value": "IPv6_src_mir"}, + {"value": "IPv6_tgt_mir"}, + {"value": "IPv6_src_act"}, + {"value": "IPv6_tgt_act"}, + ], + }, + "oid": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "vid": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "data": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "dict", + "children": { + "gen_buf_cnt": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "gen_pri": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "gen_pri_v": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "valid"}, {"value": "invalid"}], + }, + "gen_iv": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "valid"}, {"value": "invalid"}], + }, + "gen_tv": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "valid"}, {"value": "invalid"}], + }, + "gen_pkt_ctrl": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "gen_l3_flags": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "gen_l4_flags": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "vdid": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "tp": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "tgt_updt": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "smac_change": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "ext_tag": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "tgt_v": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "valid"}, {"value": "invalid"}], + }, + "tvid": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "tgt_cfi": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "tgt_prio": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "sp": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "src_updt": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "slink": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "svid": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "src_cfi": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "src_prio": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "srcmac": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "string"}, + "dstmac": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "string"}, + "ethertype": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + }, + "ipver": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "ihl": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "ip4_id": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "srcip": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "string"}, + "dstip": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "string"}, + "ip6_fl": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "srcipv6": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + }, + "dstipv6": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + }, + "ttl": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "protocol": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "tos": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "frag_off": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "mf": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "df": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "srcport": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "dstport": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "tcp_fin": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "tcp_syn": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "tcp_rst": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "tcp_push": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "tcp_ack": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "tcp_urg": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "tcp_ece": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "tcp_cwr": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "l4_wd8": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "l4_wd9": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "l4_wd10": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "l4_wd11": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + }, + }, + "mask": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "dict", + "children": { + "gen_buf_cnt": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "gen_pri": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "gen_pri_v": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "valid"}, {"value": "invalid"}], + }, + "gen_iv": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "valid"}, {"value": "invalid"}], + }, + "gen_tv": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "valid"}, {"value": "invalid"}], + }, + "gen_pkt_ctrl": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "gen_l3_flags": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "gen_l4_flags": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "vdid": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "tp": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "tgt_updt": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "smac_change": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "ext_tag": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "tgt_v": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "valid"}, {"value": "invalid"}], + }, + "tvid": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "tgt_cfi": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "tgt_prio": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "sp": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "src_updt": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "slink": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "svid": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "src_cfi": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "src_prio": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "srcmac": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "string"}, + "dstmac": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "string"}, + "ethertype": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + }, + "ipver": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "ihl": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "ip4_id": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "srcip": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "string"}, + "dstip": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "string"}, + "ip6_fl": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "srcipv6": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + }, + "dstipv6": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + }, + "ttl": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "protocol": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "tos": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "frag_off": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "mf": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "df": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "srcport": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "dstport": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "tcp_fin": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "tcp_syn": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "tcp_rst": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "tcp_push": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "tcp_ack": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "tcp_urg": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "tcp_ece": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "tcp_cwr": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "l4_wd8": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "l4_wd9": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "l4_wd10": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "l4_wd11": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + }, + }, + "mir_act": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "dict", + "children": { + "vlif": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"} + }, + }, + "pri_act": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "dict", + "children": { + "priority": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "weight": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + }, + }, + "sact": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "dict", + "children": { + "fwd_lif_v": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "fwd_lif": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "fwd_tvid_v": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "fwd_tvid": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "df_lif_v": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "df_lif": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "act_v": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "act": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "pleen_v": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "pleen": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "icpen_v": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "icpen": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "vdm_v": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "vdm": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "learn_v": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "learn": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "rfsh_v": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "rfsh": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "fwd_v": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "fwd": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "x_mode_v": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "x_mode": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "promis_v": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "promis": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "bmproc_v": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "bmproc": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "mac_id_v": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "mac_id": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "dosen_v": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "dosen": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "dfr_v": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "dfr": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "m_srh_ctrl_v": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "m_srh_ctrl": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "tpe_id_v": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "tpe_id": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "vdom_id_v": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "vdom_id": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "mss_v": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "mss": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "tp_smchk_v": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "tp_smchk": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "etype_pid_v": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "etype_pid": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "frag_proc_v": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "frag_proc": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "espff_proc_v": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "espff_proc": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "prio_pid_v": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "prio_pid": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "igmp_mld_snp_v": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "igmp_mld_snp": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "smac_skip_v": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "smac_skip": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "dmac_skip_v": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "dmac_skip": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + }, + }, + "tact": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "dict", + "children": { + "act_v": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "act": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "mtuv4_v": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "mtuv4": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "mtuv6_v": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "mtuv6": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "mac_id_v": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "mac_id": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "slif_act_v": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "slif_act": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "tlif_act_v": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "tlif_act": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "tgtv_act_v": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "tgtv_act": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "tpeid_v": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "tpeid": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "v6fe_v": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "v6fe": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "xlt_vid_v": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "xlt_vid": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "xlt_lif_v": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "xlt_lif": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "mss_t_v": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "mss_t": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "lnkid_v": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "lnkid": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "sublnkid_v": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "sublnkid": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "fmtuv4_s_v": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "fmtuv4_s": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "fmtuv6_s_v": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "fmtuv6_s": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "vep_en_v": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "vep_en": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "vep_slid_v": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "vep_slid": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + }, + }, + }, + "v_range": [["v7.4.2", "v7.4.2"]], + }, + "np_queues": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "dict", + "children": { + "profile": { + "type": "list", + "elements": "dict", + "children": { + "id": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + "required": True, + }, + "type": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "cos"}, {"value": "dscp"}], + }, + "weight": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "cos0": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "cos1": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "cos2": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "cos3": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "cos4": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "cos5": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "cos6": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "cos7": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp0": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp1": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp2": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp3": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp4": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp5": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp6": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp7": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp8": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp9": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp10": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp11": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp12": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp13": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp14": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp15": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp16": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp17": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp18": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp19": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp20": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp21": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp22": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp23": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp24": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp25": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp26": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp27": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp28": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp29": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp30": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp31": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp32": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp33": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp34": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp35": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp36": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp37": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp38": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp39": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp40": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp41": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp42": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp43": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp44": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp45": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp46": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp47": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp48": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp49": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp50": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp51": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp52": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp53": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp54": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp55": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp56": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp57": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp58": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp59": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp60": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp61": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp62": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + "dscp63": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "queue0"}, + {"value": "queue1"}, + {"value": "queue2"}, + {"value": "queue3"}, + {"value": "queue4"}, + {"value": "queue5"}, + {"value": "queue6"}, + {"value": "queue7"}, + ], + }, + }, + "v_range": [["v7.4.2", "v7.4.2"]], + }, + "ethernet_type": { + "type": "list", + "elements": "dict", + "children": { + "name": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "required": True, + }, + "type": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "string"}, + "queue": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "weight": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + }, + "v_range": [["v7.4.2", "v7.4.2"]], + }, + "ip_protocol": { + "type": "list", + "elements": "dict", + "children": { + "name": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "required": True, + }, + "protocol": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "queue": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "weight": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + }, + "v_range": [["v7.4.2", "v7.4.2"]], + }, + "ip_service": { + "type": "list", + "elements": "dict", + "children": { + "name": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "required": True, + }, + "protocol": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "sport": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "dport": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "queue": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, + "weight": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + }, + "v_range": [["v7.4.2", "v7.4.2"]], + }, + "scheduler": { + "type": "list", + "elements": "dict", + "children": { + "name": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "required": True, + }, + "mode": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [ + {"value": "none"}, + {"value": "priority"}, + {"value": "round-robin"}, + ], + }, + }, + "v_range": [["v7.4.2", "v7.4.2"]], + }, + }, + }, + "inbound_dscp_copy_port": { + "type": "list", + "elements": "dict", + "children": { + "interface": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "required": True, + } + }, + "v_range": [["v7.4.2", "v7.4.2"]], + }, + "double_level_mcast_offload": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "qtm_buf_mode": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "6ch"}, {"value": "4ch"}], + }, + "ull_port_mode": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "string", + "options": [{"value": "10G"}, {"value": "25G"}], + }, + "max_receive_unit": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, }, } diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_npu_vlink.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_npu_vlink.py new file mode 100644 index 000000000..fe1f2505a --- /dev/null +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_npu_vlink.py @@ -0,0 +1,352 @@ +#!/usr/bin/python +from __future__ import absolute_import, division, print_function + +# Copyright: (c) 2022 Fortinet +# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +__metaclass__ = type + +ANSIBLE_METADATA = { + "status": ["preview"], + "supported_by": "community", + "metadata_version": "1.1", +} + +DOCUMENTATION = """ +--- +module: fortios_system_npu_vlink +short_description: Configure NPU VDOM link in Fortinet's FortiOS and FortiGate. +description: + - This module is able to configure a FortiGate or FortiOS (FOS) device by allowing the + user to set and modify system feature and npu_vlink category. + Examples include all parameters and values need to be adjusted to datasources before usage. + Tested with FOS v6.0.0 +version_added: "2.0.0" +author: + - Link Zheng (@chillancezen) + - Jie Xue (@JieX19) + - Hongbin Lu (@fgtdev-hblu) + - Frank Shen (@frankshen01) + - Miguel Angel Munoz (@mamunozgonzalez) + - Nicolas Thomas (@thomnico) +notes: + - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks + +requirements: + - ansible>=2.15 +options: + access_token: + description: + - Token-based authentication. + Generated from GUI of Fortigate. + type: str + required: false + enable_log: + description: + - Enable/Disable logging for task. + type: bool + required: false + default: false + vdom: + description: + - Virtual domain, among those defined previously. A vdom is a + virtual instance of the FortiGate that can be configured and + used as a different unit. + type: str + default: root + member_path: + type: str + description: + - Member attribute path to operate on. + - Delimited by a slash character if there are more than one attribute. + - Parameter marked with member_path is legitimate for doing member operation. + member_state: + type: str + description: + - Add or delete a member under specified attribute path. + - When member_state is specified, the state option is ignored. + choices: + - 'present' + - 'absent' + + state: + description: + - Indicates whether to create or remove the object. + type: str + required: true + choices: + - 'present' + - 'absent' + system_npu_vlink: + description: + - Configure NPU VDOM link. + default: null + type: dict + suboptions: + name: + description: + - NPU VDOM link name in format npuX_vlink.X means x-th pair of npu-vlink.Maximum 14 characters. + required: true + type: str +""" + +EXAMPLES = """ +- name: Configure NPU VDOM link. + fortinet.fortios.fortios_system_npu_vlink: + vdom: "{{ vdom }}" + state: "present" + access_token: "<your_own_value>" + system_npu_vlink: + name: "default_name_3" +""" + +RETURN = """ +build: + description: Build number of the fortigate image + returned: always + type: str + sample: '1547' +http_method: + description: Last method used to provision the content into FortiGate + returned: always + type: str + sample: 'PUT' +http_status: + description: Last result given by FortiGate on last operation applied + returned: always + type: str + sample: "200" +mkey: + description: Master key (id) used in the last call to FortiGate + returned: success + type: str + sample: "id" +name: + description: Name of the table used to fulfill the request + returned: always + type: str + sample: "urlfilter" +path: + description: Path of the table used to fulfill the request + returned: always + type: str + sample: "webfilter" +revision: + description: Internal revision number + returned: always + type: str + sample: "17.0.2.10658" +serial: + description: Serial number of the unit + returned: always + type: str + sample: "FGVMEVYYQT3AB5352" +status: + description: Indication of the operation's result + returned: always + type: str + sample: "success" +vdom: + description: Virtual domain used + returned: always + type: str + sample: "root" +version: + description: Version of the FortiGate + returned: always + type: str + sample: "v5.6.3" +""" +from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.connection import Connection +from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.fortios import ( + FortiOSHandler, +) +from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.fortios import ( + check_legacy_fortiosapi, +) +from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.fortios import ( + schema_to_module_spec, +) +from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.fortios import ( + check_schema_versioning, +) +from ansible_collections.fortinet.fortios.plugins.module_utils.fortimanager.common import ( + FAIL_SOCKET_MSG, +) +from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.data_post_processor import ( + remove_invalid_fields, +) + + +def filter_system_npu_vlink_data(json): + option_list = ["name"] + + json = remove_invalid_fields(json) + dictionary = {} + + for attribute in option_list: + if attribute in json and json[attribute] is not None: + dictionary[attribute] = json[attribute] + + return dictionary + + +def underscore_to_hyphen(data): + if isinstance(data, list): + for i, elem in enumerate(data): + data[i] = underscore_to_hyphen(elem) + elif isinstance(data, dict): + new_data = {} + for k, v in data.items(): + new_data[k.replace("_", "-")] = underscore_to_hyphen(v) + data = new_data + + return data + + +def system_npu_vlink(data, fos): + vdom = data["vdom"] + + state = data["state"] + + system_npu_vlink_data = data["system_npu_vlink"] + filtered_data = filter_system_npu_vlink_data(system_npu_vlink_data) + converted_data = underscore_to_hyphen(filtered_data) + + if state == "present" or state is True: + return fos.set("system", "npu-vlink", data=converted_data, vdom=vdom) + + elif state == "absent": + return fos.delete("system", "npu-vlink", mkey=filtered_data["name"], vdom=vdom) + else: + fos._module.fail_json(msg="state must be present or absent!") + + +def is_successful_status(resp): + return ( + "status" in resp + and resp["status"] == "success" + or "http_status" in resp + and resp["http_status"] == 200 + or "http_method" in resp + and resp["http_method"] == "DELETE" + and resp["http_status"] == 404 + ) + + +def fortios_system(data, fos): + fos.do_member_operation("system", "npu-vlink") + if data["system_npu_vlink"]: + resp = system_npu_vlink(data, fos) + else: + fos._module.fail_json(msg="missing task body: %s" % ("system_npu_vlink")) + + return ( + not is_successful_status(resp), + is_successful_status(resp) + and (resp["revision_changed"] if "revision_changed" in resp else True), + resp, + {}, + ) + + +versioned_schema = { + "type": "list", + "elements": "dict", + "children": { + "name": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "string", "required": True} + }, + "v_range": [["v7.4.2", "v7.4.2"]], +} + + +def main(): + module_spec = schema_to_module_spec(versioned_schema) + mkeyname = "name" + fields = { + "access_token": {"required": False, "type": "str", "no_log": True}, + "enable_log": {"required": False, "type": "bool", "default": False}, + "vdom": {"required": False, "type": "str", "default": "root"}, + "member_path": {"required": False, "type": "str"}, + "member_state": { + "type": "str", + "required": False, + "choices": ["present", "absent"], + }, + "state": {"required": True, "type": "str", "choices": ["present", "absent"]}, + "system_npu_vlink": { + "required": False, + "type": "dict", + "default": None, + "options": {}, + }, + } + for attribute_name in module_spec["options"]: + fields["system_npu_vlink"]["options"][attribute_name] = module_spec["options"][ + attribute_name + ] + if mkeyname and mkeyname == attribute_name: + fields["system_npu_vlink"]["options"][attribute_name]["required"] = True + + module = AnsibleModule(argument_spec=fields, supports_check_mode=False) + check_legacy_fortiosapi(module) + + is_error = False + has_changed = False + result = None + diff = None + + versions_check_result = None + if module._socket_path: + connection = Connection(module._socket_path) + if "access_token" in module.params: + connection.set_option("access_token", module.params["access_token"]) + + if "enable_log" in module.params: + connection.set_option("enable_log", module.params["enable_log"]) + else: + connection.set_option("enable_log", False) + fos = FortiOSHandler(connection, module, mkeyname) + versions_check_result = check_schema_versioning( + fos, versioned_schema, "system_npu_vlink" + ) + + is_error, has_changed, result, diff = fortios_system(module.params, fos) + + else: + module.fail_json(**FAIL_SOCKET_MSG) + + if versions_check_result and versions_check_result["matched"] is False: + module.warn( + "Ansible has detected version mismatch between FortOS system and your playbook, see more details by specifying option -vvv" + ) + + if not is_error: + if versions_check_result and versions_check_result["matched"] is False: + module.exit_json( + changed=has_changed, + version_check_warning=versions_check_result, + meta=result, + diff=diff, + ) + else: + module.exit_json(changed=has_changed, meta=result, diff=diff) + else: + if versions_check_result and versions_check_result["matched"] is False: + module.fail_json( + msg="Error in repo", + version_check_warning=versions_check_result, + meta=result, + ) + else: + module.fail_json(msg="Error in repo", meta=result) + + +if __name__ == "__main__": + main() diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ntp.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ntp.py index 26877a2b7..cc4ba6591 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ntp.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ntp.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -143,6 +143,14 @@ options: - 'auto' - 'sdwan' - 'specify' + ip_type: + description: + - Choose to connect to IPv4 or/and IPv6 NTP server. + type: str + choices: + - 'IPv6' + - 'IPv4' + - 'Both' key: description: - Key for MD5(NTPv3)/SHA1(NTPv4) authentication. @@ -216,6 +224,7 @@ EXAMPLES = """ id: "11" interface: "<your_own_value> (source system.interface.name)" interface_select_method: "auto" + ip_type: "IPv6" key: "<your_own_value>" key_id: "0" ntpv3: "enable" @@ -349,9 +358,10 @@ def underscore_to_hyphen(data): def system_ntp(data, fos): vdom = data["vdom"] system_ntp_data = data["system_ntp"] - filtered_data = underscore_to_hyphen(filter_system_ntp_data(system_ntp_data)) + filtered_data = filter_system_ntp_data(system_ntp_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "ntp", data=filtered_data, vdom=vdom) + return fos.set("system", "ntp", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -419,6 +429,15 @@ versioned_schema = { }, "key": {"v_range": [["v6.0.0", ""]], "type": "string"}, "key_id": {"v_range": [["v6.0.0", ""]], "type": "integer"}, + "ip_type": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [ + {"value": "IPv6"}, + {"value": "IPv4"}, + {"value": "Both"}, + ], + }, "interface_select_method": { "v_range": [ ["v6.2.0", "v6.2.0"], diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_object_tagging.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_object_tagging.py index 0a041c077..e3e3f424a 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_object_tagging.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_object_tagging.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -287,9 +287,8 @@ def system_object_tagging(data, fos, check_mode=False): state = data["state"] system_object_tagging_data = data["system_object_tagging"] - filtered_data = underscore_to_hyphen( - filter_system_object_tagging_data(system_object_tagging_data) - ) + filtered_data = filter_system_object_tagging_data(system_object_tagging_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -353,7 +352,7 @@ def system_object_tagging(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "object-tagging", data=filtered_data, vdom=vdom) + return fos.set("system", "object-tagging", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_password_policy.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_password_policy.py index 06156b261..3e9d7598f 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_password_policy.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_password_policy.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -318,11 +318,10 @@ def system_password_policy(data, fos): system_password_policy_data = flatten_multilists_attributes( system_password_policy_data ) - filtered_data = underscore_to_hyphen( - filter_system_password_policy_data(system_password_policy_data) - ) + filtered_data = filter_system_password_policy_data(system_password_policy_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "password-policy", data=filtered_data, vdom=vdom) + return fos.set("system", "password-policy", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_password_policy_guest_admin.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_password_policy_guest_admin.py index 0c4b9954d..219d563bb 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_password_policy_guest_admin.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_password_policy_guest_admin.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -317,14 +317,13 @@ def system_password_policy_guest_admin(data, fos): system_password_policy_guest_admin_data = flatten_multilists_attributes( system_password_policy_guest_admin_data ) - filtered_data = underscore_to_hyphen( - filter_system_password_policy_guest_admin_data( - system_password_policy_guest_admin_data - ) + filtered_data = filter_system_password_policy_guest_admin_data( + system_password_policy_guest_admin_data ) + converted_data = underscore_to_hyphen(filtered_data) return fos.set( - "system", "password-policy-guest-admin", data=filtered_data, vdom=vdom + "system", "password-policy-guest-admin", data=converted_data, vdom=vdom ) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_pcp_server.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_pcp_server.py index 2f422f193..e2704af97 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_pcp_server.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_pcp_server.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -380,11 +380,10 @@ def system_pcp_server(data, fos): vdom = data["vdom"] system_pcp_server_data = data["system_pcp_server"] system_pcp_server_data = flatten_multilists_attributes(system_pcp_server_data) - filtered_data = underscore_to_hyphen( - filter_system_pcp_server_data(system_pcp_server_data) - ) + filtered_data = filter_system_pcp_server_data(system_pcp_server_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "pcp-server", data=filtered_data, vdom=vdom) + return fos.set("system", "pcp-server", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_performance_top.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_performance_top.py index 5088314dd..4ea9f8622 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_performance_top.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_performance_top.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -200,9 +200,9 @@ def underscore_to_hyphen(data): def valid_attr_to_invalid_attr(data): - specillist = {"<delay>": "delay"} + speciallist = {"<delay>": "delay"} - for k, v in specillist.items(): + for k, v in speciallist.items(): if v == data: return k @@ -211,8 +211,11 @@ def valid_attr_to_invalid_attr(data): def valid_attr_to_invalid_attrs(data): if isinstance(data, list): + new_data = [] for elem in data: elem = valid_attr_to_invalid_attrs(elem) + new_data.append(elem) + data = new_data elif isinstance(data, dict): new_data = {} for k, v in data.items(): @@ -225,10 +228,8 @@ def valid_attr_to_invalid_attrs(data): def system_performance_top(data, fos): vdom = data["vdom"] system_performance_top_data = data["system_performance_top"] - filtered_data = underscore_to_hyphen( - filter_system_performance_top_data(system_performance_top_data) - ) - converted_data = valid_attr_to_invalid_attrs(filtered_data) + filtered_data = filter_system_performance_top_data(system_performance_top_data) + converted_data = underscore_to_hyphen(valid_attr_to_invalid_attrs(filtered_data)) return fos.set("system.performance", "top", data=converted_data, vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_physical_switch.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_physical_switch.py index c4f6ae74d..c7edc61ef 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_physical_switch.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_physical_switch.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -278,9 +278,8 @@ def system_physical_switch(data, fos, check_mode=False): state = data["state"] system_physical_switch_data = data["system_physical_switch"] - filtered_data = underscore_to_hyphen( - filter_system_physical_switch_data(system_physical_switch_data) - ) + filtered_data = filter_system_physical_switch_data(system_physical_switch_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -344,7 +343,7 @@ def system_physical_switch(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "physical-switch", data=filtered_data, vdom=vdom) + return fos.set("system", "physical-switch", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( @@ -392,6 +391,7 @@ versioned_schema = { ["v6.0.0", "v6.2.7"], ["v6.4.1", "v7.0.12"], ["v7.2.1", "v7.2.4"], + ["v7.4.2", "v7.4.2"], ], "type": "string", "required": True, @@ -401,6 +401,7 @@ versioned_schema = { ["v6.0.0", "v6.2.7"], ["v6.4.1", "v7.0.12"], ["v7.2.1", "v7.2.4"], + ["v7.4.2", "v7.4.2"], ], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], @@ -410,6 +411,7 @@ versioned_schema = { ["v6.0.0", "v6.2.7"], ["v6.4.1", "v7.0.12"], ["v7.2.1", "v7.2.4"], + ["v7.4.2", "v7.4.2"], ], "type": "integer", }, @@ -449,7 +451,12 @@ versioned_schema = { "v_range": [["v6.0.0", "v6.0.11"], ["v6.2.3", "v6.2.3"]], }, }, - "v_range": [["v6.0.0", "v6.2.7"], ["v6.4.1", "v7.0.12"], ["v7.2.1", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v6.2.7"], + ["v6.4.1", "v7.0.12"], + ["v7.2.1", "v7.2.4"], + ["v7.4.2", "v7.4.2"], + ], } diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_pppoe_interface.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_pppoe_interface.py index 51237bd3f..546a90913 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_pppoe_interface.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_pppoe_interface.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -332,9 +332,8 @@ def system_pppoe_interface(data, fos, check_mode=False): state = data["state"] system_pppoe_interface_data = data["system_pppoe_interface"] - filtered_data = underscore_to_hyphen( - filter_system_pppoe_interface_data(system_pppoe_interface_data) - ) + filtered_data = filter_system_pppoe_interface_data(system_pppoe_interface_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -398,7 +397,7 @@ def system_pppoe_interface(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "pppoe-interface", data=filtered_data, vdom=vdom) + return fos.set("system", "pppoe-interface", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_probe_response.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_probe_response.py index 73b553fd3..b5a986ce7 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_probe_response.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_probe_response.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -251,11 +251,10 @@ def underscore_to_hyphen(data): def system_probe_response(data, fos): vdom = data["vdom"] system_probe_response_data = data["system_probe_response"] - filtered_data = underscore_to_hyphen( - filter_system_probe_response_data(system_probe_response_data) - ) + filtered_data = filter_system_probe_response_data(system_probe_response_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "probe-response", data=filtered_data, vdom=vdom) + return fos.set("system", "probe-response", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_proxy_arp.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_proxy_arp.py index 2cb1ac668..6f1e106b6 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_proxy_arp.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_proxy_arp.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -242,9 +242,8 @@ def system_proxy_arp(data, fos, check_mode=False): state = data["state"] system_proxy_arp_data = data["system_proxy_arp"] - filtered_data = underscore_to_hyphen( - filter_system_proxy_arp_data(system_proxy_arp_data) - ) + filtered_data = filter_system_proxy_arp_data(system_proxy_arp_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -308,7 +307,7 @@ def system_proxy_arp(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "proxy-arp", data=filtered_data, vdom=vdom) + return fos.set("system", "proxy-arp", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("system", "proxy-arp", mkey=filtered_data["id"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ptp.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ptp.py index 0f764d262..25a0c00fc 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ptp.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_ptp.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -274,9 +274,10 @@ def underscore_to_hyphen(data): def system_ptp(data, fos): vdom = data["vdom"] system_ptp_data = data["system_ptp"] - filtered_data = underscore_to_hyphen(filter_system_ptp_data(system_ptp_data)) + filtered_data = filter_system_ptp_data(system_ptp_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "ptp", data=filtered_data, vdom=vdom) + return fos.set("system", "ptp", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_admin.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_admin.py index 7ebe725d9..b5a6f1979 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_admin.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_admin.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -249,9 +249,8 @@ def system_replacemsg_admin(data, fos, check_mode=False): state = data["state"] system_replacemsg_admin_data = data["system_replacemsg_admin"] - filtered_data = underscore_to_hyphen( - filter_system_replacemsg_admin_data(system_replacemsg_admin_data) - ) + filtered_data = filter_system_replacemsg_admin_data(system_replacemsg_admin_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -315,7 +314,7 @@ def system_replacemsg_admin(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system.replacemsg", "admin", data=filtered_data, vdom=vdom) + return fos.set("system.replacemsg", "admin", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_alertmail.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_alertmail.py index cf7379d15..8ea9d9fee 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_alertmail.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_alertmail.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -249,9 +249,10 @@ def system_replacemsg_alertmail(data, fos, check_mode=False): state = data["state"] system_replacemsg_alertmail_data = data["system_replacemsg_alertmail"] - filtered_data = underscore_to_hyphen( - filter_system_replacemsg_alertmail_data(system_replacemsg_alertmail_data) + filtered_data = filter_system_replacemsg_alertmail_data( + system_replacemsg_alertmail_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -315,7 +316,7 @@ def system_replacemsg_alertmail(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system.replacemsg", "alertmail", data=filtered_data, vdom=vdom) + return fos.set("system.replacemsg", "alertmail", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_auth.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_auth.py index b716d009a..8243b9d02 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_auth.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_auth.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -249,9 +249,8 @@ def system_replacemsg_auth(data, fos, check_mode=False): state = data["state"] system_replacemsg_auth_data = data["system_replacemsg_auth"] - filtered_data = underscore_to_hyphen( - filter_system_replacemsg_auth_data(system_replacemsg_auth_data) - ) + filtered_data = filter_system_replacemsg_auth_data(system_replacemsg_auth_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -315,7 +314,7 @@ def system_replacemsg_auth(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system.replacemsg", "auth", data=filtered_data, vdom=vdom) + return fos.set("system.replacemsg", "auth", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_automation.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_automation.py index 233402668..ba4be2228 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_automation.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_automation.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -239,12 +239,15 @@ def system_replacemsg_automation(data, fos): state = data["state"] system_replacemsg_automation_data = data["system_replacemsg_automation"] - filtered_data = underscore_to_hyphen( - filter_system_replacemsg_automation_data(system_replacemsg_automation_data) + filtered_data = filter_system_replacemsg_automation_data( + system_replacemsg_automation_data ) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: - return fos.set("system.replacemsg", "automation", data=filtered_data, vdom=vdom) + return fos.set( + "system.replacemsg", "automation", data=converted_data, vdom=vdom + ) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_device_detection_portal.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_device_detection_portal.py index fe30989c4..71088517a 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_device_detection_portal.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_device_detection_portal.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -251,11 +251,10 @@ def system_replacemsg_device_detection_portal(data, fos, check_mode=False): system_replacemsg_device_detection_portal_data = data[ "system_replacemsg_device_detection_portal" ] - filtered_data = underscore_to_hyphen( - filter_system_replacemsg_device_detection_portal_data( - system_replacemsg_device_detection_portal_data - ) + filtered_data = filter_system_replacemsg_device_detection_portal_data( + system_replacemsg_device_detection_portal_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -326,7 +325,7 @@ def system_replacemsg_device_detection_portal(data, fos, check_mode=False): return fos.set( "system.replacemsg", "device-detection-portal", - data=filtered_data, + data=converted_data, vdom=vdom, ) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_ec.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_ec.py index 2e3eda80a..5e2bcbf5e 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_ec.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_ec.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -249,9 +249,8 @@ def system_replacemsg_ec(data, fos, check_mode=False): state = data["state"] system_replacemsg_ec_data = data["system_replacemsg_ec"] - filtered_data = underscore_to_hyphen( - filter_system_replacemsg_ec_data(system_replacemsg_ec_data) - ) + filtered_data = filter_system_replacemsg_ec_data(system_replacemsg_ec_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -315,7 +314,7 @@ def system_replacemsg_ec(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system.replacemsg", "ec", data=filtered_data, vdom=vdom) + return fos.set("system.replacemsg", "ec", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_fortiguard_wf.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_fortiguard_wf.py index 2b1a419fb..b4d4fddc4 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_fortiguard_wf.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_fortiguard_wf.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -249,11 +249,10 @@ def system_replacemsg_fortiguard_wf(data, fos, check_mode=False): state = data["state"] system_replacemsg_fortiguard_wf_data = data["system_replacemsg_fortiguard_wf"] - filtered_data = underscore_to_hyphen( - filter_system_replacemsg_fortiguard_wf_data( - system_replacemsg_fortiguard_wf_data - ) + filtered_data = filter_system_replacemsg_fortiguard_wf_data( + system_replacemsg_fortiguard_wf_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -322,7 +321,7 @@ def system_replacemsg_fortiguard_wf(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "system.replacemsg", "fortiguard-wf", data=filtered_data, vdom=vdom + "system.replacemsg", "fortiguard-wf", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_ftp.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_ftp.py index 019e35771..fe80c53b9 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_ftp.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_ftp.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -249,9 +249,8 @@ def system_replacemsg_ftp(data, fos, check_mode=False): state = data["state"] system_replacemsg_ftp_data = data["system_replacemsg_ftp"] - filtered_data = underscore_to_hyphen( - filter_system_replacemsg_ftp_data(system_replacemsg_ftp_data) - ) + filtered_data = filter_system_replacemsg_ftp_data(system_replacemsg_ftp_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -315,7 +314,7 @@ def system_replacemsg_ftp(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system.replacemsg", "ftp", data=filtered_data, vdom=vdom) + return fos.set("system.replacemsg", "ftp", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_group.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_group.py index c2f121522..a36f96fee 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_group.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_group.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -1533,9 +1533,9 @@ def underscore_to_hyphen(data): def valid_attr_to_invalid_attr(data): - specillist = {"message": "fos_message"} + speciallist = {"message": "fos_message"} - for k, v in specillist.items(): + for k, v in speciallist.items(): if v == data: return k @@ -1544,8 +1544,11 @@ def valid_attr_to_invalid_attr(data): def valid_attr_to_invalid_attrs(data): if isinstance(data, list): + new_data = [] for elem in data: elem = valid_attr_to_invalid_attrs(elem) + new_data.append(elem) + data = new_data elif isinstance(data, dict): new_data = {} for k, v in data.items(): @@ -1561,10 +1564,8 @@ def system_replacemsg_group(data, fos, check_mode=False): state = data["state"] system_replacemsg_group_data = data["system_replacemsg_group"] - filtered_data = underscore_to_hyphen( - filter_system_replacemsg_group_data(system_replacemsg_group_data) - ) - converted_data = valid_attr_to_invalid_attrs(filtered_data) + filtered_data = filter_system_replacemsg_group_data(system_replacemsg_group_data) + converted_data = underscore_to_hyphen(valid_attr_to_invalid_attrs(filtered_data)) # check_mode starts from here if check_mode: diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_http.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_http.py index 9fff71bff..733966db5 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_http.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_http.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -249,9 +249,8 @@ def system_replacemsg_http(data, fos, check_mode=False): state = data["state"] system_replacemsg_http_data = data["system_replacemsg_http"] - filtered_data = underscore_to_hyphen( - filter_system_replacemsg_http_data(system_replacemsg_http_data) - ) + filtered_data = filter_system_replacemsg_http_data(system_replacemsg_http_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -315,7 +314,7 @@ def system_replacemsg_http(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system.replacemsg", "http", data=filtered_data, vdom=vdom) + return fos.set("system.replacemsg", "http", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_icap.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_icap.py index 9fb06286d..a36b2bc4a 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_icap.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_icap.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -249,9 +249,8 @@ def system_replacemsg_icap(data, fos, check_mode=False): state = data["state"] system_replacemsg_icap_data = data["system_replacemsg_icap"] - filtered_data = underscore_to_hyphen( - filter_system_replacemsg_icap_data(system_replacemsg_icap_data) - ) + filtered_data = filter_system_replacemsg_icap_data(system_replacemsg_icap_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -315,7 +314,7 @@ def system_replacemsg_icap(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system.replacemsg", "icap", data=filtered_data, vdom=vdom) + return fos.set("system.replacemsg", "icap", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_image.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_image.py index e52d78d50..30d9c0d3b 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_image.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_image.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -240,9 +240,8 @@ def system_replacemsg_image(data, fos, check_mode=False): state = data["state"] system_replacemsg_image_data = data["system_replacemsg_image"] - filtered_data = underscore_to_hyphen( - filter_system_replacemsg_image_data(system_replacemsg_image_data) - ) + filtered_data = filter_system_replacemsg_image_data(system_replacemsg_image_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -306,7 +305,7 @@ def system_replacemsg_image(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "replacemsg-image", data=filtered_data, vdom=vdom) + return fos.set("system", "replacemsg-image", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_mail.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_mail.py index 0ebb05358..b7ef1f049 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_mail.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_mail.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -249,9 +249,8 @@ def system_replacemsg_mail(data, fos, check_mode=False): state = data["state"] system_replacemsg_mail_data = data["system_replacemsg_mail"] - filtered_data = underscore_to_hyphen( - filter_system_replacemsg_mail_data(system_replacemsg_mail_data) - ) + filtered_data = filter_system_replacemsg_mail_data(system_replacemsg_mail_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -315,7 +314,7 @@ def system_replacemsg_mail(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system.replacemsg", "mail", data=filtered_data, vdom=vdom) + return fos.set("system.replacemsg", "mail", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_mm1.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_mm1.py index 40c02eaea..5771727f6 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_mm1.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_mm1.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -355,9 +355,9 @@ def underscore_to_hyphen(data): def valid_attr_to_invalid_attr(data): - specillist = {"message": "fos_message"} + speciallist = {"message": "fos_message"} - for k, v in specillist.items(): + for k, v in speciallist.items(): if v == data: return k @@ -366,8 +366,11 @@ def valid_attr_to_invalid_attr(data): def valid_attr_to_invalid_attrs(data): if isinstance(data, list): + new_data = [] for elem in data: elem = valid_attr_to_invalid_attrs(elem) + new_data.append(elem) + data = new_data elif isinstance(data, dict): new_data = {} for k, v in data.items(): @@ -383,10 +386,8 @@ def system_replacemsg_mm1(data, fos, check_mode=False): state = data["state"] system_replacemsg_mm1_data = data["system_replacemsg_mm1"] - filtered_data = underscore_to_hyphen( - filter_system_replacemsg_mm1_data(system_replacemsg_mm1_data) - ) - converted_data = valid_attr_to_invalid_attrs(filtered_data) + filtered_data = filter_system_replacemsg_mm1_data(system_replacemsg_mm1_data) + converted_data = underscore_to_hyphen(valid_attr_to_invalid_attrs(filtered_data)) # check_mode starts from here if check_mode: diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_mm3.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_mm3.py index 2916f154b..09ac497b9 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_mm3.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_mm3.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -311,9 +311,9 @@ def underscore_to_hyphen(data): def valid_attr_to_invalid_attr(data): - specillist = {"message": "fos_message"} + speciallist = {"message": "fos_message"} - for k, v in specillist.items(): + for k, v in speciallist.items(): if v == data: return k @@ -322,8 +322,11 @@ def valid_attr_to_invalid_attr(data): def valid_attr_to_invalid_attrs(data): if isinstance(data, list): + new_data = [] for elem in data: elem = valid_attr_to_invalid_attrs(elem) + new_data.append(elem) + data = new_data elif isinstance(data, dict): new_data = {} for k, v in data.items(): @@ -339,10 +342,8 @@ def system_replacemsg_mm3(data, fos, check_mode=False): state = data["state"] system_replacemsg_mm3_data = data["system_replacemsg_mm3"] - filtered_data = underscore_to_hyphen( - filter_system_replacemsg_mm3_data(system_replacemsg_mm3_data) - ) - converted_data = valid_attr_to_invalid_attrs(filtered_data) + filtered_data = filter_system_replacemsg_mm3_data(system_replacemsg_mm3_data) + converted_data = underscore_to_hyphen(valid_attr_to_invalid_attrs(filtered_data)) # check_mode starts from here if check_mode: diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_mm4.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_mm4.py index 3136cca64..5591be073 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_mm4.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_mm4.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -344,9 +344,9 @@ def underscore_to_hyphen(data): def valid_attr_to_invalid_attr(data): - specillist = {"message": "fos_message"} + speciallist = {"message": "fos_message"} - for k, v in specillist.items(): + for k, v in speciallist.items(): if v == data: return k @@ -355,8 +355,11 @@ def valid_attr_to_invalid_attr(data): def valid_attr_to_invalid_attrs(data): if isinstance(data, list): + new_data = [] for elem in data: elem = valid_attr_to_invalid_attrs(elem) + new_data.append(elem) + data = new_data elif isinstance(data, dict): new_data = {} for k, v in data.items(): @@ -372,10 +375,8 @@ def system_replacemsg_mm4(data, fos, check_mode=False): state = data["state"] system_replacemsg_mm4_data = data["system_replacemsg_mm4"] - filtered_data = underscore_to_hyphen( - filter_system_replacemsg_mm4_data(system_replacemsg_mm4_data) - ) - converted_data = valid_attr_to_invalid_attrs(filtered_data) + filtered_data = filter_system_replacemsg_mm4_data(system_replacemsg_mm4_data) + converted_data = underscore_to_hyphen(valid_attr_to_invalid_attrs(filtered_data)) # check_mode starts from here if check_mode: diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_mm7.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_mm7.py index c92d2e810..541c84e75 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_mm7.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_mm7.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -375,9 +375,9 @@ def underscore_to_hyphen(data): def valid_attr_to_invalid_attr(data): - specillist = {"message": "fos_message"} + speciallist = {"message": "fos_message"} - for k, v in specillist.items(): + for k, v in speciallist.items(): if v == data: return k @@ -386,8 +386,11 @@ def valid_attr_to_invalid_attr(data): def valid_attr_to_invalid_attrs(data): if isinstance(data, list): + new_data = [] for elem in data: elem = valid_attr_to_invalid_attrs(elem) + new_data.append(elem) + data = new_data elif isinstance(data, dict): new_data = {} for k, v in data.items(): @@ -403,10 +406,8 @@ def system_replacemsg_mm7(data, fos, check_mode=False): state = data["state"] system_replacemsg_mm7_data = data["system_replacemsg_mm7"] - filtered_data = underscore_to_hyphen( - filter_system_replacemsg_mm7_data(system_replacemsg_mm7_data) - ) - converted_data = valid_attr_to_invalid_attrs(filtered_data) + filtered_data = filter_system_replacemsg_mm7_data(system_replacemsg_mm7_data) + converted_data = underscore_to_hyphen(valid_attr_to_invalid_attrs(filtered_data)) # check_mode starts from here if check_mode: diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_mms.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_mms.py index 2236241af..214d78a1b 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_mms.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_mms.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -262,9 +262,8 @@ def system_replacemsg_mms(data, fos, check_mode=False): state = data["state"] system_replacemsg_mms_data = data["system_replacemsg_mms"] - filtered_data = underscore_to_hyphen( - filter_system_replacemsg_mms_data(system_replacemsg_mms_data) - ) + filtered_data = filter_system_replacemsg_mms_data(system_replacemsg_mms_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -328,7 +327,7 @@ def system_replacemsg_mms(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system.replacemsg", "mms", data=filtered_data, vdom=vdom) + return fos.set("system.replacemsg", "mms", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_nac_quar.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_nac_quar.py index 132e0dd09..19715be29 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_nac_quar.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_nac_quar.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -249,9 +249,10 @@ def system_replacemsg_nac_quar(data, fos, check_mode=False): state = data["state"] system_replacemsg_nac_quar_data = data["system_replacemsg_nac_quar"] - filtered_data = underscore_to_hyphen( - filter_system_replacemsg_nac_quar_data(system_replacemsg_nac_quar_data) + filtered_data = filter_system_replacemsg_nac_quar_data( + system_replacemsg_nac_quar_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -315,7 +316,7 @@ def system_replacemsg_nac_quar(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system.replacemsg", "nac-quar", data=filtered_data, vdom=vdom) + return fos.set("system.replacemsg", "nac-quar", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_nntp.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_nntp.py index 3055f0077..2cd8cac7f 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_nntp.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_nntp.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -249,9 +249,8 @@ def system_replacemsg_nntp(data, fos, check_mode=False): state = data["state"] system_replacemsg_nntp_data = data["system_replacemsg_nntp"] - filtered_data = underscore_to_hyphen( - filter_system_replacemsg_nntp_data(system_replacemsg_nntp_data) - ) + filtered_data = filter_system_replacemsg_nntp_data(system_replacemsg_nntp_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -315,7 +314,7 @@ def system_replacemsg_nntp(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system.replacemsg", "nntp", data=filtered_data, vdom=vdom) + return fos.set("system.replacemsg", "nntp", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_spam.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_spam.py index 5d7098915..b2f3c062f 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_spam.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_spam.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -249,9 +249,8 @@ def system_replacemsg_spam(data, fos, check_mode=False): state = data["state"] system_replacemsg_spam_data = data["system_replacemsg_spam"] - filtered_data = underscore_to_hyphen( - filter_system_replacemsg_spam_data(system_replacemsg_spam_data) - ) + filtered_data = filter_system_replacemsg_spam_data(system_replacemsg_spam_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -315,7 +314,7 @@ def system_replacemsg_spam(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system.replacemsg", "spam", data=filtered_data, vdom=vdom) + return fos.set("system.replacemsg", "spam", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_sslvpn.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_sslvpn.py index 1756335d8..8f6afda5f 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_sslvpn.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_sslvpn.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -249,9 +249,8 @@ def system_replacemsg_sslvpn(data, fos, check_mode=False): state = data["state"] system_replacemsg_sslvpn_data = data["system_replacemsg_sslvpn"] - filtered_data = underscore_to_hyphen( - filter_system_replacemsg_sslvpn_data(system_replacemsg_sslvpn_data) - ) + filtered_data = filter_system_replacemsg_sslvpn_data(system_replacemsg_sslvpn_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -315,7 +314,7 @@ def system_replacemsg_sslvpn(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system.replacemsg", "sslvpn", data=filtered_data, vdom=vdom) + return fos.set("system.replacemsg", "sslvpn", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_traffic_quota.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_traffic_quota.py index d95ed70ab..62dbdb987 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_traffic_quota.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_traffic_quota.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -249,11 +249,10 @@ def system_replacemsg_traffic_quota(data, fos, check_mode=False): state = data["state"] system_replacemsg_traffic_quota_data = data["system_replacemsg_traffic_quota"] - filtered_data = underscore_to_hyphen( - filter_system_replacemsg_traffic_quota_data( - system_replacemsg_traffic_quota_data - ) + filtered_data = filter_system_replacemsg_traffic_quota_data( + system_replacemsg_traffic_quota_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -322,7 +321,7 @@ def system_replacemsg_traffic_quota(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "system.replacemsg", "traffic-quota", data=filtered_data, vdom=vdom + "system.replacemsg", "traffic-quota", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_utm.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_utm.py index 91e57efb3..a2786d20a 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_utm.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_utm.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -249,9 +249,8 @@ def system_replacemsg_utm(data, fos, check_mode=False): state = data["state"] system_replacemsg_utm_data = data["system_replacemsg_utm"] - filtered_data = underscore_to_hyphen( - filter_system_replacemsg_utm_data(system_replacemsg_utm_data) - ) + filtered_data = filter_system_replacemsg_utm_data(system_replacemsg_utm_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -315,7 +314,7 @@ def system_replacemsg_utm(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system.replacemsg", "utm", data=filtered_data, vdom=vdom) + return fos.set("system.replacemsg", "utm", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_webproxy.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_webproxy.py index 8dadb56b8..08e2070f6 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_webproxy.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_replacemsg_webproxy.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -249,9 +249,10 @@ def system_replacemsg_webproxy(data, fos, check_mode=False): state = data["state"] system_replacemsg_webproxy_data = data["system_replacemsg_webproxy"] - filtered_data = underscore_to_hyphen( - filter_system_replacemsg_webproxy_data(system_replacemsg_webproxy_data) + filtered_data = filter_system_replacemsg_webproxy_data( + system_replacemsg_webproxy_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -315,7 +316,7 @@ def system_replacemsg_webproxy(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system.replacemsg", "webproxy", data=filtered_data, vdom=vdom) + return fos.set("system.replacemsg", "webproxy", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_resource_limits.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_resource_limits.py index 060903c80..5e588c45b 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_resource_limits.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_resource_limits.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -306,11 +306,10 @@ def underscore_to_hyphen(data): def system_resource_limits(data, fos): vdom = data["vdom"] system_resource_limits_data = data["system_resource_limits"] - filtered_data = underscore_to_hyphen( - filter_system_resource_limits_data(system_resource_limits_data) - ) + filtered_data = filter_system_resource_limits_data(system_resource_limits_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "resource-limits", data=filtered_data, vdom=vdom) + return fos.set("system", "resource-limits", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_saml.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_saml.py index f0c5ff251..ef3f8b1d9 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_saml.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_saml.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -425,9 +425,10 @@ def underscore_to_hyphen(data): def system_saml(data, fos): vdom = data["vdom"] system_saml_data = data["system_saml"] - filtered_data = underscore_to_hyphen(filter_system_saml_data(system_saml_data)) + filtered_data = filter_system_saml_data(system_saml_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "saml", data=filtered_data, vdom=vdom) + return fos.set("system", "saml", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_sdn_connector.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_sdn_connector.py index 3e2ac5581..e4bb7c036 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_sdn_connector.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_sdn_connector.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -824,9 +824,8 @@ def system_sdn_connector(data, fos, check_mode=False): state = data["state"] system_sdn_connector_data = data["system_sdn_connector"] - filtered_data = underscore_to_hyphen( - filter_system_sdn_connector_data(system_sdn_connector_data) - ) + filtered_data = filter_system_sdn_connector_data(system_sdn_connector_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -890,7 +889,7 @@ def system_sdn_connector(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "sdn-connector", data=filtered_data, vdom=vdom) + return fos.set("system", "sdn-connector", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_sdn_proxy.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_sdn_proxy.py index 3734410c7..87beb3877 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_sdn_proxy.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_sdn_proxy.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -244,12 +244,11 @@ def system_sdn_proxy(data, fos): state = data["state"] system_sdn_proxy_data = data["system_sdn_proxy"] - filtered_data = underscore_to_hyphen( - filter_system_sdn_proxy_data(system_sdn_proxy_data) - ) + filtered_data = filter_system_sdn_proxy_data(system_sdn_proxy_data) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: - return fos.set("system", "sdn-proxy", data=filtered_data, vdom=vdom) + return fos.set("system", "sdn-proxy", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("system", "sdn-proxy", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_sdwan.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_sdwan.py index 1ae661d37..d21332733 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_sdwan.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_sdwan.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -595,6 +595,10 @@ options: choices: - 'disable' - 'enable' + transport_group: + description: + - Measured transport group (0 - 255). + type: int volume_ratio: description: - Measured volume ratio (this value / sum of all values = percentage of link volume, 1 - 255). @@ -1036,6 +1040,14 @@ options: choices: - 'enable' - 'disable' + shortcut_priority: + description: + - High priority of ADVPN shortcut for this service. + type: str + choices: + - 'enable' + - 'disable' + - 'auto' shortcut_stickiness: description: - Enable/disable shortcut-stickiness of ADVPN. @@ -1185,6 +1197,17 @@ options: type: list elements: dict suboptions: + advpn_health_check: + description: + - Health check for ADVPN local overlay link quality. Source system.sdwan.health-check.name. + type: str + advpn_select: + description: + - Enable/disable selection of ADVPN based on SDWAN information. + type: str + choices: + - 'enable' + - 'disable' minimum_sla_meet_members: description: - Minimum number of members which meet SLA when the neighbor is preferred. @@ -1321,6 +1344,7 @@ EXAMPLES = """ source6: "<your_own_value>" spillover_threshold: "0" status: "disable" + transport_group: "0" volume_ratio: "1" weight: "1" zone: "<your_own_value> (source system.sdwan.zone.name)" @@ -1351,52 +1375,52 @@ EXAMPLES = """ dscp_reverse_tag: "<your_own_value>" dst: - - name: "default_name_127 (source firewall.address.name firewall.addrgrp.name)" + name: "default_name_128 (source firewall.address.name firewall.addrgrp.name)" dst_negate: "enable" dst6: - - name: "default_name_130 (source firewall.address6.name firewall.addrgrp6.name)" + name: "default_name_131 (source firewall.address6.name firewall.addrgrp6.name)" end_port: "65535" end_src_port: "65535" gateway: "enable" groups: - - name: "default_name_135 (source user.group.name)" + name: "default_name_136 (source user.group.name)" hash_mode: "round-robin" health_check: - - name: "default_name_138 (source system.sdwan.health-check.name)" + name: "default_name_139 (source system.sdwan.health-check.name)" hold_down_time: "0" - id: "140" + id: "141" input_device: - - name: "default_name_142 (source system.interface.name)" + name: "default_name_143 (source system.interface.name)" input_device_negate: "enable" input_zone: - - name: "default_name_145 (source system.sdwan.zone.name)" + name: "default_name_146 (source system.sdwan.zone.name)" internet_service: "enable" internet_service_app_ctrl: - - id: "148" + id: "149" internet_service_app_ctrl_category: - - id: "150" + id: "151" internet_service_app_ctrl_group: - - name: "default_name_152 (source application.group.name)" + name: "default_name_153 (source application.group.name)" internet_service_custom: - - name: "default_name_154 (source firewall.internet-service-custom.name)" + name: "default_name_155 (source firewall.internet-service-custom.name)" internet_service_custom_group: - - name: "default_name_156 (source firewall.internet-service-custom-group.name)" + name: "default_name_157 (source firewall.internet-service-custom-group.name)" internet_service_group: - - name: "default_name_158 (source firewall.internet-service-group.name)" + name: "default_name_159 (source firewall.internet-service-group.name)" internet_service_name: - - name: "default_name_160 (source firewall.internet-service-name.name)" + name: "default_name_161 (source firewall.internet-service-name.name)" jitter_weight: "0" latency_weight: "0" link_cost_factor: "latency" @@ -1404,7 +1428,7 @@ EXAMPLES = """ load_balance: "enable" minimum_sla_meet_members: "0" mode: "auto" - name: "default_name_168" + name: "default_name_169" packet_loss_weight: "0" passive_measurement: "enable" priority_members: @@ -1412,26 +1436,27 @@ EXAMPLES = """ seq_num: "<you_own_value>" priority_zone: - - name: "default_name_174 (source system.sdwan.zone.name)" + name: "default_name_175 (source system.sdwan.zone.name)" protocol: "0" quality_link: "0" role: "standalone" route_tag: "0" shortcut: "enable" + shortcut_priority: "enable" shortcut_stickiness: "enable" sla: - health_check: "<your_own_value> (source system.sdwan.health-check.name)" - id: "183" + id: "185" sla_compare_method: "order" sla_stickiness: "enable" src: - - name: "default_name_187 (source firewall.address.name firewall.addrgrp.name)" + name: "default_name_189 (source firewall.address.name firewall.addrgrp.name)" src_negate: "enable" src6: - - name: "default_name_190 (source firewall.address6.name firewall.addrgrp6.name)" + name: "default_name_192 (source firewall.address6.name firewall.addrgrp6.name)" standalone_action: "enable" start_port: "1" start_src_port: "1" @@ -1442,14 +1467,16 @@ EXAMPLES = """ use_shortcut_sla: "enable" users: - - name: "default_name_200 (source user.local.name)" + name: "default_name_202 (source user.local.name)" zone_mode: "enable" speedtest_bypass_routing: "disable" status: "disable" zone: - + advpn_health_check: "<your_own_value> (source system.sdwan.health-check.name)" + advpn_select: "enable" minimum_sla_meet_members: "1" - name: "default_name_206" + name: "default_name_210" service_sla_tie_break: "cfg-order" """ @@ -1609,9 +1636,10 @@ def system_sdwan(data, fos): vdom = data["vdom"] system_sdwan_data = data["system_sdwan"] system_sdwan_data = flatten_multilists_attributes(system_sdwan_data) - filtered_data = underscore_to_hyphen(filter_system_sdwan_data(system_sdwan_data)) + filtered_data = filter_system_sdwan_data(system_sdwan_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "sdwan", data=filtered_data, vdom=vdom) + return fos.set("system", "sdwan", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -1705,6 +1733,12 @@ versioned_schema = { "type": "string", "required": True, }, + "advpn_select": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "advpn_health_check": {"v_range": [["v7.4.2", ""]], "type": "string"}, "service_sla_tie_break": { "v_range": [["v6.4.4", ""]], "type": "string", @@ -1752,6 +1786,7 @@ versioned_schema = { "type": "string", "options": [{"value": "disable"}, {"value": "enable"}], }, + "transport_group": {"v_range": [["v7.4.2", ""]], "type": "integer"}, "comment": {"v_range": [["v6.4.0", ""]], "type": "string"}, }, "v_range": [["v6.4.0", ""]], @@ -2059,6 +2094,15 @@ versioned_schema = { {"value": "bibandwidth"}, ], }, + "shortcut_priority": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [ + {"value": "enable"}, + {"value": "disable"}, + {"value": "auto"}, + ], + }, "role": { "v_range": [["v6.4.0", ""]], "type": "string", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_session_helper.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_session_helper.py index 3d935af75..c4f1ad9da 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_session_helper.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_session_helper.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -262,9 +262,8 @@ def system_session_helper(data, fos, check_mode=False): state = data["state"] system_session_helper_data = data["system_session_helper"] - filtered_data = underscore_to_hyphen( - filter_system_session_helper_data(system_session_helper_data) - ) + filtered_data = filter_system_session_helper_data(system_session_helper_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -328,7 +327,7 @@ def system_session_helper(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "session-helper", data=filtered_data, vdom=vdom) + return fos.set("system", "session-helper", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( @@ -393,19 +392,35 @@ versioned_schema = { {"value": "mgcp"}, { "value": "gtp-c", - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], }, { "value": "gtp-u", - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], }, { "value": "gtp-b", - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], }, { "value": "pfcp", - "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v7.0.1", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], }, ], }, diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_session_ttl.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_session_ttl.py index dbd110448..5ba1bb780 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_session_ttl.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_session_ttl.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -105,7 +105,7 @@ options: type: int refresh_direction: description: - - 'Refresh direction: Both, outgoing, incoming' + - Configure refresh direction. type: str choices: - 'both' @@ -245,11 +245,10 @@ def underscore_to_hyphen(data): def system_session_ttl(data, fos): vdom = data["vdom"] system_session_ttl_data = data["system_session_ttl"] - filtered_data = underscore_to_hyphen( - filter_system_session_ttl_data(system_session_ttl_data) - ) + filtered_data = filter_system_session_ttl_data(system_session_ttl_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "session-ttl", data=filtered_data, vdom=vdom) + return fos.set("system", "session-ttl", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_settings.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_settings.py index a84108d63..f8c0e0214 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_settings.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_settings.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -831,6 +831,10 @@ options: choices: - 'enable' - 'disable' + ike_tcp_port: + description: + - TCP port for IKE/IPsec traffic . + type: int implicit_allow_dns: description: - Enable/disable implicitly allowing DNS traffic. @@ -966,6 +970,13 @@ options: choices: - 'enable' - 'disable' + policy_offload_level: + description: + - Configure firewall policy offload level. + type: str + choices: + - 'disable' + - 'dos-offload' prp_trailer_action: description: - Enable/disable action to take on PRP trailer. @@ -1225,6 +1236,7 @@ EXAMPLES = """ ike_port: "500" ike_quick_crash_detect: "enable" ike_session_resume: "enable" + ike_tcp_port: "4500" implicit_allow_dns: "enable" inspection_mode: "proxy" internet_service_database_cache: "disable" @@ -1247,6 +1259,7 @@ EXAMPLES = """ ngfw_mode: "profile-based" opmode: "nat" pfcp_monitor_mode: "enable" + policy_offload_level: "disable" prp_trailer_action: "enable" sccp_port: "2000" sctp_session_without_init: "enable" @@ -1463,6 +1476,7 @@ def filter_system_settings_data(json): "ike_port", "ike_quick_crash_detect", "ike_session_resume", + "ike_tcp_port", "implicit_allow_dns", "inspection_mode", "internet_service_database_cache", @@ -1485,6 +1499,7 @@ def filter_system_settings_data(json): "ngfw_mode", "opmode", "pfcp_monitor_mode", + "policy_offload_level", "prp_trailer_action", "sccp_port", "sctp_session_without_init", @@ -1568,11 +1583,10 @@ def system_settings(data, fos): vdom = data["vdom"] system_settings_data = data["system_settings"] system_settings_data = flatten_multilists_attributes(system_settings_data) - filtered_data = underscore_to_hyphen( - filter_system_settings_data(system_settings_data) - ) + filtered_data = filter_system_settings_data(system_settings_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "settings", data=filtered_data, vdom=vdom) + return fos.set("system", "settings", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -1979,9 +1993,12 @@ versioned_schema = { "options": [{"value": "enable"}, {"value": "disable"}], }, "gui_wanopt_cache": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", - "options": [{"value": "enable"}, {"value": "disable"}], + "options": [ + {"value": "enable", "v_range": [["v6.0.0", ""]]}, + {"value": "disable", "v_range": [["v6.0.0", ""]]}, + ], }, "gui_explicit_proxy": { "v_range": [["v6.0.0", ""]], @@ -2185,6 +2202,7 @@ versioned_schema = { "options": [{"value": "with-space"}, {"value": "no-space"}], }, "ike_port": {"v_range": [["v7.0.0", ""]], "type": "integer"}, + "ike_tcp_port": {"v_range": [["v7.4.2", ""]], "type": "integer"}, "ike_policy_route": { "v_range": [["v7.0.2", ""]], "type": "string", @@ -2235,28 +2253,33 @@ versioned_schema = { "type": "string", "options": [{"value": "disable"}, {"value": "enable"}], }, - "gui_endpoint_control": { - "v_range": [["v6.0.0", "v7.2.4"]], + "gtp_asym_fgsp": { + "v_range": [["v6.2.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], + "type": "string", + "options": [{"value": "disable"}, {"value": "enable"}], + }, + "gtp_monitor_mode": { + "v_range": [["v6.2.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, - "gui_endpoint_control_advanced": { - "v_range": [["v6.0.0", "v7.2.4"]], + "pfcp_monitor_mode": { + "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, - "gtp_asym_fgsp": { - "v_range": [["v6.2.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "policy_offload_level": { + "v_range": [["v7.4.2", "v7.4.2"]], "type": "string", - "options": [{"value": "disable"}, {"value": "enable"}], + "options": [{"value": "disable"}, {"value": "dos-offload"}], }, - "gtp_monitor_mode": { - "v_range": [["v6.2.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "gui_endpoint_control": { + "v_range": [["v6.0.0", "v7.2.4"]], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, - "pfcp_monitor_mode": { - "v_range": [["v7.0.1", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "gui_endpoint_control_advanced": { + "v_range": [["v6.0.0", "v7.2.4"]], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_sflow.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_sflow.py index d44010cf0..5a13d0c5f 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_sflow.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_sflow.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -89,6 +89,42 @@ options: - UDP port number used for sending sFlow datagrams (configure only if required by your sFlow collector or your network configuration) (0 - 65535). type: int + collectors: + description: + - sFlow collectors. + type: list + elements: dict + suboptions: + collector_ip: + description: + - IP addresses of the sFlow collectors that sFlow agents added to interfaces in this VDOM send sFlow datagrams to. + type: str + collector_port: + description: + - UDP port number used for sending sFlow datagrams (configure only if required by your sFlow collector or your network + configuration) (0 - 65535). + type: int + id: + description: + - ID. see <a href='#notes'>Notes</a>. + required: true + type: int + interface: + description: + - Specify outgoing interface to reach server. Source system.interface.name. + type: str + interface_select_method: + description: + - Specify how to select outgoing interface to reach server. + type: str + choices: + - 'auto' + - 'sdwan' + - 'specify' + source_ip: + description: + - Source IP address for sFlow agent. + type: str interface: description: - Specify outgoing interface to reach server. Source system.interface.name. @@ -114,6 +150,14 @@ EXAMPLES = """ system_sflow: collector_ip: "<your_own_value>" collector_port: "6343" + collectors: + - + collector_ip: "<your_own_value>" + collector_port: "6343" + id: "8" + interface: "<your_own_value> (source system.interface.name)" + interface_select_method: "auto" + source_ip: "84.230.14.43" interface: "<your_own_value> (source system.interface.name)" interface_select_method: "auto" source_ip: "84.230.14.43" @@ -202,6 +246,7 @@ def filter_system_sflow_data(json): option_list = [ "collector_ip", "collector_port", + "collectors", "interface", "interface_select_method", "source_ip", @@ -233,9 +278,10 @@ def underscore_to_hyphen(data): def system_sflow(data, fos): vdom = data["vdom"] system_sflow_data = data["system_sflow"] - filtered_data = underscore_to_hyphen(filter_system_sflow_data(system_sflow_data)) + filtered_data = filter_system_sflow_data(system_sflow_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "sflow", data=filtered_data, vdom=vdom) + return fos.set("system", "sflow", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -270,15 +316,40 @@ versioned_schema = { "v_range": [["v6.0.0", ""]], "type": "dict", "children": { - "collector_ip": {"v_range": [["v6.0.0", ""]], "type": "string"}, - "collector_port": {"v_range": [["v6.0.0", ""]], "type": "integer"}, - "source_ip": {"v_range": [["v6.0.0", ""]], "type": "string"}, + "collectors": { + "type": "list", + "elements": "dict", + "children": { + "id": { + "v_range": [["v7.4.2", ""]], + "type": "integer", + "required": True, + }, + "collector_ip": {"v_range": [["v7.4.2", ""]], "type": "string"}, + "collector_port": {"v_range": [["v7.4.2", ""]], "type": "integer"}, + "source_ip": {"v_range": [["v7.4.2", ""]], "type": "string"}, + "interface_select_method": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [ + {"value": "auto"}, + {"value": "sdwan"}, + {"value": "specify"}, + ], + }, + "interface": {"v_range": [["v7.4.2", ""]], "type": "string"}, + }, + "v_range": [["v7.4.2", ""]], + }, + "collector_ip": {"v_range": [["v6.0.0", "v7.4.1"]], "type": "string"}, + "collector_port": {"v_range": [["v6.0.0", "v7.4.1"]], "type": "integer"}, + "source_ip": {"v_range": [["v6.0.0", "v7.4.1"]], "type": "string"}, "interface_select_method": { - "v_range": [["v7.0.1", ""]], + "v_range": [["v7.0.1", "v7.4.1"]], "type": "string", "options": [{"value": "auto"}, {"value": "sdwan"}, {"value": "specify"}], }, - "interface": {"v_range": [["v7.0.1", ""]], "type": "string"}, + "interface": {"v_range": [["v7.0.1", "v7.4.1"]], "type": "string"}, }, } diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_sit_tunnel.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_sit_tunnel.py index ce3bc8c7e..ed12b4bb3 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_sit_tunnel.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_sit_tunnel.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -269,9 +269,8 @@ def system_sit_tunnel(data, fos, check_mode=False): state = data["state"] system_sit_tunnel_data = data["system_sit_tunnel"] - filtered_data = underscore_to_hyphen( - filter_system_sit_tunnel_data(system_sit_tunnel_data) - ) + filtered_data = filter_system_sit_tunnel_data(system_sit_tunnel_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -335,7 +334,7 @@ def system_sit_tunnel(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "sit-tunnel", data=filtered_data, vdom=vdom) + return fos.set("system", "sit-tunnel", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("system", "sit-tunnel", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_smc_ntp.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_smc_ntp.py index c75ed598b..040149504 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_smc_ntp.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_smc_ntp.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -117,13 +117,13 @@ EXAMPLES = """ fortinet.fortios.fortios_system_smc_ntp: vdom: "{{ vdom }}" system_smc_ntp: - channel: "32767" + channel: "5" ntpserver: - id: "5" server: "192.168.100.40" ntpsync: "enable" - syncinterval: "32767" + syncinterval: "60" """ RETURN = """ @@ -234,11 +234,10 @@ def underscore_to_hyphen(data): def system_smc_ntp(data, fos): vdom = data["vdom"] system_smc_ntp_data = data["system_smc_ntp"] - filtered_data = underscore_to_hyphen( - filter_system_smc_ntp_data(system_smc_ntp_data) - ) + filtered_data = filter_system_smc_ntp_data(system_smc_ntp_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "smc-ntp", data=filtered_data, vdom=vdom) + return fos.set("system", "smc-ntp", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -270,28 +269,37 @@ def fortios_system(data, fos): versioned_schema = { - "v_range": [["v6.2.3", "v6.2.3"]], + "v_range": [["v6.2.3", "v6.2.3"], ["v7.4.2", "v7.4.2"]], "type": "dict", "children": { "ntpsync": { - "v_range": [["v6.2.3", "v6.2.3"]], + "v_range": [["v6.2.3", "v6.2.3"], ["v7.4.2", "v7.4.2"]], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, - "syncinterval": {"v_range": [["v6.2.3", "v6.2.3"]], "type": "integer"}, - "channel": {"v_range": [["v6.2.3", "v6.2.3"]], "type": "integer"}, + "syncinterval": { + "v_range": [["v6.2.3", "v6.2.3"], ["v7.4.2", "v7.4.2"]], + "type": "integer", + }, + "channel": { + "v_range": [["v6.2.3", "v6.2.3"], ["v7.4.2", "v7.4.2"]], + "type": "integer", + }, "ntpserver": { "type": "list", "elements": "dict", "children": { "id": { - "v_range": [["v6.2.3", "v6.2.3"]], + "v_range": [["v6.2.3", "v6.2.3"], ["v7.4.2", "v7.4.2"]], "type": "integer", "required": True, }, - "server": {"v_range": [["v6.2.3", "v6.2.3"]], "type": "string"}, + "server": { + "v_range": [["v6.2.3", "v6.2.3"], ["v7.4.2", "v7.4.2"]], + "type": "string", + }, }, - "v_range": [["v6.2.3", "v6.2.3"]], + "v_range": [["v6.2.3", "v6.2.3"], ["v7.4.2", "v7.4.2"]], }, }, } diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_sms_server.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_sms_server.py index 536c27fc1..aa46716b4 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_sms_server.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_sms_server.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -230,9 +230,8 @@ def system_sms_server(data, fos, check_mode=False): state = data["state"] system_sms_server_data = data["system_sms_server"] - filtered_data = underscore_to_hyphen( - filter_system_sms_server_data(system_sms_server_data) - ) + filtered_data = filter_system_sms_server_data(system_sms_server_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -296,7 +295,7 @@ def system_sms_server(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "sms-server", data=filtered_data, vdom=vdom) + return fos.set("system", "sms-server", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("system", "sms-server", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_snmp_community.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_snmp_community.py index 8bfafbf15..f9065e08f 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_snmp_community.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_snmp_community.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -138,8 +138,9 @@ options: - 'ospf-virtnbr-state-change' - 'temperature-high' - 'voltage-alert' - - 'power-supply-failure' + - 'power-supply' - 'fan-failure' + - 'power-supply-failure' hosts: description: - Configure IPv4 SNMP managers (hosts). @@ -505,9 +506,8 @@ def system_snmp_community(data, fos, check_mode=False): system_snmp_community_data = flatten_multilists_attributes( system_snmp_community_data ) - filtered_data = underscore_to_hyphen( - filter_system_snmp_community_data(system_snmp_community_data) - ) + filtered_data = filter_system_snmp_community_data(system_snmp_community_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -571,7 +571,7 @@ def system_snmp_community(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system.snmp", "community", data=filtered_data, vdom=vdom) + return fos.set("system.snmp", "community", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( @@ -752,8 +752,9 @@ versioned_schema = { {"value": "ospf-virtnbr-state-change", "v_range": [["v7.0.0", ""]]}, {"value": "temperature-high"}, {"value": "voltage-alert"}, - {"value": "power-supply-failure"}, + {"value": "power-supply", "v_range": [["v7.4.2", ""]]}, {"value": "fan-failure"}, + {"value": "power-supply-failure", "v_range": [["v6.0.0", "v7.4.1"]]}, ], "multiple_values": True, "elements": "str", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_snmp_mib_view.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_snmp_mib_view.py index 91e65b63a..90f8c0838 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_snmp_mib_view.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_snmp_mib_view.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -259,12 +259,11 @@ def system_snmp_mib_view(data, fos): system_snmp_mib_view_data = data["system_snmp_mib_view"] system_snmp_mib_view_data = flatten_multilists_attributes(system_snmp_mib_view_data) - filtered_data = underscore_to_hyphen( - filter_system_snmp_mib_view_data(system_snmp_mib_view_data) - ) + filtered_data = filter_system_snmp_mib_view_data(system_snmp_mib_view_data) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: - return fos.set("system.snmp", "mib-view", data=filtered_data, vdom=vdom) + return fos.set("system.snmp", "mib-view", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_snmp_sysinfo.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_snmp_sysinfo.py index 62ad47407..e3c9c7518 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_snmp_sysinfo.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_snmp_sysinfo.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -111,6 +111,14 @@ options: choices: - 'enable' - 'disable' + trap_free_memory_threshold: + description: + - Free memory usage when trap is sent. + type: int + trap_freeable_memory_threshold: + description: + - Freeable memory usage when trap is sent. + type: int trap_high_cpu_threshold: description: - CPU usage when trap is sent. @@ -136,6 +144,8 @@ EXAMPLES = """ engine_id_type: "text" location: "<your_own_value>" status: "enable" + trap_free_memory_threshold: "5" + trap_freeable_memory_threshold: "60" trap_high_cpu_threshold: "80" trap_log_full_threshold: "90" trap_low_memory_threshold: "80" @@ -228,6 +238,8 @@ def filter_system_snmp_sysinfo_data(json): "engine_id_type", "location", "status", + "trap_free_memory_threshold", + "trap_freeable_memory_threshold", "trap_high_cpu_threshold", "trap_log_full_threshold", "trap_low_memory_threshold", @@ -259,11 +271,10 @@ def underscore_to_hyphen(data): def system_snmp_sysinfo(data, fos): vdom = data["vdom"] system_snmp_sysinfo_data = data["system_snmp_sysinfo"] - filtered_data = underscore_to_hyphen( - filter_system_snmp_sysinfo_data(system_snmp_sysinfo_data) - ) + filtered_data = filter_system_snmp_sysinfo_data(system_snmp_sysinfo_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system.snmp", "sysinfo", data=filtered_data, vdom=vdom) + return fos.set("system.snmp", "sysinfo", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -315,6 +326,11 @@ versioned_schema = { "trap_high_cpu_threshold": {"v_range": [["v6.0.0", ""]], "type": "integer"}, "trap_low_memory_threshold": {"v_range": [["v6.0.0", ""]], "type": "integer"}, "trap_log_full_threshold": {"v_range": [["v6.0.0", ""]], "type": "integer"}, + "trap_free_memory_threshold": {"v_range": [["v7.4.2", ""]], "type": "integer"}, + "trap_freeable_memory_threshold": { + "v_range": [["v7.4.2", ""]], + "type": "integer", + }, }, } diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_snmp_user.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_snmp_user.py index cdc82996f..2d81f9d0f 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_snmp_user.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_snmp_user.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -151,8 +151,9 @@ options: - 'ospf-virtnbr-state-change' - 'temperature-high' - 'voltage-alert' - - 'power-supply-failure' + - 'power-supply' - 'fan-failure' + - 'power-supply-failure' ha_direct: description: - Enable/disable direct management of HA cluster members. @@ -458,9 +459,8 @@ def system_snmp_user(data, fos, check_mode=False): system_snmp_user_data = data["system_snmp_user"] system_snmp_user_data = flatten_multilists_attributes(system_snmp_user_data) - filtered_data = underscore_to_hyphen( - filter_system_snmp_user_data(system_snmp_user_data) - ) + filtered_data = filter_system_snmp_user_data(system_snmp_user_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -524,7 +524,7 @@ def system_snmp_user(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system.snmp", "user", data=filtered_data, vdom=vdom) + return fos.set("system.snmp", "user", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("system.snmp", "user", mkey=filtered_data["name"], vdom=vdom) @@ -652,8 +652,9 @@ versioned_schema = { {"value": "ospf-virtnbr-state-change", "v_range": [["v7.0.0", ""]]}, {"value": "temperature-high"}, {"value": "voltage-alert"}, - {"value": "power-supply-failure"}, + {"value": "power-supply", "v_range": [["v7.4.2", ""]]}, {"value": "fan-failure"}, + {"value": "power-supply-failure", "v_range": [["v6.0.0", "v7.4.1"]]}, ], "multiple_values": True, "elements": "str", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_speed_test_schedule.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_speed_test_schedule.py index abb2c73ed..b59f55e7c 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_speed_test_schedule.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_speed_test_schedule.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -88,6 +88,10 @@ options: default: null type: dict suboptions: + ctrl_port: + description: + - Port of the controller to get access token. + type: int diffserv: description: - DSCP used for speed test. @@ -127,6 +131,10 @@ options: description: - Speed test server name. type: str + server_port: + description: + - Port of the server to run speed test. + type: int status: description: - Enable/disable scheduled speed test. @@ -164,6 +172,15 @@ options: description: - Minimum uploading bandwidth (kbps) to be considered effective. type: int + update_shaper: + description: + - Set egress shaper based on the test result. + type: str + choices: + - 'disable' + - 'local' + - 'remote' + - 'both' """ EXAMPLES = """ @@ -173,14 +190,16 @@ EXAMPLES = """ state: "present" access_token: "<your_own_value>" system_speed_test_schedule: + ctrl_port: "5200" diffserv: "<your_own_value>" dynamic_server: "disable" interface: "<your_own_value> (source system.interface.name)" mode: "UDP" schedules: - - name: "default_name_8 (source firewall.schedule.recurring.name)" + name: "default_name_9 (source firewall.schedule.recurring.name)" server_name: "<your_own_value>" + server_port: "5201" status: "disable" update_inbandwidth: "disable" update_inbandwidth_maximum: "0" @@ -188,6 +207,7 @@ EXAMPLES = """ update_outbandwidth: "disable" update_outbandwidth_maximum: "0" update_outbandwidth_minimum: "0" + update_shaper: "disable" """ RETURN = """ @@ -271,12 +291,14 @@ from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.data_post def filter_system_speed_test_schedule_data(json): option_list = [ + "ctrl_port", "diffserv", "dynamic_server", "interface", "mode", "schedules", "server_name", + "server_port", "status", "update_inbandwidth", "update_inbandwidth_maximum", @@ -284,6 +306,7 @@ def filter_system_speed_test_schedule_data(json): "update_outbandwidth", "update_outbandwidth_maximum", "update_outbandwidth_minimum", + "update_shaper", ] json = remove_invalid_fields(json) @@ -315,12 +338,13 @@ def system_speed_test_schedule(data, fos): state = data["state"] system_speed_test_schedule_data = data["system_speed_test_schedule"] - filtered_data = underscore_to_hyphen( - filter_system_speed_test_schedule_data(system_speed_test_schedule_data) + filtered_data = filter_system_speed_test_schedule_data( + system_speed_test_schedule_data ) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: - return fos.set("system", "speed-test-schedule", data=filtered_data, vdom=vdom) + return fos.set("system", "speed-test-schedule", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( @@ -394,6 +418,18 @@ versioned_schema = { "type": "string", "options": [{"value": "disable"}, {"value": "enable"}], }, + "ctrl_port": {"v_range": [["v7.4.2", ""]], "type": "integer"}, + "server_port": {"v_range": [["v7.4.2", ""]], "type": "integer"}, + "update_shaper": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [ + {"value": "disable"}, + {"value": "local"}, + {"value": "remote"}, + {"value": "both"}, + ], + }, "update_inbandwidth": { "v_range": [["v7.0.0", ""]], "type": "string", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_speed_test_server.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_speed_test_server.py index 64cfa6c54..f14ca9a4d 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_speed_test_server.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_speed_test_server.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -279,9 +279,8 @@ def system_speed_test_server(data, fos, check_mode=False): state = data["state"] system_speed_test_server_data = data["system_speed_test_server"] - filtered_data = underscore_to_hyphen( - filter_system_speed_test_server_data(system_speed_test_server_data) - ) + filtered_data = filter_system_speed_test_server_data(system_speed_test_server_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -345,7 +344,7 @@ def system_speed_test_server(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "speed-test-server", data=filtered_data, vdom=vdom) + return fos.set("system", "speed-test-server", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_speed_test_setting.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_speed_test_setting.py index a5536c3a6..c8f999b63 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_speed_test_setting.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_speed_test_setting.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -208,11 +208,12 @@ def underscore_to_hyphen(data): def system_speed_test_setting(data, fos): vdom = data["vdom"] system_speed_test_setting_data = data["system_speed_test_setting"] - filtered_data = underscore_to_hyphen( - filter_system_speed_test_setting_data(system_speed_test_setting_data) + filtered_data = filter_system_speed_test_setting_data( + system_speed_test_setting_data ) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "speed-test-setting", data=filtered_data, vdom=vdom) + return fos.set("system", "speed-test-setting", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_sso_admin.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_sso_admin.py index 392ea09b6..5f9292784 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_sso_admin.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_sso_admin.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -497,9 +497,8 @@ def system_sso_admin(data, fos, check_mode=False): state = data["state"] system_sso_admin_data = data["system_sso_admin"] - filtered_data = underscore_to_hyphen( - filter_system_sso_admin_data(system_sso_admin_data) - ) + filtered_data = filter_system_sso_admin_data(system_sso_admin_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -563,7 +562,7 @@ def system_sso_admin(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "sso-admin", data=filtered_data, vdom=vdom) + return fos.set("system", "sso-admin", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("system", "sso-admin", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_sso_forticloud_admin.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_sso_forticloud_admin.py index 4f23eb793..2650b8265 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_sso_forticloud_admin.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_sso_forticloud_admin.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -235,12 +235,13 @@ def system_sso_forticloud_admin(data, fos): state = data["state"] system_sso_forticloud_admin_data = data["system_sso_forticloud_admin"] - filtered_data = underscore_to_hyphen( - filter_system_sso_forticloud_admin_data(system_sso_forticloud_admin_data) + filtered_data = filter_system_sso_forticloud_admin_data( + system_sso_forticloud_admin_data ) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: - return fos.set("system", "sso-forticloud-admin", data=filtered_data, vdom=vdom) + return fos.set("system", "sso-forticloud-admin", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_sso_fortigate_cloud_admin.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_sso_fortigate_cloud_admin.py index 5dfcaa18e..8d9f3fd5d 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_sso_fortigate_cloud_admin.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_sso_fortigate_cloud_admin.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -235,15 +235,14 @@ def system_sso_fortigate_cloud_admin(data, fos): state = data["state"] system_sso_fortigate_cloud_admin_data = data["system_sso_fortigate_cloud_admin"] - filtered_data = underscore_to_hyphen( - filter_system_sso_fortigate_cloud_admin_data( - system_sso_fortigate_cloud_admin_data - ) + filtered_data = filter_system_sso_fortigate_cloud_admin_data( + system_sso_fortigate_cloud_admin_data ) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: return fos.set( - "system", "sso-fortigate-cloud-admin", data=filtered_data, vdom=vdom + "system", "sso-fortigate-cloud-admin", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_standalone_cluster.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_standalone_cluster.py index 7245b6e94..b7eae9e61 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_standalone_cluster.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_standalone_cluster.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -80,6 +80,13 @@ options: default: null type: dict suboptions: + asymmetric_traffic_control: + description: + - Asymmetric traffic control mode. + type: str + choices: + - 'cps-preferred' + - 'strict-anti-replay' cluster_peer: description: - Configure FortiGate Session Life Support Protocol (FGSP) session synchronization. @@ -232,11 +239,12 @@ EXAMPLES = """ fortinet.fortios.fortios_system_standalone_cluster: vdom: "{{ vdom }}" system_standalone_cluster: + asymmetric_traffic_control: "cps-preferred" cluster_peer: - down_intfs_before_sess_sync: - - name: "default_name_5 (source system.interface.name)" + name: "default_name_6 (source system.interface.name)" hb_interval: "2" hb_lost_threshold: "10" ipsec_tunnel_sync: "enable" @@ -247,7 +255,7 @@ EXAMPLES = """ custom_service: - dst_port_range: "<your_own_value>" - id: "15" + id: "16" src_port_range: "<your_own_value>" dstaddr: "<your_own_value>" dstaddr6: "<your_own_value>" @@ -258,7 +266,7 @@ EXAMPLES = """ sync_id: "<you_own_value>" syncvd: - - name: "default_name_25 (source system.vdom.name)" + name: "default_name_26 (source system.vdom.name)" encryption: "enable" group_member_id: "0" layer2_connection: "available" @@ -348,6 +356,7 @@ from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.data_post def filter_system_standalone_cluster_data(json): option_list = [ + "asymmetric_traffic_control", "cluster_peer", "encryption", "group_member_id", @@ -415,11 +424,12 @@ def system_standalone_cluster(data, fos): system_standalone_cluster_data = flatten_multilists_attributes( system_standalone_cluster_data ) - filtered_data = underscore_to_hyphen( - filter_system_standalone_cluster_data(system_standalone_cluster_data) + filtered_data = filter_system_standalone_cluster_data( + system_standalone_cluster_data ) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "standalone-cluster", data=filtered_data, vdom=vdom) + return fos.set("system", "standalone-cluster", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -475,6 +485,11 @@ versioned_schema = { "options": [{"value": "enable"}, {"value": "disable"}], }, "psksecret": {"v_range": [["v6.4.0", ""]], "type": "string"}, + "asymmetric_traffic_control": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "cps-preferred"}, {"value": "strict-anti-replay"}], + }, "cluster_peer": { "type": "list", "elements": "dict", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_storage.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_storage.py index ae79460dc..2bb2aec92 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_storage.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_storage.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -289,9 +289,8 @@ def system_storage(data, fos, check_mode=False): state = data["state"] system_storage_data = data["system_storage"] - filtered_data = underscore_to_hyphen( - filter_system_storage_data(system_storage_data) - ) + filtered_data = filter_system_storage_data(system_storage_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -355,7 +354,7 @@ def system_storage(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "storage", data=filtered_data, vdom=vdom) + return fos.set("system", "storage", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("system", "storage", mkey=filtered_data["name"], vdom=vdom) @@ -414,12 +413,19 @@ versioned_schema = { "usage": { "v_range": [["v6.0.0", ""]], "type": "string", - "options": [{"value": "log"}, {"value": "wanopt"}], + "options": [ + {"value": "log"}, + {"value": "wanopt", "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]]}, + ], }, "wanopt_mode": { - "v_range": [["v6.0.0", ""]], + "v_range": [["v6.0.0", "v7.4.1"], ["v7.4.3", ""]], "type": "string", - "options": [{"value": "mix"}, {"value": "wanopt"}, {"value": "webcache"}], + "options": [ + {"value": "mix", "v_range": [["v6.0.0", ""]]}, + {"value": "wanopt", "v_range": [["v6.0.0", ""]]}, + {"value": "webcache", "v_range": [["v6.0.0", ""]]}, + ], }, }, "v_range": [["v6.0.0", ""]], diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_stp.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_stp.py index 46de753d0..105fa95bd 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_stp.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_stp.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -263,9 +263,10 @@ def underscore_to_hyphen(data): def system_stp(data, fos): vdom = data["vdom"] system_stp_data = data["system_stp"] - filtered_data = underscore_to_hyphen(filter_system_stp_data(system_stp_data)) + filtered_data = filter_system_stp_data(system_stp_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "stp", data=filtered_data, vdom=vdom) + return fos.set("system", "stp", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -297,7 +298,12 @@ def fortios_system(data, fos): versioned_schema = { - "v_range": [["v6.0.0", "v6.2.7"], ["v6.4.1", "v7.0.12"], ["v7.2.1", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v6.2.7"], + ["v6.4.1", "v7.0.12"], + ["v7.2.1", "v7.2.4"], + ["v7.4.2", "v7.4.2"], + ], "type": "dict", "children": { "switch_priority": { @@ -305,6 +311,7 @@ versioned_schema = { ["v6.0.0", "v6.2.7"], ["v6.4.1", "v7.0.12"], ["v7.2.1", "v7.2.4"], + ["v7.4.2", "v7.4.2"], ], "type": "string", "options": [ @@ -330,6 +337,7 @@ versioned_schema = { ["v6.0.0", "v6.2.7"], ["v6.4.1", "v7.0.12"], ["v7.2.1", "v7.2.4"], + ["v7.4.2", "v7.4.2"], ], "type": "integer", }, @@ -338,6 +346,7 @@ versioned_schema = { ["v6.0.0", "v6.2.7"], ["v6.4.1", "v7.0.12"], ["v7.2.1", "v7.2.4"], + ["v7.4.2", "v7.4.2"], ], "type": "integer", }, @@ -346,6 +355,7 @@ versioned_schema = { ["v6.0.0", "v6.2.7"], ["v6.4.1", "v7.0.12"], ["v7.2.1", "v7.2.4"], + ["v7.4.2", "v7.4.2"], ], "type": "integer", }, @@ -354,6 +364,7 @@ versioned_schema = { ["v6.0.0", "v6.2.7"], ["v6.4.1", "v7.0.12"], ["v7.2.1", "v7.2.4"], + ["v7.4.2", "v7.4.2"], ], "type": "integer", }, diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_switch_interface.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_switch_interface.py index 0ff1278c3..f235c3843 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_switch_interface.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_switch_interface.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -312,9 +312,8 @@ def system_switch_interface(data, fos, check_mode=False): state = data["state"] system_switch_interface_data = data["system_switch_interface"] - filtered_data = underscore_to_hyphen( - filter_system_switch_interface_data(system_switch_interface_data) - ) + filtered_data = filter_system_switch_interface_data(system_switch_interface_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -378,7 +377,7 @@ def system_switch_interface(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "switch-interface", data=filtered_data, vdom=vdom) + return fos.set("system", "switch-interface", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_tos_based_priority.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_tos_based_priority.py index 33368a318..ccef8852a 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_tos_based_priority.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_tos_based_priority.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -242,9 +242,10 @@ def system_tos_based_priority(data, fos, check_mode=False): state = data["state"] system_tos_based_priority_data = data["system_tos_based_priority"] - filtered_data = underscore_to_hyphen( - filter_system_tos_based_priority_data(system_tos_based_priority_data) + filtered_data = filter_system_tos_based_priority_data( + system_tos_based_priority_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -308,7 +309,7 @@ def system_tos_based_priority(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "tos-based-priority", data=filtered_data, vdom=vdom) + return fos.set("system", "tos-based-priority", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_vdom.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_vdom.py index b7a9df6f2..b16f4428c 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_vdom.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_vdom.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -245,7 +245,8 @@ def system_vdom(data, fos, check_mode=False): state = data["state"] system_vdom_data = data["system_vdom"] - filtered_data = underscore_to_hyphen(filter_system_vdom_data(system_vdom_data)) + filtered_data = filter_system_vdom_data(system_vdom_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -309,7 +310,7 @@ def system_vdom(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "vdom", data=filtered_data, vdom=vdom) + return fos.set("system", "vdom", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("system", "vdom", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_vdom_dns.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_vdom_dns.py index 0013e2c28..d23815d0a 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_vdom_dns.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_vdom_dns.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -346,11 +346,10 @@ def system_vdom_dns(data, fos): vdom = data["vdom"] system_vdom_dns_data = data["system_vdom_dns"] system_vdom_dns_data = flatten_multilists_attributes(system_vdom_dns_data) - filtered_data = underscore_to_hyphen( - filter_system_vdom_dns_data(system_vdom_dns_data) - ) + filtered_data = filter_system_vdom_dns_data(system_vdom_dns_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "vdom-dns", data=filtered_data, vdom=vdom) + return fos.set("system", "vdom-dns", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_vdom_exception.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_vdom_exception.py index e87f4a0d6..39659b0dd 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_vdom_exception.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_vdom_exception.py @@ -41,7 +41,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -139,6 +139,7 @@ options: - 'router.policy6' - 'log.syslogd.setting' - 'log.syslogd.override-setting' + - 'firewall.address' - 'firewall.vip46' - 'firewall.vip64' oid: @@ -302,9 +303,8 @@ def system_vdom_exception(data, fos, check_mode=False): state = data["state"] system_vdom_exception_data = data["system_vdom_exception"] - filtered_data = underscore_to_hyphen( - filter_system_vdom_exception_data(system_vdom_exception_data) - ) + filtered_data = filter_system_vdom_exception_data(system_vdom_exception_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -368,7 +368,7 @@ def system_vdom_exception(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "vdom-exception", data=filtered_data, vdom=vdom) + return fos.set("system", "vdom-exception", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( @@ -479,8 +479,9 @@ versioned_schema = { {"value": "system.saml", "v_range": []}, {"value": "router.policy", "v_range": []}, {"value": "router.policy6", "v_range": []}, - {"value": "log.syslogd.setting", "v_range": [["v7.4.1", ""]]}, - {"value": "log.syslogd.override-setting", "v_range": [["v7.4.1", ""]]}, + {"value": "log.syslogd.setting", "v_range": [["v7.4.3", ""]]}, + {"value": "log.syslogd.override-setting", "v_range": [["v7.4.3", ""]]}, + {"value": "firewall.address", "v_range": [["v7.4.2", ""]]}, {"value": "firewall.vip46", "v_range": []}, {"value": "firewall.vip64", "v_range": []}, ], diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_vdom_link.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_vdom_link.py index ac2be3ffc..0df38d5f7 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_vdom_link.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_vdom_link.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -242,9 +242,8 @@ def system_vdom_link(data, fos, check_mode=False): state = data["state"] system_vdom_link_data = data["system_vdom_link"] - filtered_data = underscore_to_hyphen( - filter_system_vdom_link_data(system_vdom_link_data) - ) + filtered_data = filter_system_vdom_link_data(system_vdom_link_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -308,7 +307,7 @@ def system_vdom_link(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "vdom-link", data=filtered_data, vdom=vdom) + return fos.set("system", "vdom-link", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("system", "vdom-link", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_vdom_netflow.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_vdom_netflow.py index c684f4179..c09c51e30 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_vdom_netflow.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_vdom_netflow.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -88,6 +88,41 @@ options: description: - NetFlow collector port number. type: int + collectors: + description: + - Netflow collectors. + type: list + elements: dict + suboptions: + collector_ip: + description: + - Collector IP. + type: str + collector_port: + description: + - NetFlow collector port number. + type: int + id: + description: + - ID. see <a href='#notes'>Notes</a>. + required: true + type: int + interface: + description: + - Specify outgoing interface to reach server. Source system.interface.name. + type: str + interface_select_method: + description: + - Specify how to select outgoing interface to reach server. + type: str + choices: + - 'auto' + - 'sdwan' + - 'specify' + source_ip: + description: + - Source IP address for communication with the NetFlow agent. + type: str interface: description: - Specify outgoing interface to reach server. Source system.interface.name. @@ -120,6 +155,14 @@ EXAMPLES = """ system_vdom_netflow: collector_ip: "<your_own_value>" collector_port: "2055" + collectors: + - + collector_ip: "<your_own_value>" + collector_port: "2055" + id: "8" + interface: "<your_own_value> (source system.interface.name)" + interface_select_method: "auto" + source_ip: "84.230.14.43" interface: "<your_own_value> (source system.interface.name)" interface_select_method: "auto" source_ip: "84.230.14.43" @@ -209,6 +252,7 @@ def filter_system_vdom_netflow_data(json): option_list = [ "collector_ip", "collector_port", + "collectors", "interface", "interface_select_method", "source_ip", @@ -241,11 +285,10 @@ def underscore_to_hyphen(data): def system_vdom_netflow(data, fos): vdom = data["vdom"] system_vdom_netflow_data = data["system_vdom_netflow"] - filtered_data = underscore_to_hyphen( - filter_system_vdom_netflow_data(system_vdom_netflow_data) - ) + filtered_data = filter_system_vdom_netflow_data(system_vdom_netflow_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "vdom-netflow", data=filtered_data, vdom=vdom) + return fos.set("system", "vdom-netflow", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -285,15 +328,40 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, - "collector_ip": {"v_range": [["v6.0.0", ""]], "type": "string"}, - "collector_port": {"v_range": [["v6.0.0", ""]], "type": "integer"}, - "source_ip": {"v_range": [["v6.0.0", ""]], "type": "string"}, + "collectors": { + "type": "list", + "elements": "dict", + "children": { + "id": { + "v_range": [["v7.4.2", ""]], + "type": "integer", + "required": True, + }, + "collector_ip": {"v_range": [["v7.4.2", ""]], "type": "string"}, + "collector_port": {"v_range": [["v7.4.2", ""]], "type": "integer"}, + "source_ip": {"v_range": [["v7.4.2", ""]], "type": "string"}, + "interface_select_method": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [ + {"value": "auto"}, + {"value": "sdwan"}, + {"value": "specify"}, + ], + }, + "interface": {"v_range": [["v7.4.2", ""]], "type": "string"}, + }, + "v_range": [["v7.4.2", ""]], + }, + "collector_ip": {"v_range": [["v6.0.0", "v7.4.1"]], "type": "string"}, + "collector_port": {"v_range": [["v6.0.0", "v7.4.1"]], "type": "integer"}, + "source_ip": {"v_range": [["v6.0.0", "v7.4.1"]], "type": "string"}, "interface_select_method": { - "v_range": [["v7.0.1", ""]], + "v_range": [["v7.0.1", "v7.4.1"]], "type": "string", "options": [{"value": "auto"}, {"value": "sdwan"}, {"value": "specify"}], }, - "interface": {"v_range": [["v7.0.1", ""]], "type": "string"}, + "interface": {"v_range": [["v7.0.1", "v7.4.1"]], "type": "string"}, }, } diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_vdom_property.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_vdom_property.py index 39fe22b9e..0c68e0c27 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_vdom_property.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_vdom_property.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -412,9 +412,8 @@ def system_vdom_property(data, fos, check_mode=False): system_vdom_property_data = data["system_vdom_property"] system_vdom_property_data = flatten_multilists_attributes(system_vdom_property_data) - filtered_data = underscore_to_hyphen( - filter_system_vdom_property_data(system_vdom_property_data) - ) + filtered_data = filter_system_vdom_property_data(system_vdom_property_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -478,7 +477,7 @@ def system_vdom_property(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "vdom-property", data=filtered_data, vdom=vdom) + return fos.set("system", "vdom-property", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_vdom_radius_server.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_vdom_radius_server.py index 9ac2b7ebc..47e83b712 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_vdom_radius_server.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_vdom_radius_server.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -238,9 +238,10 @@ def system_vdom_radius_server(data, fos, check_mode=False): state = data["state"] system_vdom_radius_server_data = data["system_vdom_radius_server"] - filtered_data = underscore_to_hyphen( - filter_system_vdom_radius_server_data(system_vdom_radius_server_data) + filtered_data = filter_system_vdom_radius_server_data( + system_vdom_radius_server_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -304,7 +305,7 @@ def system_vdom_radius_server(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "vdom-radius-server", data=filtered_data, vdom=vdom) + return fos.set("system", "vdom-radius-server", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_vdom_sflow.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_vdom_sflow.py index dc7fcca9f..f9b29a43e 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_vdom_sflow.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_vdom_sflow.py @@ -39,7 +39,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -91,6 +91,42 @@ options: - UDP port number used for sending sFlow datagrams (configure only if required by your sFlow collector or your network configuration) (0 - 65535). type: int + collectors: + description: + - sFlow collectors. + type: list + elements: dict + suboptions: + collector_ip: + description: + - IP addresses of the sFlow collectors that sFlow agents added to interfaces in this VDOM send sFlow datagrams to. + type: str + collector_port: + description: + - UDP port number used for sending sFlow datagrams (configure only if required by your sFlow collector or your network + configuration) (0 - 65535). + type: int + id: + description: + - ID. see <a href='#notes'>Notes</a>. + required: true + type: int + interface: + description: + - Specify outgoing interface to reach server. Source system.interface.name. + type: str + interface_select_method: + description: + - Specify how to select outgoing interface to reach server. + type: str + choices: + - 'auto' + - 'sdwan' + - 'specify' + source_ip: + description: + - Source IP address for sFlow agent. + type: str interface: description: - Specify outgoing interface to reach server. Source system.interface.name. @@ -124,6 +160,14 @@ EXAMPLES = """ system_vdom_sflow: collector_ip: "<your_own_value>" collector_port: "6343" + collectors: + - + collector_ip: "<your_own_value>" + collector_port: "6343" + id: "8" + interface: "<your_own_value> (source system.interface.name)" + interface_select_method: "auto" + source_ip: "84.230.14.43" interface: "<your_own_value> (source system.interface.name)" interface_select_method: "auto" source_ip: "84.230.14.43" @@ -213,6 +257,7 @@ def filter_system_vdom_sflow_data(json): option_list = [ "collector_ip", "collector_port", + "collectors", "interface", "interface_select_method", "source_ip", @@ -245,11 +290,10 @@ def underscore_to_hyphen(data): def system_vdom_sflow(data, fos): vdom = data["vdom"] system_vdom_sflow_data = data["system_vdom_sflow"] - filtered_data = underscore_to_hyphen( - filter_system_vdom_sflow_data(system_vdom_sflow_data) - ) + filtered_data = filter_system_vdom_sflow_data(system_vdom_sflow_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "vdom-sflow", data=filtered_data, vdom=vdom) + return fos.set("system", "vdom-sflow", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -289,15 +333,40 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, - "collector_ip": {"v_range": [["v6.0.0", ""]], "type": "string"}, - "collector_port": {"v_range": [["v6.0.0", ""]], "type": "integer"}, - "source_ip": {"v_range": [["v6.0.0", ""]], "type": "string"}, + "collectors": { + "type": "list", + "elements": "dict", + "children": { + "id": { + "v_range": [["v7.4.2", ""]], + "type": "integer", + "required": True, + }, + "collector_ip": {"v_range": [["v7.4.2", ""]], "type": "string"}, + "collector_port": {"v_range": [["v7.4.2", ""]], "type": "integer"}, + "source_ip": {"v_range": [["v7.4.2", ""]], "type": "string"}, + "interface_select_method": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [ + {"value": "auto"}, + {"value": "sdwan"}, + {"value": "specify"}, + ], + }, + "interface": {"v_range": [["v7.4.2", ""]], "type": "string"}, + }, + "v_range": [["v7.4.2", ""]], + }, + "collector_ip": {"v_range": [["v6.0.0", "v7.4.1"]], "type": "string"}, + "collector_port": {"v_range": [["v6.0.0", "v7.4.1"]], "type": "integer"}, + "source_ip": {"v_range": [["v6.0.0", "v7.4.1"]], "type": "string"}, "interface_select_method": { - "v_range": [["v7.0.1", ""]], + "v_range": [["v7.0.1", "v7.4.1"]], "type": "string", "options": [{"value": "auto"}, {"value": "sdwan"}, {"value": "specify"}], }, - "interface": {"v_range": [["v7.0.1", ""]], "type": "string"}, + "interface": {"v_range": [["v7.0.1", "v7.4.1"]], "type": "string"}, }, } diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_virtual_switch.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_virtual_switch.py index 4a10e969e..acb26336d 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_virtual_switch.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_virtual_switch.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -166,6 +166,10 @@ options: description: - SPAN source port. type: str + vlan: + description: + - VLAN. + type: int """ EXAMPLES = """ @@ -188,6 +192,7 @@ EXAMPLES = """ span_dest_port: "<your_own_value>" span_direction: "rx" span_source_port: "<your_own_value>" + vlan: "0" """ RETURN = """ @@ -287,6 +292,7 @@ def filter_system_virtual_switch_data(json): "span_dest_port", "span_direction", "span_source_port", + "vlan", ] json = remove_invalid_fields(json) @@ -318,9 +324,8 @@ def system_virtual_switch(data, fos, check_mode=False): state = data["state"] system_virtual_switch_data = data["system_virtual_switch"] - filtered_data = underscore_to_hyphen( - filter_system_virtual_switch_data(system_virtual_switch_data) - ) + filtered_data = filter_system_virtual_switch_data(system_virtual_switch_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -384,7 +389,7 @@ def system_virtual_switch(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "virtual-switch", data=filtered_data, vdom=vdom) + return fos.set("system", "virtual-switch", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( @@ -432,6 +437,7 @@ versioned_schema = { ["v6.0.0", "v6.2.7"], ["v6.4.1", "v7.0.12"], ["v7.2.1", "v7.2.4"], + ["v7.4.2", "v7.4.2"], ], "type": "string", "required": True, @@ -441,9 +447,11 @@ versioned_schema = { ["v6.0.0", "v6.2.7"], ["v6.4.1", "v7.0.12"], ["v7.2.1", "v7.2.4"], + ["v7.4.2", "v7.4.2"], ], "type": "string", }, + "vlan": {"v_range": [["v7.4.2", "v7.4.2"]], "type": "integer"}, "port": { "type": "list", "elements": "dict", @@ -453,6 +461,7 @@ versioned_schema = { ["v6.0.0", "v6.2.7"], ["v6.4.1", "v7.0.12"], ["v7.2.1", "v7.2.4"], + ["v7.4.2", "v7.4.2"], ], "type": "string", "required": True, @@ -462,6 +471,7 @@ versioned_schema = { ["v6.0.0", "v6.2.7"], ["v6.4.1", "v7.0.12"], ["v7.2.1", "v7.2.4"], + ["v7.4.2", "v7.4.2"], ], "type": "string", }, @@ -498,6 +508,7 @@ versioned_schema = { ["v6.0.0", "v6.2.7"], ["v6.4.1", "v7.0.12"], ["v7.2.1", "v7.2.4"], + ["v7.4.2", "v7.4.2"], ], }, "span": { @@ -535,7 +546,12 @@ versioned_schema = { "options": [{"value": "rx"}, {"value": "tx"}, {"value": "both"}], }, }, - "v_range": [["v6.0.0", "v6.2.7"], ["v6.4.1", "v7.0.12"], ["v7.2.1", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v6.2.7"], + ["v6.4.1", "v7.0.12"], + ["v7.2.1", "v7.2.4"], + ["v7.4.2", "v7.4.2"], + ], } diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_virtual_wan_link.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_virtual_wan_link.py index a9a19d396..cfa1b9512 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_virtual_wan_link.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_virtual_wan_link.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -1139,11 +1139,10 @@ def system_virtual_wan_link(data, fos): system_virtual_wan_link_data = flatten_multilists_attributes( system_virtual_wan_link_data ) - filtered_data = underscore_to_hyphen( - filter_system_virtual_wan_link_data(system_virtual_wan_link_data) - ) + filtered_data = filter_system_virtual_wan_link_data(system_virtual_wan_link_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "virtual-wan-link", data=filtered_data, vdom=vdom) + return fos.set("system", "virtual-wan-link", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_virtual_wire_pair.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_virtual_wire_pair.py index 5a9ca9e87..a3a791270 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_virtual_wire_pair.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_virtual_wire_pair.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -104,6 +104,17 @@ options: - Virtual-wire-pair name. Must be a unique interface name. required: true type: str + outer_vlan_id: + description: + - Outer VLAN ID. + type: list + elements: dict + suboptions: + vlanid: + description: + - VLAN ID (1 - 4094). see <a href='#notes'>Notes</a>. + required: true + type: int vlan_filter: description: - VLAN ranges to allow @@ -128,6 +139,9 @@ EXAMPLES = """ - interface_name: "<your_own_value> (source system.interface.name)" name: "default_name_5" + outer_vlan_id: + - + vlanid: "<you_own_value>" vlan_filter: "<your_own_value>" wildcard_vlan: "enable" """ @@ -221,7 +235,7 @@ from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.compariso def filter_system_virtual_wire_pair_data(json): - option_list = ["member", "name", "vlan_filter", "wildcard_vlan"] + option_list = ["member", "name", "outer_vlan_id", "vlan_filter", "wildcard_vlan"] json = remove_invalid_fields(json) dictionary = {} @@ -252,9 +266,8 @@ def system_virtual_wire_pair(data, fos, check_mode=False): state = data["state"] system_virtual_wire_pair_data = data["system_virtual_wire_pair"] - filtered_data = underscore_to_hyphen( - filter_system_virtual_wire_pair_data(system_virtual_wire_pair_data) - ) + filtered_data = filter_system_virtual_wire_pair_data(system_virtual_wire_pair_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -318,7 +331,7 @@ def system_virtual_wire_pair(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "virtual-wire-pair", data=filtered_data, vdom=vdom) + return fos.set("system", "virtual-wire-pair", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( @@ -382,6 +395,18 @@ versioned_schema = { "options": [{"value": "enable"}, {"value": "disable"}], }, "vlan_filter": {"v_range": [["v6.0.0", ""]], "type": "string"}, + "outer_vlan_id": { + "type": "list", + "elements": "dict", + "children": { + "vlanid": { + "v_range": [["v7.4.2", "v7.4.2"]], + "type": "integer", + "required": True, + } + }, + "v_range": [["v7.4.2", "v7.4.2"]], + }, }, "v_range": [["v6.0.0", ""]], } diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_vne_tunnel.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_vne_tunnel.py index 700a54d68..cb9330daf 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_vne_tunnel.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_vne_tunnel.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -274,11 +274,10 @@ def underscore_to_hyphen(data): def system_vne_tunnel(data, fos): vdom = data["vdom"] system_vne_tunnel_data = data["system_vne_tunnel"] - filtered_data = underscore_to_hyphen( - filter_system_vne_tunnel_data(system_vne_tunnel_data) - ) + filtered_data = filter_system_vne_tunnel_data(system_vne_tunnel_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("system", "vne-tunnel", data=filtered_data, vdom=vdom) + return fos.set("system", "vne-tunnel", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_vxlan.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_vxlan.py index 059a20d85..2c4dad558 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_vxlan.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_vxlan.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -307,7 +307,8 @@ def system_vxlan(data, fos, check_mode=False): state = data["state"] system_vxlan_data = data["system_vxlan"] - filtered_data = underscore_to_hyphen(filter_system_vxlan_data(system_vxlan_data)) + filtered_data = filter_system_vxlan_data(system_vxlan_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -371,7 +372,7 @@ def system_vxlan(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "vxlan", data=filtered_data, vdom=vdom) + return fos.set("system", "vxlan", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("system", "vxlan", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_wccp.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_wccp.py index f1ca85b99..2891303f7 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_wccp.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_wccp.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -432,7 +432,8 @@ def system_wccp(data, fos, check_mode=False): system_wccp_data = data["system_wccp"] system_wccp_data = flatten_multilists_attributes(system_wccp_data) - filtered_data = underscore_to_hyphen(filter_system_wccp_data(system_wccp_data)) + filtered_data = filter_system_wccp_data(system_wccp_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -496,7 +497,7 @@ def system_wccp(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "wccp", data=filtered_data, vdom=vdom) + return fos.set("system", "wccp", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("system", "wccp", mkey=filtered_data["service-id"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_zone.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_zone.py index f8bd26ce1..9a2669a2f 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_zone.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_system_zone.py @@ -39,7 +39,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -288,7 +288,8 @@ def system_zone(data, fos, check_mode=False): state = data["state"] system_zone_data = data["system_zone"] - filtered_data = underscore_to_hyphen(filter_system_zone_data(system_zone_data)) + filtered_data = filter_system_zone_data(system_zone_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -352,7 +353,7 @@ def system_zone(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("system", "zone", data=filtered_data, vdom=vdom) + return fos.set("system", "zone", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("system", "zone", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_adgrp.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_adgrp.py index d2a2ad61b..a2afdb626 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_adgrp.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_adgrp.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -240,7 +240,8 @@ def user_adgrp(data, fos, check_mode=False): state = data["state"] user_adgrp_data = data["user_adgrp"] - filtered_data = underscore_to_hyphen(filter_user_adgrp_data(user_adgrp_data)) + filtered_data = filter_user_adgrp_data(user_adgrp_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -304,7 +305,7 @@ def user_adgrp(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("user", "adgrp", data=filtered_data, vdom=vdom) + return fos.set("user", "adgrp", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("user", "adgrp", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_certificate.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_certificate.py index 3b0b72944..2c5625bfb 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_certificate.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_certificate.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -247,12 +247,11 @@ def user_certificate(data, fos): state = data["state"] user_certificate_data = data["user_certificate"] - filtered_data = underscore_to_hyphen( - filter_user_certificate_data(user_certificate_data) - ) + filtered_data = filter_user_certificate_data(user_certificate_data) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: - return fos.set("user", "certificate", data=filtered_data, vdom=vdom) + return fos.set("user", "certificate", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("user", "certificate", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_device.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_device.py index 934b9d290..d94391298 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_device.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_device.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -333,7 +333,8 @@ def user_device(data, fos, check_mode=False): state = data["state"] user_device_data = data["user_device"] - filtered_data = underscore_to_hyphen(filter_user_device_data(user_device_data)) + filtered_data = filter_user_device_data(user_device_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -397,7 +398,7 @@ def user_device(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("user", "device", data=filtered_data, vdom=vdom) + return fos.set("user", "device", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("user", "device", mkey=filtered_data["alias"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_device_access_list.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_device_access_list.py index efcd7b71d..a7ba0684c 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_device_access_list.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_device_access_list.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -260,9 +260,8 @@ def user_device_access_list(data, fos, check_mode=False): state = data["state"] user_device_access_list_data = data["user_device_access_list"] - filtered_data = underscore_to_hyphen( - filter_user_device_access_list_data(user_device_access_list_data) - ) + filtered_data = filter_user_device_access_list_data(user_device_access_list_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -326,7 +325,7 @@ def user_device_access_list(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("user", "device-access-list", data=filtered_data, vdom=vdom) + return fos.set("user", "device-access-list", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_device_category.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_device_category.py index 2feb3a050..08567b209 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_device_category.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_device_category.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -235,9 +235,8 @@ def user_device_category(data, fos, check_mode=False): state = data["state"] user_device_category_data = data["user_device_category"] - filtered_data = underscore_to_hyphen( - filter_user_device_category_data(user_device_category_data) - ) + filtered_data = filter_user_device_category_data(user_device_category_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -301,7 +300,7 @@ def user_device_category(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("user", "device-category", data=filtered_data, vdom=vdom) + return fos.set("user", "device-category", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_device_group.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_device_group.py index 30500817d..e0dcdc8bf 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_device_group.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_device_group.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -277,9 +277,8 @@ def user_device_group(data, fos, check_mode=False): state = data["state"] user_device_group_data = data["user_device_group"] - filtered_data = underscore_to_hyphen( - filter_user_device_group_data(user_device_group_data) - ) + filtered_data = filter_user_device_group_data(user_device_group_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -343,7 +342,7 @@ def user_device_group(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("user", "device-group", data=filtered_data, vdom=vdom) + return fos.set("user", "device-group", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("user", "device-group", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_domain_controller.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_domain_controller.py index c5be70514..b7ba0ed0a 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_domain_controller.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_domain_controller.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -417,9 +417,8 @@ def user_domain_controller(data, fos, check_mode=False): state = data["state"] user_domain_controller_data = data["user_domain_controller"] - filtered_data = underscore_to_hyphen( - filter_user_domain_controller_data(user_domain_controller_data) - ) + filtered_data = filter_user_domain_controller_data(user_domain_controller_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -483,7 +482,7 @@ def user_domain_controller(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("user", "domain-controller", data=filtered_data, vdom=vdom) + return fos.set("user", "domain-controller", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_exchange.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_exchange.py index 444f643fb..863370d6b 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_exchange.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_exchange.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -335,7 +335,8 @@ def user_exchange(data, fos, check_mode=False): state = data["state"] user_exchange_data = data["user_exchange"] - filtered_data = underscore_to_hyphen(filter_user_exchange_data(user_exchange_data)) + filtered_data = filter_user_exchange_data(user_exchange_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -399,7 +400,7 @@ def user_exchange(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("user", "exchange", data=filtered_data, vdom=vdom) + return fos.set("user", "exchange", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("user", "exchange", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_external_identity_provider.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_external_identity_provider.py new file mode 100644 index 000000000..05a0f2482 --- /dev/null +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_external_identity_provider.py @@ -0,0 +1,462 @@ +#!/usr/bin/python +from __future__ import absolute_import, division, print_function + +# Copyright: (c) 2022 Fortinet +# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +__metaclass__ = type + +ANSIBLE_METADATA = { + "status": ["preview"], + "supported_by": "community", + "metadata_version": "1.1", +} + +DOCUMENTATION = """ +--- +module: fortios_user_external_identity_provider +short_description: Configure external identity provider in Fortinet's FortiOS and FortiGate. +description: + - This module is able to configure a FortiGate or FortiOS (FOS) device by allowing the + user to set and modify user feature and external_identity_provider category. + Examples include all parameters and values need to be adjusted to datasources before usage. + Tested with FOS v6.0.0 +version_added: "2.0.0" +author: + - Link Zheng (@chillancezen) + - Jie Xue (@JieX19) + - Hongbin Lu (@fgtdev-hblu) + - Frank Shen (@frankshen01) + - Miguel Angel Munoz (@mamunozgonzalez) + - Nicolas Thomas (@thomnico) +notes: + - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks + +requirements: + - ansible>=2.15 +options: + access_token: + description: + - Token-based authentication. + Generated from GUI of Fortigate. + type: str + required: false + enable_log: + description: + - Enable/Disable logging for task. + type: bool + required: false + default: false + vdom: + description: + - Virtual domain, among those defined previously. A vdom is a + virtual instance of the FortiGate that can be configured and + used as a different unit. + type: str + default: root + member_path: + type: str + description: + - Member attribute path to operate on. + - Delimited by a slash character if there are more than one attribute. + - Parameter marked with member_path is legitimate for doing member operation. + member_state: + type: str + description: + - Add or delete a member under specified attribute path. + - When member_state is specified, the state option is ignored. + choices: + - 'present' + - 'absent' + + state: + description: + - Indicates whether to create or remove the object. + type: str + required: true + choices: + - 'present' + - 'absent' + user_external_identity_provider: + description: + - Configure external identity provider. + default: null + type: dict + suboptions: + group_attr_name: + description: + - Group attribute name in authentication query. + type: str + interface: + description: + - Specify outgoing interface to reach server. Source system.interface.name. + type: str + interface_select_method: + description: + - Specify how to select outgoing interface to reach server. + type: str + choices: + - 'auto' + - 'sdwan' + - 'specify' + name: + description: + - External identity provider name. + required: true + type: str + port: + description: + - External identity provider service port number (0 to use default). + type: int + server_identity_check: + description: + - Enable/disable server"s identity check against its certificate and subject alternative name(s). + type: str + choices: + - 'disable' + - 'enable' + source_ip: + description: + - Use this IPv4/v6 address to connect to the external identity provider. + type: str + timeout: + description: + - Connection timeout value in seconds . + type: int + type: + description: + - External identity provider type. + type: str + choices: + - 'ms-graph' + user_attr_name: + description: + - User attribute name in authentication query. + type: str + version: + description: + - External identity API version. + type: str + choices: + - 'v1.0' + - 'beta' +""" + +EXAMPLES = """ +- name: Configure external identity provider. + fortinet.fortios.fortios_user_external_identity_provider: + vdom: "{{ vdom }}" + state: "present" + access_token: "<your_own_value>" + user_external_identity_provider: + group_attr_name: "<your_own_value>" + interface: "<your_own_value> (source system.interface.name)" + interface_select_method: "auto" + name: "default_name_6" + port: "0" + server_identity_check: "disable" + source_ip: "84.230.14.43" + timeout: "5" + type: "ms-graph" + user_attr_name: "<your_own_value>" + version: "v1.0" +""" + +RETURN = """ +build: + description: Build number of the fortigate image + returned: always + type: str + sample: '1547' +http_method: + description: Last method used to provision the content into FortiGate + returned: always + type: str + sample: 'PUT' +http_status: + description: Last result given by FortiGate on last operation applied + returned: always + type: str + sample: "200" +mkey: + description: Master key (id) used in the last call to FortiGate + returned: success + type: str + sample: "id" +name: + description: Name of the table used to fulfill the request + returned: always + type: str + sample: "urlfilter" +path: + description: Path of the table used to fulfill the request + returned: always + type: str + sample: "webfilter" +revision: + description: Internal revision number + returned: always + type: str + sample: "17.0.2.10658" +serial: + description: Serial number of the unit + returned: always + type: str + sample: "FGVMEVYYQT3AB5352" +status: + description: Indication of the operation's result + returned: always + type: str + sample: "success" +vdom: + description: Virtual domain used + returned: always + type: str + sample: "root" +version: + description: Version of the FortiGate + returned: always + type: str + sample: "v5.6.3" +""" +from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.connection import Connection +from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.fortios import ( + FortiOSHandler, +) +from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.fortios import ( + check_legacy_fortiosapi, +) +from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.fortios import ( + schema_to_module_spec, +) +from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.fortios import ( + check_schema_versioning, +) +from ansible_collections.fortinet.fortios.plugins.module_utils.fortimanager.common import ( + FAIL_SOCKET_MSG, +) +from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.data_post_processor import ( + remove_invalid_fields, +) + + +def filter_user_external_identity_provider_data(json): + option_list = [ + "group_attr_name", + "interface", + "interface_select_method", + "name", + "port", + "server_identity_check", + "source_ip", + "timeout", + "type", + "user_attr_name", + "version", + ] + + json = remove_invalid_fields(json) + dictionary = {} + + for attribute in option_list: + if attribute in json and json[attribute] is not None: + dictionary[attribute] = json[attribute] + + return dictionary + + +def underscore_to_hyphen(data): + if isinstance(data, list): + for i, elem in enumerate(data): + data[i] = underscore_to_hyphen(elem) + elif isinstance(data, dict): + new_data = {} + for k, v in data.items(): + new_data[k.replace("_", "-")] = underscore_to_hyphen(v) + data = new_data + + return data + + +def user_external_identity_provider(data, fos): + vdom = data["vdom"] + + state = data["state"] + + user_external_identity_provider_data = data["user_external_identity_provider"] + filtered_data = filter_user_external_identity_provider_data( + user_external_identity_provider_data + ) + converted_data = underscore_to_hyphen(filtered_data) + + if state == "present" or state is True: + return fos.set( + "user", "external-identity-provider", data=converted_data, vdom=vdom + ) + + elif state == "absent": + return fos.delete( + "user", "external-identity-provider", mkey=filtered_data["name"], vdom=vdom + ) + else: + fos._module.fail_json(msg="state must be present or absent!") + + +def is_successful_status(resp): + return ( + "status" in resp + and resp["status"] == "success" + or "http_status" in resp + and resp["http_status"] == 200 + or "http_method" in resp + and resp["http_method"] == "DELETE" + and resp["http_status"] == 404 + ) + + +def fortios_user(data, fos): + fos.do_member_operation("user", "external-identity-provider") + if data["user_external_identity_provider"]: + resp = user_external_identity_provider(data, fos) + else: + fos._module.fail_json( + msg="missing task body: %s" % ("user_external_identity_provider") + ) + + return ( + not is_successful_status(resp), + is_successful_status(resp) + and (resp["revision_changed"] if "revision_changed" in resp else True), + resp, + {}, + ) + + +versioned_schema = { + "type": "list", + "elements": "dict", + "children": { + "name": {"v_range": [["v7.4.2", ""]], "type": "string", "required": True}, + "type": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "ms-graph"}], + }, + "version": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "v1.0"}, {"value": "beta"}], + }, + "user_attr_name": {"v_range": [["v7.4.2", ""]], "type": "string"}, + "group_attr_name": {"v_range": [["v7.4.2", ""]], "type": "string"}, + "port": {"v_range": [["v7.4.2", ""]], "type": "integer"}, + "source_ip": {"v_range": [["v7.4.2", ""]], "type": "string"}, + "interface_select_method": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "auto"}, {"value": "sdwan"}, {"value": "specify"}], + }, + "interface": {"v_range": [["v7.4.2", ""]], "type": "string"}, + "server_identity_check": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "disable"}, {"value": "enable"}], + }, + "timeout": {"v_range": [["v7.4.2", ""]], "type": "integer"}, + }, + "v_range": [["v7.4.2", ""]], +} + + +def main(): + module_spec = schema_to_module_spec(versioned_schema) + mkeyname = "name" + fields = { + "access_token": {"required": False, "type": "str", "no_log": True}, + "enable_log": {"required": False, "type": "bool", "default": False}, + "vdom": {"required": False, "type": "str", "default": "root"}, + "member_path": {"required": False, "type": "str"}, + "member_state": { + "type": "str", + "required": False, + "choices": ["present", "absent"], + }, + "state": {"required": True, "type": "str", "choices": ["present", "absent"]}, + "user_external_identity_provider": { + "required": False, + "type": "dict", + "default": None, + "options": {}, + }, + } + for attribute_name in module_spec["options"]: + fields["user_external_identity_provider"]["options"][ + attribute_name + ] = module_spec["options"][attribute_name] + if mkeyname and mkeyname == attribute_name: + fields["user_external_identity_provider"]["options"][attribute_name][ + "required" + ] = True + + module = AnsibleModule(argument_spec=fields, supports_check_mode=False) + check_legacy_fortiosapi(module) + + is_error = False + has_changed = False + result = None + diff = None + + versions_check_result = None + if module._socket_path: + connection = Connection(module._socket_path) + if "access_token" in module.params: + connection.set_option("access_token", module.params["access_token"]) + + if "enable_log" in module.params: + connection.set_option("enable_log", module.params["enable_log"]) + else: + connection.set_option("enable_log", False) + fos = FortiOSHandler(connection, module, mkeyname) + versions_check_result = check_schema_versioning( + fos, versioned_schema, "user_external_identity_provider" + ) + + is_error, has_changed, result, diff = fortios_user(module.params, fos) + + else: + module.fail_json(**FAIL_SOCKET_MSG) + + if versions_check_result and versions_check_result["matched"] is False: + module.warn( + "Ansible has detected version mismatch between FortOS system and your playbook, see more details by specifying option -vvv" + ) + + if not is_error: + if versions_check_result and versions_check_result["matched"] is False: + module.exit_json( + changed=has_changed, + version_check_warning=versions_check_result, + meta=result, + diff=diff, + ) + else: + module.exit_json(changed=has_changed, meta=result, diff=diff) + else: + if versions_check_result and versions_check_result["matched"] is False: + module.fail_json( + msg="Error in repo", + version_check_warning=versions_check_result, + meta=result, + ) + else: + module.fail_json(msg="Error in repo", meta=result) + + +if __name__ == "__main__": + main() diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_fortitoken.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_fortitoken.py index 663db1fc2..cf38ef38a 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_fortitoken.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_fortitoken.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -278,9 +278,8 @@ def user_fortitoken(data, fos, check_mode=False): state = data["state"] user_fortitoken_data = data["user_fortitoken"] - filtered_data = underscore_to_hyphen( - filter_user_fortitoken_data(user_fortitoken_data) - ) + filtered_data = filter_user_fortitoken_data(user_fortitoken_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -344,7 +343,7 @@ def user_fortitoken(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("user", "fortitoken", data=filtered_data, vdom=vdom) + return fos.set("user", "fortitoken", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_fsso.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_fsso.py index 34dfe8ba8..0306eede8 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_fsso.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_fsso.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -431,7 +431,8 @@ def user_fsso(data, fos, check_mode=False): state = data["state"] user_fsso_data = data["user_fsso"] - filtered_data = underscore_to_hyphen(filter_user_fsso_data(user_fsso_data)) + filtered_data = filter_user_fsso_data(user_fsso_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -495,7 +496,7 @@ def user_fsso(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("user", "fsso", data=filtered_data, vdom=vdom) + return fos.set("user", "fsso", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("user", "fsso", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_fsso_polling.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_fsso_polling.py index ea0e1d3b3..78b8137d5 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_fsso_polling.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_fsso_polling.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -319,9 +319,8 @@ def user_fsso_polling(data, fos, check_mode=False): state = data["state"] user_fsso_polling_data = data["user_fsso_polling"] - filtered_data = underscore_to_hyphen( - filter_user_fsso_polling_data(user_fsso_polling_data) - ) + filtered_data = filter_user_fsso_polling_data(user_fsso_polling_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -385,7 +384,7 @@ def user_fsso_polling(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("user", "fsso-polling", data=filtered_data, vdom=vdom) + return fos.set("user", "fsso-polling", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("user", "fsso-polling", mkey=filtered_data["id"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_group.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_group.py index 6d57d22e6..fac234854 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_group.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_group.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -210,7 +210,8 @@ options: type: int server_name: description: - - Name of remote auth server. Source user.radius.name user.ldap.name user.tacacs+.name user.saml.name. + - Name of remote auth server. Source user.radius.name user.ldap.name user.tacacs+.name user.saml.name user + .external-identity-provider.name. type: str max_accounts: description: @@ -218,14 +219,14 @@ options: type: int member: description: - - Names of users, peers, LDAP severs, or RADIUS servers to add to the user group. + - Names of users, peers, LDAP severs, RADIUS servers or external idp servers to add to the user group. type: list elements: dict suboptions: name: description: - Group member name. Source user.peer.name user.local.name user.radius.name user.tacacs+.name user.ldap.name user.saml.name user - .adgrp.name user.pop3.name user.certificate.name. + .external-identity-provider.name user.adgrp.name user.pop3.name user.certificate.name. required: true type: str mobile_phone: @@ -328,12 +329,13 @@ EXAMPLES = """ - group_name: "<your_own_value>" id: "26" - server_name: "<your_own_value> (source user.radius.name user.ldap.name user.tacacs+.name user.saml.name)" + server_name: "<your_own_value> (source user.radius.name user.ldap.name user.tacacs+.name user.saml.name user.external-identity-provider + .name)" max_accounts: "0" member: - - name: "default_name_30 (source user.peer.name user.local.name user.radius.name user.tacacs+.name user.ldap.name user.saml.name user.adgrp - .name user.pop3.name user.certificate.name)" + name: "default_name_30 (source user.peer.name user.local.name user.radius.name user.tacacs+.name user.ldap.name user.saml.name user + .external-identity-provider.name user.adgrp.name user.pop3.name user.certificate.name)" mobile_phone: "disable" multiple_guest_add: "disable" name: "default_name_33" @@ -491,7 +493,8 @@ def user_group(data, fos, check_mode=False): state = data["state"] user_group_data = data["user_group"] - filtered_data = underscore_to_hyphen(filter_user_group_data(user_group_data)) + filtered_data = filter_user_group_data(user_group_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -555,7 +558,7 @@ def user_group(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("user", "group", data=filtered_data, vdom=vdom) + return fos.set("user", "group", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("user", "group", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_krb_keytab.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_krb_keytab.py index 0f9a66445..5748a9e19 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_krb_keytab.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_krb_keytab.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -262,9 +262,8 @@ def user_krb_keytab(data, fos, check_mode=False): state = data["state"] user_krb_keytab_data = data["user_krb_keytab"] - filtered_data = underscore_to_hyphen( - filter_user_krb_keytab_data(user_krb_keytab_data) - ) + filtered_data = filter_user_krb_keytab_data(user_krb_keytab_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -328,7 +327,7 @@ def user_krb_keytab(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("user", "krb-keytab", data=filtered_data, vdom=vdom) + return fos.set("user", "krb-keytab", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("user", "krb-keytab", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_ldap.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_ldap.py index bfbf68094..74cf73533 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_ldap.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_ldap.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -556,7 +556,8 @@ def user_ldap(data, fos, check_mode=False): user_ldap_data = data["user_ldap"] user_ldap_data = flatten_multilists_attributes(user_ldap_data) - filtered_data = underscore_to_hyphen(filter_user_ldap_data(user_ldap_data)) + filtered_data = filter_user_ldap_data(user_ldap_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -620,7 +621,7 @@ def user_ldap(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("user", "ldap", data=filtered_data, vdom=vdom) + return fos.set("user", "ldap", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("user", "ldap", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_local.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_local.py index 31bea9b2a..1bb6b3512 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_local.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_local.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -144,6 +144,10 @@ options: description: - IKEv2 Postquantum Preshared Key (ASCII string or hexadecimal encoded with a leading 0x). type: str + qkd_profile: + description: + - Quantum Key Distribution (QKD) profile. Source vpn.qkd.name. + type: str radius_server: description: - Name of RADIUS server with which the user must authenticate. Source user.radius.name. @@ -249,6 +253,7 @@ EXAMPLES = """ passwd_time: "<your_own_value>" ppk_identity: "<your_own_value>" ppk_secret: "<your_own_value>" + qkd_profile: "<your_own_value> (source vpn.qkd.name)" radius_server: "<your_own_value> (source user.radius.name)" sms_custom_server: "<your_own_value> (source system.sms-server.name)" sms_phone: "<your_own_value>" @@ -367,6 +372,7 @@ def filter_user_local_data(json): "passwd_time", "ppk_identity", "ppk_secret", + "qkd_profile", "radius_server", "sms_custom_server", "sms_phone", @@ -406,9 +412,9 @@ def underscore_to_hyphen(data): def valid_attr_to_invalid_attr(data): - specillist = {"tacacs+_server": "tacacs_plus_server"} + speciallist = {"tacacs+_server": "tacacs_plus_server"} - for k, v in specillist.items(): + for k, v in speciallist.items(): if v == data: return k @@ -417,8 +423,11 @@ def valid_attr_to_invalid_attr(data): def valid_attr_to_invalid_attrs(data): if isinstance(data, list): + new_data = [] for elem in data: elem = valid_attr_to_invalid_attrs(elem) + new_data.append(elem) + data = new_data elif isinstance(data, dict): new_data = {} for k, v in data.items(): @@ -434,8 +443,8 @@ def user_local(data, fos, check_mode=False): state = data["state"] user_local_data = data["user_local"] - filtered_data = underscore_to_hyphen(filter_user_local_data(user_local_data)) - converted_data = valid_attr_to_invalid_attrs(filtered_data) + filtered_data = filter_user_local_data(user_local_data) + converted_data = underscore_to_hyphen(valid_attr_to_invalid_attrs(filtered_data)) # check_mode starts from here if check_mode: @@ -601,6 +610,7 @@ versioned_schema = { "auth_concurrent_value": {"v_range": [["v6.0.0", ""]], "type": "integer"}, "ppk_secret": {"v_range": [["v6.0.0", ""]], "type": "string"}, "ppk_identity": {"v_range": [["v6.0.0", ""]], "type": "string"}, + "qkd_profile": {"v_range": [["v7.4.2", ""]], "type": "string"}, "username_sensitivity": { "v_range": [["v7.0.1", ""]], "type": "string", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_nac_policy.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_nac_policy.py index 71476ba49..1aa6178e5 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_nac_policy.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_nac_policy.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -410,9 +410,8 @@ def user_nac_policy(data, fos, check_mode=False): state = data["state"] user_nac_policy_data = data["user_nac_policy"] - filtered_data = underscore_to_hyphen( - filter_user_nac_policy_data(user_nac_policy_data) - ) + filtered_data = filter_user_nac_policy_data(user_nac_policy_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -476,7 +475,7 @@ def user_nac_policy(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("user", "nac-policy", data=filtered_data, vdom=vdom) + return fos.set("user", "nac-policy", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("user", "nac-policy", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_password_policy.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_password_policy.py index f82a0cea2..aa8b21bf8 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_password_policy.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_password_policy.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -302,9 +302,8 @@ def user_password_policy(data, fos, check_mode=False): state = data["state"] user_password_policy_data = data["user_password_policy"] - filtered_data = underscore_to_hyphen( - filter_user_password_policy_data(user_password_policy_data) - ) + filtered_data = filter_user_password_policy_data(user_password_policy_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -368,7 +367,7 @@ def user_password_policy(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("user", "password-policy", data=filtered_data, vdom=vdom) + return fos.set("user", "password-policy", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_peer.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_peer.py index 4ad2e1c6f..f7e7d18ea 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_peer.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_peer.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -148,7 +148,7 @@ options: type: str mfa_server: description: - - Name of a remote authenticator. Performs client access right check. Source user.ldap.name user.radius.name. + - Name of a remote authenticator. Performs client access right check. Source user.radius.name user.ldap.name. type: str mfa_username: description: @@ -197,7 +197,7 @@ EXAMPLES = """ mandatory_ca_verify: "enable" mfa_mode: "none" mfa_password: "<your_own_value>" - mfa_server: "<your_own_value> (source user.ldap.name user.radius.name)" + mfa_server: "<your_own_value> (source user.radius.name user.ldap.name)" mfa_username: "<your_own_value>" name: "default_name_15" ocsp_override_server: "<your_own_value> (source vpn.certificate.ocsp-server.name)" @@ -344,7 +344,8 @@ def user_peer(data, fos, check_mode=False): state = data["state"] user_peer_data = data["user_peer"] - filtered_data = underscore_to_hyphen(filter_user_peer_data(user_peer_data)) + filtered_data = filter_user_peer_data(user_peer_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -408,7 +409,7 @@ def user_peer(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("user", "peer", data=filtered_data, vdom=vdom) + return fos.set("user", "peer", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("user", "peer", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_peergrp.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_peergrp.py index 86cdb6669..8d32879d0 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_peergrp.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_peergrp.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -239,7 +239,8 @@ def user_peergrp(data, fos, check_mode=False): state = data["state"] user_peergrp_data = data["user_peergrp"] - filtered_data = underscore_to_hyphen(filter_user_peergrp_data(user_peergrp_data)) + filtered_data = filter_user_peergrp_data(user_peergrp_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -303,7 +304,7 @@ def user_peergrp(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("user", "peergrp", data=filtered_data, vdom=vdom) + return fos.set("user", "peergrp", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("user", "peergrp", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_pop3.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_pop3.py index 13c13cc9e..d6754ae83 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_pop3.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_pop3.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -256,7 +256,8 @@ def user_pop3(data, fos, check_mode=False): state = data["state"] user_pop3_data = data["user_pop3"] - filtered_data = underscore_to_hyphen(filter_user_pop3_data(user_pop3_data)) + filtered_data = filter_user_pop3_data(user_pop3_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -320,7 +321,7 @@ def user_pop3(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("user", "pop3", data=filtered_data, vdom=vdom) + return fos.set("user", "pop3", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("user", "pop3", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_quarantine.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_quarantine.py index 9c5fdf114..82b8edb38 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_quarantine.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_quarantine.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -271,11 +271,10 @@ def underscore_to_hyphen(data): def user_quarantine(data, fos): vdom = data["vdom"] user_quarantine_data = data["user_quarantine"] - filtered_data = underscore_to_hyphen( - filter_user_quarantine_data(user_quarantine_data) - ) + filtered_data = filter_user_quarantine_data(user_quarantine_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("user", "quarantine", data=filtered_data, vdom=vdom) + return fos.set("user", "quarantine", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_radius.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_radius.py index 3a71e1236..27a243025 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_radius.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_radius.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -501,6 +501,13 @@ options: description: - Switch controller accounting message Framed-IP detection from DHCP snooping (seconds). type: int + switch_controller_nas_ip_dynamic: + description: + - Enable/Disable switch-controller nas-ip dynamic to dynamically set nas-ip. + type: str + choices: + - 'enable' + - 'disable' switch_controller_service_type: description: - RADIUS service type. @@ -633,6 +640,7 @@ EXAMPLES = """ sso_attribute_value_override: "enable" status_ttl: "300" switch_controller_acct_fast_framedip_detect: "2" + switch_controller_nas_ip_dynamic: "enable" switch_controller_service_type: "login" tertiary_secret: "<your_own_value>" tertiary_server: "<your_own_value>" @@ -783,6 +791,7 @@ def filter_user_radius_data(json): "sso_attribute_value_override", "status_ttl", "switch_controller_acct_fast_framedip_detect", + "switch_controller_nas_ip_dynamic", "switch_controller_service_type", "tertiary_secret", "tertiary_server", @@ -853,7 +862,8 @@ def user_radius(data, fos, check_mode=False): user_radius_data = data["user_radius"] user_radius_data = flatten_multilists_attributes(user_radius_data) - filtered_data = underscore_to_hyphen(filter_user_radius_data(user_radius_data)) + filtered_data = filter_user_radius_data(user_radius_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -917,7 +927,7 @@ def user_radius(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("user", "radius", data=filtered_data, vdom=vdom) + return fos.set("user", "radius", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("user", "radius", mkey=filtered_data["name"], vdom=vdom) @@ -977,6 +987,11 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "switch_controller_nas_ip_dynamic": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "nas_ip": {"v_range": [["v6.0.0", ""]], "type": "string"}, "nas_id_type": { "v_range": [["v7.2.4", ""]], diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_saml.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_saml.py index 4faaafc58..8885225b2 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_saml.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_saml.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -389,7 +389,8 @@ def user_saml(data, fos, check_mode=False): state = data["state"] user_saml_data = data["user_saml"] - filtered_data = underscore_to_hyphen(filter_user_saml_data(user_saml_data)) + filtered_data = filter_user_saml_data(user_saml_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -453,7 +454,7 @@ def user_saml(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("user", "saml", data=filtered_data, vdom=vdom) + return fos.set("user", "saml", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("user", "saml", mkey=filtered_data["name"], vdom=vdom) @@ -516,7 +517,6 @@ versioned_schema = { "options": [{"value": "enable"}, {"value": "disable"}], }, "clock_tolerance": {"v_range": [["v7.0.4", ""]], "type": "integer"}, - "auth_url": {"v_range": [["v7.2.1", ""]], "type": "string"}, "adfs_claim": { "v_range": [["v7.0.0", ""]], "type": "string", @@ -579,6 +579,7 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "auth_url": {"v_range": [["v7.2.1", "v7.4.1"]], "type": "string"}, }, "v_range": [["v6.2.0", ""]], } diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_security_exempt_list.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_security_exempt_list.py index eda67784f..927fa3ff5 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_security_exempt_list.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_security_exempt_list.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -300,9 +300,10 @@ def user_security_exempt_list(data, fos, check_mode=False): state = data["state"] user_security_exempt_list_data = data["user_security_exempt_list"] - filtered_data = underscore_to_hyphen( - filter_user_security_exempt_list_data(user_security_exempt_list_data) + filtered_data = filter_user_security_exempt_list_data( + user_security_exempt_list_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -366,7 +367,7 @@ def user_security_exempt_list(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("user", "security-exempt-list", data=filtered_data, vdom=vdom) + return fos.set("user", "security-exempt-list", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_setting.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_setting.py index ea4ade813..a74ef161f 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_setting.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_setting.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -432,9 +432,10 @@ def user_setting(data, fos): vdom = data["vdom"] user_setting_data = data["user_setting"] user_setting_data = flatten_multilists_attributes(user_setting_data) - filtered_data = underscore_to_hyphen(filter_user_setting_data(user_setting_data)) + filtered_data = filter_user_setting_data(user_setting_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("user", "setting", data=filtered_data, vdom=vdom) + return fos.set("user", "setting", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_tacacsplus.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_tacacsplus.py index 6de7dc8e5..591966b9b 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_tacacsplus.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_user_tacacsplus.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -312,9 +312,8 @@ def user_tacacsplus(data, fos, check_mode=False): state = data["state"] user_tacacsplus_data = data["user_tacacsplus"] - filtered_data = underscore_to_hyphen( - filter_user_tacacsplus_data(user_tacacsplus_data) - ) + filtered_data = filter_user_tacacsplus_data(user_tacacsplus_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -378,7 +377,7 @@ def user_tacacsplus(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("user", "tacacs+", data=filtered_data, vdom=vdom) + return fos.set("user", "tacacs+", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("user", "tacacs+", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_videofilter_keyword.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_videofilter_keyword.py new file mode 100644 index 000000000..baf259b04 --- /dev/null +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_videofilter_keyword.py @@ -0,0 +1,438 @@ +#!/usr/bin/python +from __future__ import absolute_import, division, print_function + +# Copyright: (c) 2022 Fortinet +# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +__metaclass__ = type + +ANSIBLE_METADATA = { + "status": ["preview"], + "supported_by": "community", + "metadata_version": "1.1", +} + +DOCUMENTATION = """ +--- +module: fortios_videofilter_keyword +short_description: Configure video filter keywords in Fortinet's FortiOS and FortiGate. +description: + - This module is able to configure a FortiGate or FortiOS (FOS) device by allowing the + user to set and modify videofilter feature and keyword category. + Examples include all parameters and values need to be adjusted to datasources before usage. + Tested with FOS v6.0.0 +version_added: "2.0.0" +author: + - Link Zheng (@chillancezen) + - Jie Xue (@JieX19) + - Hongbin Lu (@fgtdev-hblu) + - Frank Shen (@frankshen01) + - Miguel Angel Munoz (@mamunozgonzalez) + - Nicolas Thomas (@thomnico) +notes: + - We highly recommend using your own value as the id instead of 0, while '0' is a special placeholder that allows the backend to assign the latest + available number for the object, it does have limitations. Please find more details in Q&A. + - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks + +requirements: + - ansible>=2.15 +options: + access_token: + description: + - Token-based authentication. + Generated from GUI of Fortigate. + type: str + required: false + enable_log: + description: + - Enable/Disable logging for task. + type: bool + required: false + default: false + vdom: + description: + - Virtual domain, among those defined previously. A vdom is a + virtual instance of the FortiGate that can be configured and + used as a different unit. + type: str + default: root + member_path: + type: str + description: + - Member attribute path to operate on. + - Delimited by a slash character if there are more than one attribute. + - Parameter marked with member_path is legitimate for doing member operation. + member_state: + type: str + description: + - Add or delete a member under specified attribute path. + - When member_state is specified, the state option is ignored. + choices: + - 'present' + - 'absent' + + state: + description: + - Indicates whether to create or remove the object. + type: str + required: true + choices: + - 'present' + - 'absent' + videofilter_keyword: + description: + - Configure video filter keywords. + default: null + type: dict + suboptions: + comment: + description: + - Comment. + type: str + id: + description: + - ID. see <a href='#notes'>Notes</a>. + required: true + type: int + match: + description: + - Keyword matching logic. + type: str + choices: + - 'or' + - 'and' + name: + description: + - Name. + type: str + word: + description: + - List of keywords. + type: list + elements: dict + suboptions: + comment: + description: + - Comment. + type: str + name: + description: + - Name. + required: true + type: str + pattern_type: + description: + - Pattern type. + type: str + choices: + - 'wildcard' + - 'regex' + status: + description: + - Enable(consider)/disable(ignore) this keyword. + type: str + choices: + - 'enable' + - 'disable' +""" + +EXAMPLES = """ +- name: Configure video filter keywords. + fortinet.fortios.fortios_videofilter_keyword: + vdom: "{{ vdom }}" + state: "present" + access_token: "<your_own_value>" + videofilter_keyword: + comment: "Comment." + id: "4" + match: "or" + name: "default_name_6" + word: + - + comment: "Comment." + name: "default_name_9" + pattern_type: "wildcard" + status: "enable" +""" + +RETURN = """ +build: + description: Build number of the fortigate image + returned: always + type: str + sample: '1547' +http_method: + description: Last method used to provision the content into FortiGate + returned: always + type: str + sample: 'PUT' +http_status: + description: Last result given by FortiGate on last operation applied + returned: always + type: str + sample: "200" +mkey: + description: Master key (id) used in the last call to FortiGate + returned: success + type: str + sample: "id" +name: + description: Name of the table used to fulfill the request + returned: always + type: str + sample: "urlfilter" +path: + description: Path of the table used to fulfill the request + returned: always + type: str + sample: "webfilter" +revision: + description: Internal revision number + returned: always + type: str + sample: "17.0.2.10658" +serial: + description: Serial number of the unit + returned: always + type: str + sample: "FGVMEVYYQT3AB5352" +status: + description: Indication of the operation's result + returned: always + type: str + sample: "success" +vdom: + description: Virtual domain used + returned: always + type: str + sample: "root" +version: + description: Version of the FortiGate + returned: always + type: str + sample: "v5.6.3" +""" +from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.connection import Connection +from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.fortios import ( + FortiOSHandler, +) +from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.fortios import ( + check_legacy_fortiosapi, +) +from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.fortios import ( + schema_to_module_spec, +) +from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.fortios import ( + check_schema_versioning, +) +from ansible_collections.fortinet.fortios.plugins.module_utils.fortimanager.common import ( + FAIL_SOCKET_MSG, +) +from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.data_post_processor import ( + remove_invalid_fields, +) + + +def filter_videofilter_keyword_data(json): + option_list = ["comment", "id", "match", "name", "word"] + + json = remove_invalid_fields(json) + dictionary = {} + + for attribute in option_list: + if attribute in json and json[attribute] is not None: + dictionary[attribute] = json[attribute] + + return dictionary + + +def underscore_to_hyphen(data): + if isinstance(data, list): + for i, elem in enumerate(data): + data[i] = underscore_to_hyphen(elem) + elif isinstance(data, dict): + new_data = {} + for k, v in data.items(): + new_data[k.replace("_", "-")] = underscore_to_hyphen(v) + data = new_data + + return data + + +def videofilter_keyword(data, fos): + vdom = data["vdom"] + + state = data["state"] + + videofilter_keyword_data = data["videofilter_keyword"] + filtered_data = filter_videofilter_keyword_data(videofilter_keyword_data) + converted_data = underscore_to_hyphen(filtered_data) + + if state == "present" or state is True: + return fos.set("videofilter", "keyword", data=converted_data, vdom=vdom) + + elif state == "absent": + return fos.delete("videofilter", "keyword", mkey=filtered_data["id"], vdom=vdom) + else: + fos._module.fail_json(msg="state must be present or absent!") + + +def is_successful_status(resp): + return ( + "status" in resp + and resp["status"] == "success" + or "http_status" in resp + and resp["http_status"] == 200 + or "http_method" in resp + and resp["http_method"] == "DELETE" + and resp["http_status"] == 404 + ) + + +def fortios_videofilter(data, fos): + fos.do_member_operation("videofilter", "keyword") + if data["videofilter_keyword"]: + resp = videofilter_keyword(data, fos) + else: + fos._module.fail_json(msg="missing task body: %s" % ("videofilter_keyword")) + + return ( + not is_successful_status(resp), + is_successful_status(resp) + and (resp["revision_changed"] if "revision_changed" in resp else True), + resp, + {}, + ) + + +versioned_schema = { + "type": "list", + "elements": "dict", + "children": { + "id": {"v_range": [["v7.4.2", ""]], "type": "integer", "required": True}, + "name": {"v_range": [["v7.4.2", ""]], "type": "string"}, + "comment": {"v_range": [["v7.4.2", ""]], "type": "string"}, + "match": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "or"}, {"value": "and"}], + }, + "word": { + "type": "list", + "elements": "dict", + "children": { + "name": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "required": True, + }, + "comment": {"v_range": [["v7.4.2", ""]], "type": "string"}, + "pattern_type": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "wildcard"}, {"value": "regex"}], + }, + "status": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + }, + "v_range": [["v7.4.2", ""]], + }, + }, + "v_range": [["v7.4.2", ""]], +} + + +def main(): + module_spec = schema_to_module_spec(versioned_schema) + mkeyname = "id" + fields = { + "access_token": {"required": False, "type": "str", "no_log": True}, + "enable_log": {"required": False, "type": "bool", "default": False}, + "vdom": {"required": False, "type": "str", "default": "root"}, + "member_path": {"required": False, "type": "str"}, + "member_state": { + "type": "str", + "required": False, + "choices": ["present", "absent"], + }, + "state": {"required": True, "type": "str", "choices": ["present", "absent"]}, + "videofilter_keyword": { + "required": False, + "type": "dict", + "default": None, + "no_log": True, + "options": {}, + }, + } + for attribute_name in module_spec["options"]: + fields["videofilter_keyword"]["options"][attribute_name] = module_spec[ + "options" + ][attribute_name] + if mkeyname and mkeyname == attribute_name: + fields["videofilter_keyword"]["options"][attribute_name]["required"] = True + + module = AnsibleModule(argument_spec=fields, supports_check_mode=False) + check_legacy_fortiosapi(module) + + is_error = False + has_changed = False + result = None + diff = None + + versions_check_result = None + if module._socket_path: + connection = Connection(module._socket_path) + if "access_token" in module.params: + connection.set_option("access_token", module.params["access_token"]) + + if "enable_log" in module.params: + connection.set_option("enable_log", module.params["enable_log"]) + else: + connection.set_option("enable_log", False) + fos = FortiOSHandler(connection, module, mkeyname) + versions_check_result = check_schema_versioning( + fos, versioned_schema, "videofilter_keyword" + ) + + is_error, has_changed, result, diff = fortios_videofilter(module.params, fos) + + else: + module.fail_json(**FAIL_SOCKET_MSG) + + if versions_check_result and versions_check_result["matched"] is False: + module.warn( + "Ansible has detected version mismatch between FortOS system and your playbook, see more details by specifying option -vvv" + ) + + if not is_error: + if versions_check_result and versions_check_result["matched"] is False: + module.exit_json( + changed=has_changed, + version_check_warning=versions_check_result, + meta=result, + diff=diff, + ) + else: + module.exit_json(changed=has_changed, meta=result, diff=diff) + else: + if versions_check_result and versions_check_result["matched"] is False: + module.fail_json( + msg="Error in repo", + version_check_warning=versions_check_result, + meta=result, + ) + else: + module.fail_json(msg="Error in repo", meta=result) + + +if __name__ == "__main__": + main() diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_videofilter_profile.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_videofilter_profile.py index 9a2045843..060192a9f 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_videofilter_profile.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_videofilter_profile.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -107,6 +107,57 @@ options: - 'allow' - 'monitor' - 'block' + filters: + description: + - YouTube filter entries. + type: list + elements: dict + suboptions: + action: + description: + - Video filter action. + type: str + choices: + - 'allow' + - 'monitor' + - 'block' + category: + description: + - FortiGuard category ID. + type: str + channel: + description: + - Channel ID. + type: str + comment: + description: + - Comment. + type: str + id: + description: + - ID. see <a href='#notes'>Notes</a>. + required: true + type: int + keyword: + description: + - Video filter keyword ID. Source videofilter.keyword.id. + type: int + log: + description: + - Enable/disable logging. + type: str + choices: + - 'enable' + - 'disable' + type: + description: + - Filter type. + type: str + choices: + - 'category' + - 'channel' + - 'title' + - 'description' fortiguard_category: description: - Configure FortiGuard categories. @@ -201,15 +252,25 @@ EXAMPLES = """ comment: "Comment." dailymotion: "enable" default_action: "allow" + filters: + - + action: "allow" + category: "<your_own_value>" + channel: "<your_own_value>" + comment: "Comment." + id: "11" + keyword: "0" + log: "enable" + type: "category" fortiguard_category: filters: - action: "allow" category_id: "0" - id: "10" + id: "19" log: "enable" log: "enable" - name: "default_name_13" + name: "default_name_22" replacemsg_group: "<your_own_value> (source system.replacemsg-group.name)" vimeo: "enable" vimeo_restrict: "<your_own_value>" @@ -302,6 +363,7 @@ def filter_videofilter_profile_data(json): "comment", "dailymotion", "default_action", + "filters", "fortiguard_category", "log", "name", @@ -342,12 +404,11 @@ def videofilter_profile(data, fos): state = data["state"] videofilter_profile_data = data["videofilter_profile"] - filtered_data = underscore_to_hyphen( - filter_videofilter_profile_data(videofilter_profile_data) - ) + filtered_data = filter_videofilter_profile_data(videofilter_profile_data) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: - return fos.set("videofilter", "profile", data=filtered_data, vdom=vdom) + return fos.set("videofilter", "profile", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( @@ -391,19 +452,78 @@ versioned_schema = { "children": { "name": {"v_range": [["v7.0.0", ""]], "type": "string", "required": True}, "comment": {"v_range": [["v7.0.0", ""]], "type": "string"}, + "filters": { + "type": "list", + "elements": "dict", + "children": { + "id": { + "v_range": [["v7.4.2", ""]], + "type": "integer", + "required": True, + }, + "comment": {"v_range": [["v7.4.2", ""]], "type": "string"}, + "type": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [ + {"value": "category"}, + {"value": "channel"}, + {"value": "title"}, + {"value": "description"}, + ], + }, + "keyword": {"v_range": [["v7.4.2", ""]], "type": "integer"}, + "category": {"v_range": [["v7.4.2", ""]], "type": "string"}, + "channel": {"v_range": [["v7.4.2", ""]], "type": "string"}, + "action": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [ + {"value": "allow"}, + {"value": "monitor"}, + {"value": "block"}, + ], + }, + "log": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + }, + "v_range": [["v7.4.2", ""]], + }, + "youtube": { + "v_range": [["v7.0.0", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "vimeo": { + "v_range": [["v7.0.0", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "dailymotion": { + "v_range": [["v7.0.0", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "replacemsg_group": {"v_range": [["v7.0.1", ""]], "type": "string"}, "default_action": { - "v_range": [["v7.4.0", ""]], + "v_range": [["v7.4.0", "v7.4.1"]], "type": "string", "options": [{"value": "allow"}, {"value": "monitor"}, {"value": "block"}], }, "log": { - "v_range": [["v7.4.0", ""]], + "v_range": [["v7.4.0", "v7.4.1"]], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, - "youtube_channel_filter": {"v_range": [["v7.0.0", ""]], "type": "integer"}, + "youtube_channel_filter": { + "v_range": [["v7.0.0", "v7.4.1"]], + "type": "integer", + }, "fortiguard_category": { - "v_range": [["v7.0.0", ""]], + "v_range": [["v7.0.0", "v7.4.1"]], "type": "dict", "children": { "filters": { @@ -411,47 +531,34 @@ versioned_schema = { "elements": "dict", "children": { "id": { - "v_range": [["v7.0.0", ""]], + "v_range": [["v7.0.0", "v7.4.1"]], "type": "integer", "required": True, }, "action": { - "v_range": [["v7.0.0", ""]], + "v_range": [["v7.0.0", "v7.4.1"]], "type": "string", "options": [ - {"value": "allow", "v_range": [["v7.0.1", ""]]}, + {"value": "allow", "v_range": [["v7.0.1", "v7.4.1"]]}, {"value": "monitor"}, {"value": "block"}, {"value": "bypass", "v_range": [["v7.0.0", "v7.0.0"]]}, ], }, - "category_id": {"v_range": [["v7.0.0", ""]], "type": "integer"}, + "category_id": { + "v_range": [["v7.0.0", "v7.4.1"]], + "type": "integer", + }, "log": { - "v_range": [["v7.0.0", ""]], + "v_range": [["v7.0.0", "v7.4.1"]], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, }, - "v_range": [["v7.0.0", ""]], + "v_range": [["v7.0.0", "v7.4.1"]], } }, }, - "youtube": { - "v_range": [["v7.0.0", ""]], - "type": "string", - "options": [{"value": "enable"}, {"value": "disable"}], - }, - "vimeo": { - "v_range": [["v7.0.0", ""]], - "type": "string", - "options": [{"value": "enable"}, {"value": "disable"}], - }, - "dailymotion": { - "v_range": [["v7.0.0", ""]], - "type": "string", - "options": [{"value": "enable"}, {"value": "disable"}], - }, - "replacemsg_group": {"v_range": [["v7.0.1", ""]], "type": "string"}, "youtube_restrict": { "v_range": [["v7.0.0", "v7.0.0"]], "type": "string", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_videofilter_youtube_channel_filter.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_videofilter_youtube_channel_filter.py index 001f30569..a5b431283 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_videofilter_youtube_channel_filter.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_videofilter_youtube_channel_filter.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -295,15 +295,14 @@ def videofilter_youtube_channel_filter(data, fos): state = data["state"] videofilter_youtube_channel_filter_data = data["videofilter_youtube_channel_filter"] - filtered_data = underscore_to_hyphen( - filter_videofilter_youtube_channel_filter_data( - videofilter_youtube_channel_filter_data - ) + filtered_data = filter_videofilter_youtube_channel_filter_data( + videofilter_youtube_channel_filter_data ) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: return fos.set( - "videofilter", "youtube-channel-filter", data=filtered_data, vdom=vdom + "videofilter", "youtube-channel-filter", data=converted_data, vdom=vdom ) elif state == "absent": @@ -348,35 +347,35 @@ versioned_schema = { "type": "list", "elements": "dict", "children": { - "id": {"v_range": [["v7.0.0", ""]], "type": "integer", "required": True}, - "name": {"v_range": [["v7.0.0", ""]], "type": "string"}, - "comment": {"v_range": [["v7.0.0", ""]], "type": "string"}, + "id": {"v_range": [["v7.0.0", "v7.4.1"]], "type": "integer", "required": True}, + "name": {"v_range": [["v7.0.0", "v7.4.1"]], "type": "string"}, + "comment": {"v_range": [["v7.0.0", "v7.4.1"]], "type": "string"}, "entries": { "type": "list", "elements": "dict", "children": { "id": { - "v_range": [["v7.0.0", ""]], + "v_range": [["v7.0.0", "v7.4.1"]], "type": "integer", "required": True, }, - "comment": {"v_range": [["v7.0.0", ""]], "type": "string"}, + "comment": {"v_range": [["v7.0.0", "v7.4.1"]], "type": "string"}, "action": { - "v_range": [["v7.0.0", ""]], + "v_range": [["v7.0.0", "v7.4.1"]], "type": "string", "options": [ - {"value": "allow", "v_range": [["v7.0.1", ""]]}, + {"value": "allow", "v_range": [["v7.0.1", "v7.4.1"]]}, {"value": "monitor"}, {"value": "block"}, {"value": "bypass", "v_range": [["v7.0.0", "v7.0.0"]]}, ], }, - "channel_id": {"v_range": [["v7.0.0", ""]], "type": "string"}, + "channel_id": {"v_range": [["v7.0.0", "v7.4.1"]], "type": "string"}, }, - "v_range": [["v7.0.0", ""]], + "v_range": [["v7.0.0", "v7.4.1"]], }, "log": { - "v_range": [["v7.0.1", ""]], + "v_range": [["v7.0.1", "v7.4.1"]], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, @@ -391,7 +390,7 @@ versioned_schema = { "options": [{"value": "enable"}, {"value": "disable"}], }, }, - "v_range": [["v7.0.0", ""]], + "v_range": [["v7.0.0", "v7.4.1"]], } diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_videofilter_youtube_key.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_videofilter_youtube_key.py index 7bcb5fb9b..ecca684e2 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_videofilter_youtube_key.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_videofilter_youtube_key.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -231,12 +231,11 @@ def videofilter_youtube_key(data, fos): state = data["state"] videofilter_youtube_key_data = data["videofilter_youtube_key"] - filtered_data = underscore_to_hyphen( - filter_videofilter_youtube_key_data(videofilter_youtube_key_data) - ) + filtered_data = filter_videofilter_youtube_key_data(videofilter_youtube_key_data) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: - return fos.set("videofilter", "youtube-key", data=filtered_data, vdom=vdom) + return fos.set("videofilter", "youtube-key", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_virtual_patch_profile.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_virtual_patch_profile.py index e9ab742ff..906113b27 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_virtual_patch_profile.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_virtual_patch_profile.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -330,12 +330,11 @@ def virtual_patch_profile(data, fos): virtual_patch_profile_data = flatten_multilists_attributes( virtual_patch_profile_data ) - filtered_data = underscore_to_hyphen( - filter_virtual_patch_profile_data(virtual_patch_profile_data) - ) + filtered_data = filter_virtual_patch_profile_data(virtual_patch_profile_data) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: - return fos.set("virtual-patch", "profile", data=filtered_data, vdom=vdom) + return fos.set("virtual-patch", "profile", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_voip_profile.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_voip_profile.py index 6f7518b89..033ec52d6 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_voip_profile.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_voip_profile.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -1228,7 +1228,8 @@ def voip_profile(data, fos, check_mode=False): state = data["state"] voip_profile_data = data["voip_profile"] - filtered_data = underscore_to_hyphen(filter_voip_profile_data(voip_profile_data)) + filtered_data = filter_voip_profile_data(voip_profile_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -1292,7 +1293,7 @@ def voip_profile(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("voip", "profile", data=filtered_data, vdom=vdom) + return fos.set("voip", "profile", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("voip", "profile", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_certificate_ca.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_certificate_ca.py index fd238b959..62873f839 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_certificate_ca.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_certificate_ca.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -321,9 +321,8 @@ def vpn_certificate_ca(data, fos, check_mode=False): state = data["state"] vpn_certificate_ca_data = data["vpn_certificate_ca"] - filtered_data = underscore_to_hyphen( - filter_vpn_certificate_ca_data(vpn_certificate_ca_data) - ) + filtered_data = filter_vpn_certificate_ca_data(vpn_certificate_ca_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -387,7 +386,7 @@ def vpn_certificate_ca(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("vpn.certificate", "ca", data=filtered_data, vdom=vdom) + return fos.set("vpn.certificate", "ca", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_certificate_crl.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_certificate_crl.py index b93af58a3..4d37bf73c 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_certificate_crl.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_certificate_crl.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -312,9 +312,8 @@ def vpn_certificate_crl(data, fos, check_mode=False): state = data["state"] vpn_certificate_crl_data = data["vpn_certificate_crl"] - filtered_data = underscore_to_hyphen( - filter_vpn_certificate_crl_data(vpn_certificate_crl_data) - ) + filtered_data = filter_vpn_certificate_crl_data(vpn_certificate_crl_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -378,7 +377,7 @@ def vpn_certificate_crl(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("vpn.certificate", "crl", data=filtered_data, vdom=vdom) + return fos.set("vpn.certificate", "crl", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_certificate_local.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_certificate_local.py index 77b07c0f6..ae1078f96 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_certificate_local.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_certificate_local.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -475,9 +475,8 @@ def vpn_certificate_local(data, fos, check_mode=False): state = data["state"] vpn_certificate_local_data = data["vpn_certificate_local"] - filtered_data = underscore_to_hyphen( - filter_vpn_certificate_local_data(vpn_certificate_local_data) - ) + filtered_data = filter_vpn_certificate_local_data(vpn_certificate_local_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -541,7 +540,7 @@ def vpn_certificate_local(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("vpn.certificate", "local", data=filtered_data, vdom=vdom) + return fos.set("vpn.certificate", "local", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_certificate_ocsp_server.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_certificate_ocsp_server.py index 3a4e4aa4e..cea0f184a 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_certificate_ocsp_server.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_certificate_ocsp_server.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -266,9 +266,10 @@ def vpn_certificate_ocsp_server(data, fos, check_mode=False): state = data["state"] vpn_certificate_ocsp_server_data = data["vpn_certificate_ocsp_server"] - filtered_data = underscore_to_hyphen( - filter_vpn_certificate_ocsp_server_data(vpn_certificate_ocsp_server_data) + filtered_data = filter_vpn_certificate_ocsp_server_data( + vpn_certificate_ocsp_server_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -332,7 +333,7 @@ def vpn_certificate_ocsp_server(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("vpn.certificate", "ocsp-server", data=filtered_data, vdom=vdom) + return fos.set("vpn.certificate", "ocsp-server", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_certificate_remote.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_certificate_remote.py index 7eca5151f..da8adbbda 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_certificate_remote.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_certificate_remote.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -247,9 +247,8 @@ def vpn_certificate_remote(data, fos, check_mode=False): state = data["state"] vpn_certificate_remote_data = data["vpn_certificate_remote"] - filtered_data = underscore_to_hyphen( - filter_vpn_certificate_remote_data(vpn_certificate_remote_data) - ) + filtered_data = filter_vpn_certificate_remote_data(vpn_certificate_remote_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -313,7 +312,7 @@ def vpn_certificate_remote(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("vpn.certificate", "remote", data=filtered_data, vdom=vdom) + return fos.set("vpn.certificate", "remote", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_certificate_setting.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_certificate_setting.py index 442ab0579..13b5828b2 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_certificate_setting.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_certificate_setting.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -222,6 +222,7 @@ options: type: str choices: - 'enable' + - 'mandatory' - 'disable' proxy: description: @@ -493,11 +494,10 @@ def underscore_to_hyphen(data): def vpn_certificate_setting(data, fos): vdom = data["vdom"] vpn_certificate_setting_data = data["vpn_certificate_setting"] - filtered_data = underscore_to_hyphen( - filter_vpn_certificate_setting_data(vpn_certificate_setting_data) - ) + filtered_data = filter_vpn_certificate_setting_data(vpn_certificate_setting_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("vpn.certificate", "setting", data=filtered_data, vdom=vdom) + return fos.set("vpn.certificate", "setting", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -535,7 +535,11 @@ versioned_schema = { "ocsp_status": { "v_range": [["v6.0.0", ""]], "type": "string", - "options": [{"value": "enable"}, {"value": "disable"}], + "options": [ + {"value": "enable"}, + {"value": "mandatory", "v_range": [["v7.4.2", ""]]}, + {"value": "disable"}, + ], }, "ocsp_option": { "v_range": [["v6.2.0", ""]], diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ike_gateway.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ike_gateway.py index 46fef021d..463129618 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ike_gateway.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ike_gateway.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -200,9 +200,9 @@ def underscore_to_hyphen(data): def valid_attr_to_invalid_attr(data): - specillist = {"<name>": "name"} + speciallist = {"<name>": "name"} - for k, v in specillist.items(): + for k, v in speciallist.items(): if v == data: return k @@ -211,8 +211,11 @@ def valid_attr_to_invalid_attr(data): def valid_attr_to_invalid_attrs(data): if isinstance(data, list): + new_data = [] for elem in data: elem = valid_attr_to_invalid_attrs(elem) + new_data.append(elem) + data = new_data elif isinstance(data, dict): new_data = {} for k, v in data.items(): @@ -225,10 +228,8 @@ def valid_attr_to_invalid_attrs(data): def vpn_ike_gateway(data, fos): vdom = data["vdom"] vpn_ike_gateway_data = data["vpn_ike_gateway"] - filtered_data = underscore_to_hyphen( - filter_vpn_ike_gateway_data(vpn_ike_gateway_data) - ) - converted_data = valid_attr_to_invalid_attrs(filtered_data) + filtered_data = filter_vpn_ike_gateway_data(vpn_ike_gateway_data) + converted_data = underscore_to_hyphen(valid_attr_to_invalid_attrs(filtered_data)) return fos.set("vpn.ike", "gateway", data=converted_data, vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ipsec_concentrator.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ipsec_concentrator.py index 7dc1806e5..a28bf6264 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ipsec_concentrator.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ipsec_concentrator.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -254,9 +254,8 @@ def vpn_ipsec_concentrator(data, fos, check_mode=False): state = data["state"] vpn_ipsec_concentrator_data = data["vpn_ipsec_concentrator"] - filtered_data = underscore_to_hyphen( - filter_vpn_ipsec_concentrator_data(vpn_ipsec_concentrator_data) - ) + filtered_data = filter_vpn_ipsec_concentrator_data(vpn_ipsec_concentrator_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -320,7 +319,7 @@ def vpn_ipsec_concentrator(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("vpn.ipsec", "concentrator", data=filtered_data, vdom=vdom) + return fos.set("vpn.ipsec", "concentrator", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ipsec_fec.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ipsec_fec.py index 9f5bbf963..8125559f7 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ipsec_fec.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ipsec_fec.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -265,10 +265,11 @@ def vpn_ipsec_fec(data, fos): state = data["state"] vpn_ipsec_fec_data = data["vpn_ipsec_fec"] - filtered_data = underscore_to_hyphen(filter_vpn_ipsec_fec_data(vpn_ipsec_fec_data)) + filtered_data = filter_vpn_ipsec_fec_data(vpn_ipsec_fec_data) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: - return fos.set("vpn.ipsec", "fec", data=filtered_data, vdom=vdom) + return fos.set("vpn.ipsec", "fec", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("vpn.ipsec", "fec", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ipsec_forticlient.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ipsec_forticlient.py index c2f48ca56..4efe25dcf 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ipsec_forticlient.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ipsec_forticlient.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -244,9 +244,8 @@ def vpn_ipsec_forticlient(data, fos, check_mode=False): state = data["state"] vpn_ipsec_forticlient_data = data["vpn_ipsec_forticlient"] - filtered_data = underscore_to_hyphen( - filter_vpn_ipsec_forticlient_data(vpn_ipsec_forticlient_data) - ) + filtered_data = filter_vpn_ipsec_forticlient_data(vpn_ipsec_forticlient_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -310,7 +309,7 @@ def vpn_ipsec_forticlient(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("vpn.ipsec", "forticlient", data=filtered_data, vdom=vdom) + return fos.set("vpn.ipsec", "forticlient", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ipsec_manualkey.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ipsec_manualkey.py index 07fdbaa7c..e9ab5d1f7 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ipsec_manualkey.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ipsec_manualkey.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -308,9 +308,8 @@ def vpn_ipsec_manualkey(data, fos, check_mode=False): state = data["state"] vpn_ipsec_manualkey_data = data["vpn_ipsec_manualkey"] - filtered_data = underscore_to_hyphen( - filter_vpn_ipsec_manualkey_data(vpn_ipsec_manualkey_data) - ) + filtered_data = filter_vpn_ipsec_manualkey_data(vpn_ipsec_manualkey_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -374,7 +373,7 @@ def vpn_ipsec_manualkey(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("vpn.ipsec", "manualkey", data=filtered_data, vdom=vdom) + return fos.set("vpn.ipsec", "manualkey", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ipsec_manualkey_interface.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ipsec_manualkey_interface.py index 84a219127..f69b93c6a 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ipsec_manualkey_interface.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ipsec_manualkey_interface.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -338,9 +338,10 @@ def vpn_ipsec_manualkey_interface(data, fos, check_mode=False): state = data["state"] vpn_ipsec_manualkey_interface_data = data["vpn_ipsec_manualkey_interface"] - filtered_data = underscore_to_hyphen( - filter_vpn_ipsec_manualkey_interface_data(vpn_ipsec_manualkey_interface_data) + filtered_data = filter_vpn_ipsec_manualkey_interface_data( + vpn_ipsec_manualkey_interface_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -407,7 +408,7 @@ def vpn_ipsec_manualkey_interface(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "vpn.ipsec", "manualkey-interface", data=filtered_data, vdom=vdom + "vpn.ipsec", "manualkey-interface", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ipsec_phase1.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ipsec_phase1.py index 712fbf000..248854fbb 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ipsec_phase1.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ipsec_phase1.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -158,6 +158,13 @@ options: choices: - 'enable' - 'disable' + azure_ad_autoconnect: + description: + - Enable/disable Azure AD Auto-Connect for FortiClient. + type: str + choices: + - 'enable' + - 'disable' backup_gateway: description: - Instruct unity clients about the backup gateway address(es). @@ -180,6 +187,13 @@ options: choices: - 'enable' - 'disable' + cert_trust_store: + description: + - CA certificate trust store. + type: str + choices: + - 'local' + - 'ems' certificate: description: - Names of up to 4 signed personal certificates. @@ -216,6 +230,17 @@ options: description: - Comment. type: str + dev_id: + description: + - Device ID carried by the device ID notification. + type: str + dev_id_notification: + description: + - Enable/disable device ID notification. + type: str + choices: + - 'disable' + - 'enable' dhcp_ra_giaddr: description: - Relay agent gateway IP address to use in the giaddr field of DHCP requests. @@ -292,6 +317,13 @@ options: choices: - 'enable' - 'disable' + eap_cert_auth: + description: + - Enable/disable peer certificate authentication in addition to EAP if peer is a FortiClient endpoint. + type: str + choices: + - 'enable' + - 'disable' eap_exclude_peergrp: description: - Peer group excluded from EAP authentication. Source user.peergrp.name. @@ -303,6 +335,13 @@ options: choices: - 'use-id-payload' - 'send-request' + ems_sn_check: + description: + - Enable/disable verification of EMS serial number. + type: str + choices: + - 'enable' + - 'disable' enforce_unique_id: description: - Enable/disable peer ID uniqueness check. @@ -319,6 +358,17 @@ options: - 'require' - 'allow' - 'disable' + exchange_fgt_device_id: + description: + - Enable/disable device identifier exchange with peer FortiGate units for use of VPN monitor data by FortiManager. + type: str + choices: + - 'enable' + - 'disable' + fallback_tcp_threshold: + description: + - Timeout in seconds before falling back IKE/IPsec traffic to tcp. + type: int fec_base: description: - Number of base Forward Error Correction packets (1 - 20). @@ -350,7 +400,7 @@ options: - 'disable' fec_mapping_profile: description: - - Forward Error Correction (FEC) mapping profile. + - Forward Error Correction (FEC) mapping profile. Source vpn.ipsec.fec.name. type: str fec_receive_timeout: description: @@ -378,6 +428,13 @@ options: choices: - 'enable' - 'disable' + fortinet_esp: + description: + - Enable/disable Fortinet ESP encapsulaton. + type: str + choices: + - 'enable' + - 'disable' fragmentation: description: - Enable/disable fragment IKE message on re-transmission. @@ -584,6 +641,14 @@ options: description: - Time to wait in seconds before phase 1 encryption key expires. type: int + kms: + description: + - Key Management Services server. Source vpn.kmip-server.name. + type: str + link_cost: + description: + - VPN tunnel underlay link cost. + type: int local_gw: description: - Local VPN gateway. @@ -787,6 +852,18 @@ options: description: - Pre-shared secret for remote side PSK authentication (ASCII string or hexadecimal encoded with a leading 0x). type: str + qkd: + description: + - Enable/disable use of Quantum Key Distribution (QKD) server. + type: str + choices: + - 'disable' + - 'allow' + - 'require' + qkd_profile: + description: + - Quantum Key Distribution (QKD) server profile. Source vpn.qkd.name. + type: str reauth: description: - Enable/disable re-authentication upon IKE SA lifetime expiration. @@ -859,6 +936,14 @@ options: - 'disable' - 'suite-b-gcm-128' - 'suite-b-gcm-256' + transport: + description: + - Set IKE transport protocol. + type: str + choices: + - 'udp' + - 'udp-fallback-tcp' + - 'tcp' type: description: - Remote gateway type. @@ -926,18 +1011,22 @@ EXAMPLES = """ authusr: "<your_own_value>" authusrgrp: "<your_own_value> (source user.group.name)" auto_negotiate: "enable" + azure_ad_autoconnect: "enable" backup_gateway: - address: "<your_own_value>" banner: "<your_own_value>" cert_id_validation: "enable" + cert_trust_store: "local" certificate: - - name: "default_name_19 (source vpn.certificate.local.name)" + name: "default_name_21 (source vpn.certificate.local.name)" childless_ike: "enable" client_auto_negotiate: "disable" client_keep_alive: "disable" comments: "<your_own_value>" + dev_id: "<your_own_value>" + dev_id_notification: "disable" dhcp_ra_giaddr: "<your_own_value>" dhcp6_ra_linkaddr: "<your_own_value>" dhgrp: "1" @@ -949,21 +1038,26 @@ EXAMPLES = """ dpd_retrycount: "3" dpd_retryinterval: "<your_own_value>" eap: "enable" + eap_cert_auth: "enable" eap_exclude_peergrp: "<your_own_value> (source user.peergrp.name)" eap_identity: "use-id-payload" + ems_sn_check: "enable" enforce_unique_id: "disable" esn: "require" + exchange_fgt_device_id: "enable" + fallback_tcp_threshold: "15" fec_base: "10" fec_codec: "rs" fec_egress: "enable" fec_health_check: "<your_own_value> (source system.sdwan.health-check.name)" fec_ingress: "enable" - fec_mapping_profile: "<your_own_value>" + fec_mapping_profile: "<your_own_value> (source vpn.ipsec.fec.name)" fec_receive_timeout: "50" fec_redundant: "1" fec_send_timeout: "5" fgsp_sync: "enable" forticlient_enforcement: "enable" + fortinet_esp: "enable" fragmentation: "enable" fragmentation_mtu: "1200" group_authentication: "enable" @@ -986,7 +1080,7 @@ EXAMPLES = """ ipv4_exclude_range: - end_ip: "<your_own_value>" - id: "70" + id: "79" start_ip: "<your_own_value>" ipv4_name: "<your_own_value> (source firewall.address.name firewall.addrgrp.name)" ipv4_netmask: "<your_own_value>" @@ -1002,7 +1096,7 @@ EXAMPLES = """ ipv6_exclude_range: - end_ip: "<your_own_value>" - id: "85" + id: "94" start_ip: "<your_own_value>" ipv6_name: "<your_own_value> (source firewall.address6.name firewall.addrgrp6.name)" ipv6_prefix: "128" @@ -1011,6 +1105,8 @@ EXAMPLES = """ ipv6_start_ip: "<your_own_value>" keepalive: "10" keylife: "86400" + kms: "<your_own_value> (source vpn.kmip-server.name)" + link_cost: "0" local_gw: "<your_own_value>" localid: "<your_own_value>" localid_type: "auto" @@ -1019,7 +1115,7 @@ EXAMPLES = """ mode: "aggressive" mode_cfg: "disable" mode_cfg_allow_client_selector: "disable" - name: "default_name_102" + name: "default_name_113" nattraversal: "enable" negotiate_timeout: "30" network_id: "0" @@ -1036,6 +1132,8 @@ EXAMPLES = """ proposal: "des-md5" psksecret: "<your_own_value>" psksecret_remote: "<your_own_value>" + qkd: "disable" + qkd_profile: "<your_own_value> (source vpn.qkd.name)" reauth: "disable" rekey: "enable" remote_gw: "<your_own_value>" @@ -1047,6 +1145,7 @@ EXAMPLES = """ signature_hash_alg: "sha1" split_include_service: "<your_own_value> (source firewall.service.group.name firewall.service.custom.name)" suite_b: "disable" + transport: "udp" type: "static" unity_support: "disable" usrgrp: "<your_own_value> (source user.group.name)" @@ -1155,14 +1254,18 @@ def filter_vpn_ipsec_phase1_data(json): "authusr", "authusrgrp", "auto_negotiate", + "azure_ad_autoconnect", "backup_gateway", "banner", "cert_id_validation", + "cert_trust_store", "certificate", "childless_ike", "client_auto_negotiate", "client_keep_alive", "comments", + "dev_id", + "dev_id_notification", "dhcp_ra_giaddr", "dhcp6_ra_linkaddr", "dhgrp", @@ -1174,10 +1277,14 @@ def filter_vpn_ipsec_phase1_data(json): "dpd_retrycount", "dpd_retryinterval", "eap", + "eap_cert_auth", "eap_exclude_peergrp", "eap_identity", + "ems_sn_check", "enforce_unique_id", "esn", + "exchange_fgt_device_id", + "fallback_tcp_threshold", "fec_base", "fec_codec", "fec_egress", @@ -1189,6 +1296,7 @@ def filter_vpn_ipsec_phase1_data(json): "fec_send_timeout", "fgsp_sync", "forticlient_enforcement", + "fortinet_esp", "fragmentation", "fragmentation_mtu", "group_authentication", @@ -1226,6 +1334,8 @@ def filter_vpn_ipsec_phase1_data(json): "ipv6_start_ip", "keepalive", "keylife", + "kms", + "link_cost", "local_gw", "localid", "localid_type", @@ -1251,6 +1361,8 @@ def filter_vpn_ipsec_phase1_data(json): "proposal", "psksecret", "psksecret_remote", + "qkd", + "qkd_profile", "reauth", "rekey", "remote_gw", @@ -1262,6 +1374,7 @@ def filter_vpn_ipsec_phase1_data(json): "signature_hash_alg", "split_include_service", "suite_b", + "transport", "type", "unity_support", "usrgrp", @@ -1330,9 +1443,8 @@ def vpn_ipsec_phase1(data, fos, check_mode=False): vpn_ipsec_phase1_data = data["vpn_ipsec_phase1"] vpn_ipsec_phase1_data = flatten_multilists_attributes(vpn_ipsec_phase1_data) - filtered_data = underscore_to_hyphen( - filter_vpn_ipsec_phase1_data(vpn_ipsec_phase1_data) - ) + filtered_data = filter_vpn_ipsec_phase1_data(vpn_ipsec_phase1_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -1396,7 +1508,7 @@ def vpn_ipsec_phase1(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("vpn.ipsec", "phase1", data=filtered_data, vdom=vdom) + return fos.set("vpn.ipsec", "phase1", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("vpn.ipsec", "phase1", mkey=filtered_data["name"], vdom=vdom) @@ -1805,6 +1917,11 @@ versioned_schema = { "options": [{"value": "use-id-payload"}, {"value": "send-request"}], }, "eap_exclude_peergrp": {"v_range": [["v6.2.0", ""]], "type": "string"}, + "eap_cert_auth": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "acct_verify": { "v_range": [["v6.0.0", ""]], "type": "string", @@ -1906,6 +2023,11 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "azure_ad_autoconnect": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "rekey": { "v_range": [["v6.0.0", ""]], "type": "string", @@ -1976,19 +2098,66 @@ versioned_schema = { "fec_receive_timeout": {"v_range": [["v6.2.0", ""]], "type": "integer"}, "fec_health_check": {"v_range": [["v7.0.2", ""]], "type": "string"}, "fec_mapping_profile": {"v_range": [["v7.0.2", ""]], "type": "string"}, - "forticlient_enforcement": { - "v_range": [["v6.0.0", "v7.4.0"]], + "network_overlay": { + "v_range": [["v6.2.0", "v7.0.1"], ["v7.4.2", ""]], "type": "string", - "options": [{"value": "enable"}, {"value": "disable"}], + "options": [{"value": "disable"}, {"value": "enable"}], }, - "network_overlay": { - "v_range": [["v6.2.0", "v7.0.1"]], + "network_id": { + "v_range": [["v6.2.0", "v7.0.1"], ["v7.4.2", ""]], + "type": "integer", + }, + "dev_id_notification": { + "v_range": [["v7.4.2", ""]], "type": "string", "options": [{"value": "disable"}, {"value": "enable"}], }, - "network_id": {"v_range": [["v6.2.0", "v7.0.1"]], "type": "integer"}, + "dev_id": {"v_range": [["v7.4.2", ""]], "type": "string"}, "loopback_asymroute": { - "v_range": [["v7.0.0", "v7.0.1"]], + "v_range": [["v7.0.0", "v7.0.1"], ["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "link_cost": {"v_range": [["v7.4.2", ""]], "type": "integer"}, + "kms": {"v_range": [["v7.4.2", ""]], "type": "string"}, + "exchange_fgt_device_id": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "ems_sn_check": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "cert_trust_store": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "local"}, {"value": "ems"}], + }, + "qkd": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "disable"}, {"value": "allow"}, {"value": "require"}], + }, + "qkd_profile": {"v_range": [["v7.4.2", ""]], "type": "string"}, + "transport": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [ + {"value": "udp"}, + {"value": "udp-fallback-tcp"}, + {"value": "tcp"}, + ], + }, + "fortinet_esp": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "fallback_tcp_threshold": {"v_range": [["v7.4.2", ""]], "type": "integer"}, + "forticlient_enforcement": { + "v_range": [["v6.0.0", "v7.4.0"]], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ipsec_phase1_interface.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ipsec_phase1_interface.py index 044529d74..3959f52d6 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ipsec_phase1_interface.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ipsec_phase1_interface.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -215,6 +215,13 @@ options: choices: - 'enable' - 'disable' + azure_ad_autoconnect: + description: + - Enable/disable Azure AD Auto-Connect for FortiClient. + type: str + choices: + - 'enable' + - 'disable' backup_gateway: description: - Instruct unity clients about the backup gateway address(es). @@ -237,6 +244,13 @@ options: choices: - 'enable' - 'disable' + cert_trust_store: + description: + - CA certificate trust store. + type: str + choices: + - 'local' + - 'ems' certificate: description: - The names of up to 4 signed personal certificates. @@ -368,6 +382,13 @@ options: choices: - 'enable' - 'disable' + eap_cert_auth: + description: + - Enable/disable peer certificate authentication in addition to EAP if peer is a FortiClient endpoint. + type: str + choices: + - 'enable' + - 'disable' eap_exclude_peergrp: description: - Peer group excluded from EAP authentication. Source user.peergrp.name. @@ -457,6 +478,10 @@ options: description: - IPv6 address to exchange with peers. type: str + fallback_tcp_threshold: + description: + - Timeout in seconds before falling back IKE/IPsec traffic to tcp. + type: int fec_base: description: - Number of base Forward Error Correction packets (1 - 20). @@ -516,6 +541,13 @@ options: choices: - 'enable' - 'disable' + fortinet_esp: + description: + - Enable/disable Fortinet ESP encapsulaton. + type: str + choices: + - 'enable' + - 'disable' fragmentation: description: - Enable/disable fragment IKE message on re-transmission. @@ -806,6 +838,10 @@ options: monitor: description: - IPsec interface as backup for primary interface. Source vpn.ipsec.phase1-interface.name. + type: str + monitor_dict: + description: + - IPsec interface as backup for primary interface.(Use the parameter monitor instead if the fortios firmwear version <= 7.4.0.) type: list elements: dict suboptions: @@ -1017,6 +1053,18 @@ options: description: - Pre-shared secret for remote side PSK authentication (ASCII string or hexadecimal encoded with a leading 0x). type: str + qkd: + description: + - Enable/disable use of Quantum Key Distribution (QKD) server. + type: str + choices: + - 'disable' + - 'allow' + - 'require' + qkd_profile: + description: + - Quantum Key Distribution (QKD) server profile. Source vpn.qkd.name. + type: str reauth: description: - Enable/disable re-authentication upon IKE SA lifetime expiration. @@ -1093,6 +1141,14 @@ options: - 'disable' - 'suite-b-gcm-128' - 'suite-b-gcm-256' + transport: + description: + - Set IKE transport protocol. + type: str + choices: + - 'udp' + - 'udp-fallback-tcp' + - 'tcp' tunnel_search: description: - Tunnel search method for when the interface is shared. @@ -1180,14 +1236,16 @@ EXAMPLES = """ auto_discovery_sender: "enable" auto_discovery_shortcuts: "independent" auto_negotiate: "enable" + azure_ad_autoconnect: "enable" backup_gateway: - address: "<your_own_value>" banner: "<your_own_value>" cert_id_validation: "enable" + cert_trust_store: "local" certificate: - - name: "default_name_28 (source vpn.certificate.local.name)" + name: "default_name_30 (source vpn.certificate.local.name)" childless_ike: "enable" client_auto_negotiate: "disable" client_keep_alive: "disable" @@ -1207,6 +1265,7 @@ EXAMPLES = """ dpd_retrycount: "3" dpd_retryinterval: "<your_own_value>" eap: "enable" + eap_cert_auth: "enable" eap_exclude_peergrp: "<your_own_value> (source user.peergrp.name)" eap_identity: "use-id-payload" ems_sn_check: "enable" @@ -1222,6 +1281,7 @@ EXAMPLES = """ exchange_interface_ip: "enable" exchange_ip_addr4: "<your_own_value>" exchange_ip_addr6: "<your_own_value>" + fallback_tcp_threshold: "15" fec_base: "10" fec_codec: "rs" fec_egress: "enable" @@ -1233,6 +1293,7 @@ EXAMPLES = """ fec_send_timeout: "5" fgsp_sync: "enable" forticlient_enforcement: "enable" + fortinet_esp: "enable" fragmentation: "enable" fragmentation_mtu: "1200" group_authentication: "enable" @@ -1257,7 +1318,7 @@ EXAMPLES = """ ipv4_exclude_range: - end_ip: "<your_own_value>" - id: "96" + id: "101" start_ip: "<your_own_value>" ipv4_name: "<your_own_value> (source firewall.address.name firewall.addrgrp.name)" ipv4_netmask: "<your_own_value>" @@ -1273,7 +1334,7 @@ EXAMPLES = """ ipv6_exclude_range: - end_ip: "<your_own_value>" - id: "111" + id: "116" start_ip: "<your_own_value>" ipv6_name: "<your_own_value> (source firewall.address6.name firewall.addrgrp6.name)" ipv6_prefix: "128" @@ -1293,15 +1354,16 @@ EXAMPLES = """ mode: "aggressive" mode_cfg: "disable" mode_cfg_allow_client_selector: "disable" - monitor: + monitor: "<your_own_value> (source vpn.ipsec.phase1-interface.name)" + monitor_dict: - - name: "default_name_132 (source vpn.ipsec.phase1-interface.name)" + name: "default_name_138 (source vpn.ipsec.phase1-interface.name)" monitor_hold_down_delay: "0" monitor_hold_down_time: "<your_own_value>" monitor_hold_down_type: "immediate" monitor_hold_down_weekday: "everyday" monitor_min: "0" - name: "default_name_138" + name: "default_name_144" nattraversal: "enable" negotiate_timeout: "30" net_device: "enable" @@ -1321,6 +1383,8 @@ EXAMPLES = """ proposal: "des-md5" psksecret: "<your_own_value>" psksecret_remote: "<your_own_value>" + qkd: "disable" + qkd_profile: "<your_own_value> (source vpn.qkd.name)" reauth: "disable" rekey: "enable" remote_gw: "<your_own_value>" @@ -1333,6 +1397,7 @@ EXAMPLES = """ signature_hash_alg: "sha1" split_include_service: "<your_own_value> (source firewall.service.group.name firewall.service.custom.name)" suite_b: "disable" + transport: "udp" tunnel_search: "selectors" type: "static" unity_support: "disable" @@ -1452,9 +1517,11 @@ def filter_vpn_ipsec_phase1_interface_data(json): "auto_discovery_sender", "auto_discovery_shortcuts", "auto_negotiate", + "azure_ad_autoconnect", "backup_gateway", "banner", "cert_id_validation", + "cert_trust_store", "certificate", "childless_ike", "client_auto_negotiate", @@ -1475,6 +1542,7 @@ def filter_vpn_ipsec_phase1_interface_data(json): "dpd_retrycount", "dpd_retryinterval", "eap", + "eap_cert_auth", "eap_exclude_peergrp", "eap_identity", "ems_sn_check", @@ -1490,6 +1558,7 @@ def filter_vpn_ipsec_phase1_interface_data(json): "exchange_interface_ip", "exchange_ip_addr4", "exchange_ip_addr6", + "fallback_tcp_threshold", "fec_base", "fec_codec", "fec_egress", @@ -1501,6 +1570,7 @@ def filter_vpn_ipsec_phase1_interface_data(json): "fec_send_timeout", "fgsp_sync", "forticlient_enforcement", + "fortinet_esp", "fragmentation", "fragmentation_mtu", "group_authentication", @@ -1552,6 +1622,7 @@ def filter_vpn_ipsec_phase1_interface_data(json): "mode_cfg", "mode_cfg_allow_client_selector", "monitor", + "monitor_dict", "monitor_hold_down_delay", "monitor_hold_down_time", "monitor_hold_down_type", @@ -1577,6 +1648,8 @@ def filter_vpn_ipsec_phase1_interface_data(json): "proposal", "psksecret", "psksecret_remote", + "qkd", + "qkd_profile", "reauth", "rekey", "remote_gw", @@ -1589,6 +1662,7 @@ def filter_vpn_ipsec_phase1_interface_data(json): "signature_hash_alg", "split_include_service", "suite_b", + "transport", "tunnel_search", "type", "unity_support", @@ -1652,6 +1726,30 @@ def underscore_to_hyphen(data): return data +def remap_attribute_name(data): + speciallist = {"monitor-dict": "monitor"} + + if data in speciallist: + return speciallist[data] + return data + + +def remap_attribute_names(data): + if isinstance(data, list): + new_data = [] + for elem in data: + elem = remap_attribute_names(elem) + new_data.append(elem) + data = new_data + elif isinstance(data, dict): + new_data = {} + for k, v in data.items(): + new_data[remap_attribute_name(k)] = remap_attribute_names(v) + data = new_data + + return data + + def vpn_ipsec_phase1_interface(data, fos, check_mode=False): vdom = data["vdom"] @@ -1661,9 +1759,11 @@ def vpn_ipsec_phase1_interface(data, fos, check_mode=False): vpn_ipsec_phase1_interface_data = flatten_multilists_attributes( vpn_ipsec_phase1_interface_data ) - filtered_data = underscore_to_hyphen( - filter_vpn_ipsec_phase1_interface_data(vpn_ipsec_phase1_interface_data) + filtered_data = filter_vpn_ipsec_phase1_interface_data( + vpn_ipsec_phase1_interface_data ) + converted_data = underscore_to_hyphen(filtered_data) + converted_data = remap_attribute_names(converted_data) # check_mode starts from here if check_mode: @@ -1727,7 +1827,7 @@ def vpn_ipsec_phase1_interface(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("vpn.ipsec", "phase1-interface", data=filtered_data, vdom=vdom) + return fos.set("vpn.ipsec", "phase1-interface", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( @@ -1839,7 +1939,7 @@ versioned_schema = { "usrgrp": {"v_range": [["v6.0.0", ""]], "type": "string"}, "peer": {"v_range": [["v6.0.0", ""]], "type": "string"}, "peergrp": {"v_range": [["v6.0.0", ""]], "type": "string"}, - "monitor": { + "monitor_dict": { "type": "list", "elements": "dict", "children": { @@ -1849,7 +1949,7 @@ versioned_schema = { "required": True, } }, - "v_range": [["v6.0.0", ""]], + "v_range": [["v7.4.1", ""]], }, "monitor_min": {"v_range": [["v7.4.1", ""]], "type": "integer"}, "monitor_hold_down_type": { @@ -1897,7 +1997,7 @@ versioned_schema = { }, "aggregate_weight": {"v_range": [["v6.4.0", ""]], "type": "integer"}, "packet_redistribution": { - "v_range": [], + "v_range": [["v7.4.2", "v7.4.2"]], "type": "string", "options": [ {"value": "enable", "v_range": [["v7.2.1", "v7.2.2"], ["v7.4.0", ""]]}, @@ -2222,6 +2322,11 @@ versioned_schema = { "options": [{"value": "use-id-payload"}, {"value": "send-request"}], }, "eap_exclude_peergrp": {"v_range": [["v6.2.0", ""]], "type": "string"}, + "eap_cert_auth": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "acct_verify": { "v_range": [["v6.0.0", ""]], "type": "string", @@ -2377,6 +2482,11 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "azure_ad_autoconnect": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "rekey": { "v_range": [["v6.0.0", ""]], "type": "string", @@ -2476,6 +2586,33 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "cert_trust_store": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "local"}, {"value": "ems"}], + }, + "qkd": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "disable"}, {"value": "allow"}, {"value": "require"}], + }, + "qkd_profile": {"v_range": [["v7.4.2", ""]], "type": "string"}, + "transport": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [ + {"value": "udp"}, + {"value": "udp-fallback-tcp"}, + {"value": "tcp"}, + ], + }, + "fortinet_esp": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "fallback_tcp_threshold": {"v_range": [["v7.4.2", ""]], "type": "integer"}, + "monitor": {"v_range": [["v6.0.0", "v7.4.0"]], "type": "string"}, "forticlient_enforcement": { "v_range": [["v6.0.0", "v7.4.0"]], "type": "string", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ipsec_phase2.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ipsec_phase2.py index 2d41db72a..eff4ad728 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ipsec_phase2.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ipsec_phase2.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -677,9 +677,8 @@ def vpn_ipsec_phase2(data, fos, check_mode=False): vpn_ipsec_phase2_data = data["vpn_ipsec_phase2"] vpn_ipsec_phase2_data = flatten_multilists_attributes(vpn_ipsec_phase2_data) - filtered_data = underscore_to_hyphen( - filter_vpn_ipsec_phase2_data(vpn_ipsec_phase2_data) - ) + filtered_data = filter_vpn_ipsec_phase2_data(vpn_ipsec_phase2_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -743,7 +742,7 @@ def vpn_ipsec_phase2(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("vpn.ipsec", "phase2", data=filtered_data, vdom=vdom) + return fos.set("vpn.ipsec", "phase2", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("vpn.ipsec", "phase2", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ipsec_phase2_interface.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ipsec_phase2_interface.py index b24541ccf..6373c187c 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ipsec_phase2_interface.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ipsec_phase2_interface.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -688,9 +688,10 @@ def vpn_ipsec_phase2_interface(data, fos, check_mode=False): vpn_ipsec_phase2_interface_data = flatten_multilists_attributes( vpn_ipsec_phase2_interface_data ) - filtered_data = underscore_to_hyphen( - filter_vpn_ipsec_phase2_interface_data(vpn_ipsec_phase2_interface_data) + filtered_data = filter_vpn_ipsec_phase2_interface_data( + vpn_ipsec_phase2_interface_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -754,7 +755,7 @@ def vpn_ipsec_phase2_interface(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("vpn.ipsec", "phase2-interface", data=filtered_data, vdom=vdom) + return fos.set("vpn.ipsec", "phase2-interface", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_kmip_server.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_kmip_server.py index bc041e5a7..fd580be1f 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_kmip_server.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_kmip_server.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -312,12 +312,11 @@ def vpn_kmip_server(data, fos): state = data["state"] vpn_kmip_server_data = data["vpn_kmip_server"] - filtered_data = underscore_to_hyphen( - filter_vpn_kmip_server_data(vpn_kmip_server_data) - ) + filtered_data = filter_vpn_kmip_server_data(vpn_kmip_server_data) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: - return fos.set("vpn", "kmip-server", data=filtered_data, vdom=vdom) + return fos.set("vpn", "kmip-server", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("vpn", "kmip-server", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_l2tp.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_l2tp.py index 3937bf900..53f46b79c 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_l2tp.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_l2tp.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -261,9 +261,10 @@ def underscore_to_hyphen(data): def vpn_l2tp(data, fos): vdom = data["vdom"] vpn_l2tp_data = data["vpn_l2tp"] - filtered_data = underscore_to_hyphen(filter_vpn_l2tp_data(vpn_l2tp_data)) + filtered_data = filter_vpn_l2tp_data(vpn_l2tp_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("vpn", "l2tp", data=filtered_data, vdom=vdom) + return fos.set("vpn", "l2tp", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ocvpn.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ocvpn.py index 58a6c4bd3..acb461c36 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ocvpn.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ocvpn.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -485,9 +485,10 @@ def underscore_to_hyphen(data): def vpn_ocvpn(data, fos): vdom = data["vdom"] vpn_ocvpn_data = data["vpn_ocvpn"] - filtered_data = underscore_to_hyphen(filter_vpn_ocvpn_data(vpn_ocvpn_data)) + filtered_data = filter_vpn_ocvpn_data(vpn_ocvpn_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("vpn", "ocvpn", data=filtered_data, vdom=vdom) + return fos.set("vpn", "ocvpn", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_pptp.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_pptp.py index 906a96e45..452d516cf 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_pptp.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_pptp.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -233,9 +233,10 @@ def underscore_to_hyphen(data): def vpn_pptp(data, fos): vdom = data["vdom"] vpn_pptp_data = data["vpn_pptp"] - filtered_data = underscore_to_hyphen(filter_vpn_pptp_data(vpn_pptp_data)) + filtered_data = filter_vpn_pptp_data(vpn_pptp_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("vpn", "pptp", data=filtered_data, vdom=vdom) + return fos.set("vpn", "pptp", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_qkd.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_qkd.py new file mode 100644 index 000000000..18f7600fe --- /dev/null +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_qkd.py @@ -0,0 +1,403 @@ +#!/usr/bin/python +from __future__ import absolute_import, division, print_function + +# Copyright: (c) 2022 Fortinet +# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +__metaclass__ = type + +ANSIBLE_METADATA = { + "status": ["preview"], + "supported_by": "community", + "metadata_version": "1.1", +} + +DOCUMENTATION = """ +--- +module: fortios_vpn_qkd +short_description: Configure Quantum Key Distribution server in Fortinet's FortiOS and FortiGate. +description: + - This module is able to configure a FortiGate or FortiOS (FOS) device by allowing the + user to set and modify vpn feature and qkd category. + Examples include all parameters and values need to be adjusted to datasources before usage. + Tested with FOS v6.0.0 +version_added: "2.0.0" +author: + - Link Zheng (@chillancezen) + - Jie Xue (@JieX19) + - Hongbin Lu (@fgtdev-hblu) + - Frank Shen (@frankshen01) + - Miguel Angel Munoz (@mamunozgonzalez) + - Nicolas Thomas (@thomnico) +notes: + - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks + +requirements: + - ansible>=2.15 +options: + access_token: + description: + - Token-based authentication. + Generated from GUI of Fortigate. + type: str + required: false + enable_log: + description: + - Enable/Disable logging for task. + type: bool + required: false + default: false + vdom: + description: + - Virtual domain, among those defined previously. A vdom is a + virtual instance of the FortiGate that can be configured and + used as a different unit. + type: str + default: root + member_path: + type: str + description: + - Member attribute path to operate on. + - Delimited by a slash character if there are more than one attribute. + - Parameter marked with member_path is legitimate for doing member operation. + member_state: + type: str + description: + - Add or delete a member under specified attribute path. + - When member_state is specified, the state option is ignored. + choices: + - 'present' + - 'absent' + + state: + description: + - Indicates whether to create or remove the object. + type: str + required: true + choices: + - 'present' + - 'absent' + vpn_qkd: + description: + - Configure Quantum Key Distribution servers + default: null + type: dict + suboptions: + certificate: + description: + - Names of up to 4 certificates to offer to the KME. + type: list + elements: dict + suboptions: + name: + description: + - Certificate name. Source vpn.certificate.local.name. + required: true + type: str + comment: + description: + - Comment. + type: str + id: + description: + - Quantum Key Distribution ID assigned by the KME. + type: str + name: + description: + - Quantum Key Distribution configuration name. + required: true + type: str + peer: + description: + - Authenticate Quantum Key Device"s certificate with the peer/peergrp. Source user.peer.name user.peergrp.name. + type: str + port: + description: + - Port to connect to on the KME. + type: int + server: + description: + - IPv4, IPv6 or DNS address of the KME. + type: str +""" + +EXAMPLES = """ +- name: Configure Quantum Key Distribution servers + fortinet.fortios.fortios_vpn_qkd: + vdom: "{{ vdom }}" + state: "present" + access_token: "<your_own_value>" + vpn_qkd: + certificate: + - + name: "default_name_4 (source vpn.certificate.local.name)" + comment: "Comment." + id: "6" + name: "default_name_7" + peer: "<your_own_value> (source user.peer.name user.peergrp.name)" + port: "0" + server: "192.168.100.40" +""" + +RETURN = """ +build: + description: Build number of the fortigate image + returned: always + type: str + sample: '1547' +http_method: + description: Last method used to provision the content into FortiGate + returned: always + type: str + sample: 'PUT' +http_status: + description: Last result given by FortiGate on last operation applied + returned: always + type: str + sample: "200" +mkey: + description: Master key (id) used in the last call to FortiGate + returned: success + type: str + sample: "id" +name: + description: Name of the table used to fulfill the request + returned: always + type: str + sample: "urlfilter" +path: + description: Path of the table used to fulfill the request + returned: always + type: str + sample: "webfilter" +revision: + description: Internal revision number + returned: always + type: str + sample: "17.0.2.10658" +serial: + description: Serial number of the unit + returned: always + type: str + sample: "FGVMEVYYQT3AB5352" +status: + description: Indication of the operation's result + returned: always + type: str + sample: "success" +vdom: + description: Virtual domain used + returned: always + type: str + sample: "root" +version: + description: Version of the FortiGate + returned: always + type: str + sample: "v5.6.3" +""" +from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.connection import Connection +from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.fortios import ( + FortiOSHandler, +) +from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.fortios import ( + check_legacy_fortiosapi, +) +from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.fortios import ( + schema_to_module_spec, +) +from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.fortios import ( + check_schema_versioning, +) +from ansible_collections.fortinet.fortios.plugins.module_utils.fortimanager.common import ( + FAIL_SOCKET_MSG, +) +from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.data_post_processor import ( + remove_invalid_fields, +) + + +def filter_vpn_qkd_data(json): + option_list = ["certificate", "comment", "id", "name", "peer", "port", "server"] + + json = remove_invalid_fields(json) + dictionary = {} + + for attribute in option_list: + if attribute in json and json[attribute] is not None: + dictionary[attribute] = json[attribute] + + return dictionary + + +def underscore_to_hyphen(data): + if isinstance(data, list): + for i, elem in enumerate(data): + data[i] = underscore_to_hyphen(elem) + elif isinstance(data, dict): + new_data = {} + for k, v in data.items(): + new_data[k.replace("_", "-")] = underscore_to_hyphen(v) + data = new_data + + return data + + +def vpn_qkd(data, fos): + vdom = data["vdom"] + + state = data["state"] + + vpn_qkd_data = data["vpn_qkd"] + filtered_data = filter_vpn_qkd_data(vpn_qkd_data) + converted_data = underscore_to_hyphen(filtered_data) + + if state == "present" or state is True: + return fos.set("vpn", "qkd", data=converted_data, vdom=vdom) + + elif state == "absent": + return fos.delete("vpn", "qkd", mkey=filtered_data["name"], vdom=vdom) + else: + fos._module.fail_json(msg="state must be present or absent!") + + +def is_successful_status(resp): + return ( + "status" in resp + and resp["status"] == "success" + or "http_status" in resp + and resp["http_status"] == 200 + or "http_method" in resp + and resp["http_method"] == "DELETE" + and resp["http_status"] == 404 + ) + + +def fortios_vpn(data, fos): + fos.do_member_operation("vpn", "qkd") + if data["vpn_qkd"]: + resp = vpn_qkd(data, fos) + else: + fos._module.fail_json(msg="missing task body: %s" % ("vpn_qkd")) + + return ( + not is_successful_status(resp), + is_successful_status(resp) + and (resp["revision_changed"] if "revision_changed" in resp else True), + resp, + {}, + ) + + +versioned_schema = { + "type": "list", + "elements": "dict", + "children": { + "name": {"v_range": [["v7.4.2", ""]], "type": "string", "required": True}, + "server": {"v_range": [["v7.4.2", ""]], "type": "string"}, + "port": {"v_range": [["v7.4.2", ""]], "type": "integer"}, + "id": {"v_range": [["v7.4.2", ""]], "type": "string"}, + "peer": {"v_range": [["v7.4.2", ""]], "type": "string"}, + "certificate": { + "type": "list", + "elements": "dict", + "children": { + "name": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "required": True, + } + }, + "v_range": [["v7.4.2", ""]], + }, + "comment": {"v_range": [["v7.4.2", ""]], "type": "string"}, + }, + "v_range": [["v7.4.2", ""]], +} + + +def main(): + module_spec = schema_to_module_spec(versioned_schema) + mkeyname = "name" + fields = { + "access_token": {"required": False, "type": "str", "no_log": True}, + "enable_log": {"required": False, "type": "bool", "default": False}, + "vdom": {"required": False, "type": "str", "default": "root"}, + "member_path": {"required": False, "type": "str"}, + "member_state": { + "type": "str", + "required": False, + "choices": ["present", "absent"], + }, + "state": {"required": True, "type": "str", "choices": ["present", "absent"]}, + "vpn_qkd": {"required": False, "type": "dict", "default": None, "options": {}}, + } + for attribute_name in module_spec["options"]: + fields["vpn_qkd"]["options"][attribute_name] = module_spec["options"][ + attribute_name + ] + if mkeyname and mkeyname == attribute_name: + fields["vpn_qkd"]["options"][attribute_name]["required"] = True + + module = AnsibleModule(argument_spec=fields, supports_check_mode=False) + check_legacy_fortiosapi(module) + + is_error = False + has_changed = False + result = None + diff = None + + versions_check_result = None + if module._socket_path: + connection = Connection(module._socket_path) + if "access_token" in module.params: + connection.set_option("access_token", module.params["access_token"]) + + if "enable_log" in module.params: + connection.set_option("enable_log", module.params["enable_log"]) + else: + connection.set_option("enable_log", False) + fos = FortiOSHandler(connection, module, mkeyname) + versions_check_result = check_schema_versioning( + fos, versioned_schema, "vpn_qkd" + ) + + is_error, has_changed, result, diff = fortios_vpn(module.params, fos) + + else: + module.fail_json(**FAIL_SOCKET_MSG) + + if versions_check_result and versions_check_result["matched"] is False: + module.warn( + "Ansible has detected version mismatch between FortOS system and your playbook, see more details by specifying option -vvv" + ) + + if not is_error: + if versions_check_result and versions_check_result["matched"] is False: + module.exit_json( + changed=has_changed, + version_check_warning=versions_check_result, + meta=result, + diff=diff, + ) + else: + module.exit_json(changed=has_changed, meta=result, diff=diff) + else: + if versions_check_result and versions_check_result["matched"] is False: + module.fail_json( + msg="Error in repo", + version_check_warning=versions_check_result, + meta=result, + ) + else: + module.fail_json(msg="Error in repo", meta=result) + + +if __name__ == "__main__": + main() diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ssl_client.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ssl_client.py index 3426f6311..51c831746 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ssl_client.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ssl_client.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -317,12 +317,11 @@ def vpn_ssl_client(data, fos): state = data["state"] vpn_ssl_client_data = data["vpn_ssl_client"] - filtered_data = underscore_to_hyphen( - filter_vpn_ssl_client_data(vpn_ssl_client_data) - ) + filtered_data = filter_vpn_ssl_client_data(vpn_ssl_client_data) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: - return fos.set("vpn.ssl", "client", data=filtered_data, vdom=vdom) + return fos.set("vpn.ssl", "client", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("vpn.ssl", "client", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ssl_settings.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ssl_settings.py index 8d0392d0c..e8118e2f6 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ssl_settings.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ssl_settings.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -1030,11 +1030,10 @@ def vpn_ssl_settings(data, fos): vdom = data["vdom"] vpn_ssl_settings_data = data["vpn_ssl_settings"] vpn_ssl_settings_data = flatten_multilists_attributes(vpn_ssl_settings_data) - filtered_data = underscore_to_hyphen( - filter_vpn_ssl_settings_data(vpn_ssl_settings_data) - ) + filtered_data = filter_vpn_ssl_settings_data(vpn_ssl_settings_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("vpn.ssl", "settings", data=filtered_data, vdom=vdom) + return fos.set("vpn.ssl", "settings", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ssl_web_host_check_software.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ssl_web_host_check_software.py index 0e64e27f1..ffe3481b1 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ssl_web_host_check_software.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ssl_web_host_check_software.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -306,11 +306,10 @@ def vpn_ssl_web_host_check_software(data, fos, check_mode=False): state = data["state"] vpn_ssl_web_host_check_software_data = data["vpn_ssl_web_host_check_software"] - filtered_data = underscore_to_hyphen( - filter_vpn_ssl_web_host_check_software_data( - vpn_ssl_web_host_check_software_data - ) + filtered_data = filter_vpn_ssl_web_host_check_software_data( + vpn_ssl_web_host_check_software_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -379,7 +378,7 @@ def vpn_ssl_web_host_check_software(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "vpn.ssl.web", "host-check-software", data=filtered_data, vdom=vdom + "vpn.ssl.web", "host-check-software", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ssl_web_portal.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ssl_web_portal.py index c598b33de..7038461fc 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ssl_web_portal.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ssl_web_portal.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -222,6 +222,7 @@ options: - 'it' - 'it-142' - 'ja' + - 'ja-106' - 'ko' - 'la-am' - 'lt' @@ -1427,9 +1428,8 @@ def vpn_ssl_web_portal(data, fos, check_mode=False): vpn_ssl_web_portal_data = data["vpn_ssl_web_portal"] vpn_ssl_web_portal_data = flatten_multilists_attributes(vpn_ssl_web_portal_data) - filtered_data = underscore_to_hyphen( - filter_vpn_ssl_web_portal_data(vpn_ssl_web_portal_data) - ) + filtered_data = filter_vpn_ssl_web_portal_data(vpn_ssl_web_portal_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -1493,7 +1493,7 @@ def vpn_ssl_web_portal(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("vpn.ssl.web", "portal", data=filtered_data, vdom=vdom) + return fos.set("vpn.ssl.web", "portal", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( @@ -1823,6 +1823,7 @@ versioned_schema = { {"value": "it"}, {"value": "it-142"}, {"value": "ja"}, + {"value": "ja-106", "v_range": [["v7.4.2", ""]]}, {"value": "ko"}, {"value": "la-am", "v_range": [["v7.4.1", ""]]}, {"value": "lt"}, diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ssl_web_realm.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ssl_web_realm.py index 7af101373..695721111 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ssl_web_realm.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ssl_web_realm.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -278,9 +278,8 @@ def vpn_ssl_web_realm(data, fos, check_mode=False): state = data["state"] vpn_ssl_web_realm_data = data["vpn_ssl_web_realm"] - filtered_data = underscore_to_hyphen( - filter_vpn_ssl_web_realm_data(vpn_ssl_web_realm_data) - ) + filtered_data = filter_vpn_ssl_web_realm_data(vpn_ssl_web_realm_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -344,7 +343,7 @@ def vpn_ssl_web_realm(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("vpn.ssl.web", "realm", data=filtered_data, vdom=vdom) + return fos.set("vpn.ssl.web", "realm", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ssl_web_user_bookmark.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ssl_web_user_bookmark.py index ce5de7185..d7f795e3e 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ssl_web_user_bookmark.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ssl_web_user_bookmark.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -192,6 +192,7 @@ options: - 'it' - 'it-142' - 'ja' + - 'ja-106' - 'ko' - 'la-am' - 'lt' @@ -549,9 +550,10 @@ def vpn_ssl_web_user_bookmark(data, fos, check_mode=False): state = data["state"] vpn_ssl_web_user_bookmark_data = data["vpn_ssl_web_user_bookmark"] - filtered_data = underscore_to_hyphen( - filter_vpn_ssl_web_user_bookmark_data(vpn_ssl_web_user_bookmark_data) + filtered_data = filter_vpn_ssl_web_user_bookmark_data( + vpn_ssl_web_user_bookmark_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -615,7 +617,7 @@ def vpn_ssl_web_user_bookmark(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("vpn.ssl.web", "user-bookmark", data=filtered_data, vdom=vdom) + return fos.set("vpn.ssl.web", "user-bookmark", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( @@ -731,6 +733,7 @@ versioned_schema = { {"value": "it"}, {"value": "it-142"}, {"value": "ja"}, + {"value": "ja-106", "v_range": [["v7.4.2", ""]]}, {"value": "ko"}, {"value": "la-am", "v_range": [["v7.4.1", ""]]}, {"value": "lt"}, diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ssl_web_user_group_bookmark.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ssl_web_user_group_bookmark.py index 42f936293..6fdea857d 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ssl_web_user_group_bookmark.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_vpn_ssl_web_user_group_bookmark.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -192,6 +192,7 @@ options: - 'it' - 'it-142' - 'ja' + - 'ja-106' - 'ko' - 'la-am' - 'lt' @@ -544,11 +545,10 @@ def vpn_ssl_web_user_group_bookmark(data, fos, check_mode=False): state = data["state"] vpn_ssl_web_user_group_bookmark_data = data["vpn_ssl_web_user_group_bookmark"] - filtered_data = underscore_to_hyphen( - filter_vpn_ssl_web_user_group_bookmark_data( - vpn_ssl_web_user_group_bookmark_data - ) + filtered_data = filter_vpn_ssl_web_user_group_bookmark_data( + vpn_ssl_web_user_group_bookmark_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -617,7 +617,7 @@ def vpn_ssl_web_user_group_bookmark(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "vpn.ssl.web", "user-group-bookmark", data=filtered_data, vdom=vdom + "vpn.ssl.web", "user-group-bookmark", data=converted_data, vdom=vdom ) elif state == "absent": @@ -733,6 +733,7 @@ versioned_schema = { {"value": "it"}, {"value": "it-142"}, {"value": "ja"}, + {"value": "ja-106", "v_range": [["v7.4.2", ""]]}, {"value": "ko"}, {"value": "la-am", "v_range": [["v7.4.1", ""]]}, {"value": "lt"}, diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_waf_main_class.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_waf_main_class.py index 1b25b5f08..38a094bab 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_waf_main_class.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_waf_main_class.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -232,9 +232,8 @@ def waf_main_class(data, fos, check_mode=False): state = data["state"] waf_main_class_data = data["waf_main_class"] - filtered_data = underscore_to_hyphen( - filter_waf_main_class_data(waf_main_class_data) - ) + filtered_data = filter_waf_main_class_data(waf_main_class_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -298,7 +297,7 @@ def waf_main_class(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("waf", "main-class", data=filtered_data, vdom=vdom) + return fos.set("waf", "main-class", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("waf", "main-class", mkey=filtered_data["id"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_waf_profile.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_waf_profile.py index 017f7813f..e81a088b1 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_waf_profile.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_waf_profile.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -1397,7 +1397,8 @@ def waf_profile(data, fos, check_mode=False): waf_profile_data = data["waf_profile"] waf_profile_data = flatten_multilists_attributes(waf_profile_data) - filtered_data = underscore_to_hyphen(filter_waf_profile_data(waf_profile_data)) + filtered_data = filter_waf_profile_data(waf_profile_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -1461,7 +1462,7 @@ def waf_profile(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("waf", "profile", data=filtered_data, vdom=vdom) + return fos.set("waf", "profile", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("waf", "profile", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_waf_signature.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_waf_signature.py index dba4a35c2..0536d1eea 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_waf_signature.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_waf_signature.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -232,7 +232,8 @@ def waf_signature(data, fos, check_mode=False): state = data["state"] waf_signature_data = data["waf_signature"] - filtered_data = underscore_to_hyphen(filter_waf_signature_data(waf_signature_data)) + filtered_data = filter_waf_signature_data(waf_signature_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -296,7 +297,7 @@ def waf_signature(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("waf", "signature", data=filtered_data, vdom=vdom) + return fos.set("waf", "signature", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("waf", "signature", mkey=filtered_data["id"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_waf_sub_class.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_waf_sub_class.py index 9bd9914bc..2960f2b0e 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_waf_sub_class.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_waf_sub_class.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -232,7 +232,8 @@ def waf_sub_class(data, fos, check_mode=False): state = data["state"] waf_sub_class_data = data["waf_sub_class"] - filtered_data = underscore_to_hyphen(filter_waf_sub_class_data(waf_sub_class_data)) + filtered_data = filter_waf_sub_class_data(waf_sub_class_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -296,7 +297,7 @@ def waf_sub_class(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("waf", "sub-class", data=filtered_data, vdom=vdom) + return fos.set("waf", "sub-class", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("waf", "sub-class", mkey=filtered_data["id"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wanopt_auth_group.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wanopt_auth_group.py index 426e26877..098da9493 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wanopt_auth_group.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wanopt_auth_group.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -258,9 +258,8 @@ def wanopt_auth_group(data, fos, check_mode=False): state = data["state"] wanopt_auth_group_data = data["wanopt_auth_group"] - filtered_data = underscore_to_hyphen( - filter_wanopt_auth_group_data(wanopt_auth_group_data) - ) + filtered_data = filter_wanopt_auth_group_data(wanopt_auth_group_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -324,7 +323,7 @@ def wanopt_auth_group(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("wanopt", "auth-group", data=filtered_data, vdom=vdom) + return fos.set("wanopt", "auth-group", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("wanopt", "auth-group", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wanopt_cache_service.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wanopt_cache_service.py index aa1e195b2..ab0061975 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wanopt_cache_service.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wanopt_cache_service.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -302,11 +302,10 @@ def underscore_to_hyphen(data): def wanopt_cache_service(data, fos): vdom = data["vdom"] wanopt_cache_service_data = data["wanopt_cache_service"] - filtered_data = underscore_to_hyphen( - filter_wanopt_cache_service_data(wanopt_cache_service_data) - ) + filtered_data = filter_wanopt_cache_service_data(wanopt_cache_service_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("wanopt", "cache-service", data=filtered_data, vdom=vdom) + return fos.set("wanopt", "cache-service", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wanopt_content_delivery_network_rule.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wanopt_content_delivery_network_rule.py index 12b73c605..a87bfc21b 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wanopt_content_delivery_network_rule.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wanopt_content_delivery_network_rule.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -487,11 +487,10 @@ def wanopt_content_delivery_network_rule(data, fos, check_mode=False): wanopt_content_delivery_network_rule_data = data[ "wanopt_content_delivery_network_rule" ] - filtered_data = underscore_to_hyphen( - filter_wanopt_content_delivery_network_rule_data( - wanopt_content_delivery_network_rule_data - ) + filtered_data = filter_wanopt_content_delivery_network_rule_data( + wanopt_content_delivery_network_rule_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -560,7 +559,7 @@ def wanopt_content_delivery_network_rule(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "wanopt", "content-delivery-network-rule", data=filtered_data, vdom=vdom + "wanopt", "content-delivery-network-rule", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wanopt_peer.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wanopt_peer.py index 6a461992b..16c5eb211 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wanopt_peer.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wanopt_peer.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -230,7 +230,8 @@ def wanopt_peer(data, fos, check_mode=False): state = data["state"] wanopt_peer_data = data["wanopt_peer"] - filtered_data = underscore_to_hyphen(filter_wanopt_peer_data(wanopt_peer_data)) + filtered_data = filter_wanopt_peer_data(wanopt_peer_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -294,7 +295,7 @@ def wanopt_peer(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("wanopt", "peer", data=filtered_data, vdom=vdom) + return fos.set("wanopt", "peer", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wanopt_profile.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wanopt_profile.py index 171e90aba..d986f61c0 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wanopt_profile.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wanopt_profile.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -632,9 +632,8 @@ def wanopt_profile(data, fos, check_mode=False): state = data["state"] wanopt_profile_data = data["wanopt_profile"] - filtered_data = underscore_to_hyphen( - filter_wanopt_profile_data(wanopt_profile_data) - ) + filtered_data = filter_wanopt_profile_data(wanopt_profile_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -698,7 +697,7 @@ def wanopt_profile(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("wanopt", "profile", data=filtered_data, vdom=vdom) + return fos.set("wanopt", "profile", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("wanopt", "profile", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wanopt_remote_storage.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wanopt_remote_storage.py index 7726b16df..511efac46 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wanopt_remote_storage.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wanopt_remote_storage.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -220,11 +220,10 @@ def underscore_to_hyphen(data): def wanopt_remote_storage(data, fos): vdom = data["vdom"] wanopt_remote_storage_data = data["wanopt_remote_storage"] - filtered_data = underscore_to_hyphen( - filter_wanopt_remote_storage_data(wanopt_remote_storage_data) - ) + filtered_data = filter_wanopt_remote_storage_data(wanopt_remote_storage_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("wanopt", "remote-storage", data=filtered_data, vdom=vdom) + return fos.set("wanopt", "remote-storage", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wanopt_settings.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wanopt_settings.py index c1cbca575..d0fec442d 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wanopt_settings.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wanopt_settings.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -233,11 +233,10 @@ def underscore_to_hyphen(data): def wanopt_settings(data, fos): vdom = data["vdom"] wanopt_settings_data = data["wanopt_settings"] - filtered_data = underscore_to_hyphen( - filter_wanopt_settings_data(wanopt_settings_data) - ) + filtered_data = filter_wanopt_settings_data(wanopt_settings_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("wanopt", "settings", data=filtered_data, vdom=vdom) + return fos.set("wanopt", "settings", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wanopt_webcache.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wanopt_webcache.py index 3cccd7502..4de59a350 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wanopt_webcache.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wanopt_webcache.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -335,11 +335,10 @@ def underscore_to_hyphen(data): def wanopt_webcache(data, fos): vdom = data["vdom"] wanopt_webcache_data = data["wanopt_webcache"] - filtered_data = underscore_to_hyphen( - filter_wanopt_webcache_data(wanopt_webcache_data) - ) + filtered_data = filter_wanopt_webcache_data(wanopt_webcache_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("wanopt", "webcache", data=filtered_data, vdom=vdom) + return fos.set("wanopt", "webcache", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_web_proxy_debug_url.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_web_proxy_debug_url.py index 8358b38d3..2ae941d1f 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_web_proxy_debug_url.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_web_proxy_debug_url.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -246,9 +246,8 @@ def web_proxy_debug_url(data, fos, check_mode=False): state = data["state"] web_proxy_debug_url_data = data["web_proxy_debug_url"] - filtered_data = underscore_to_hyphen( - filter_web_proxy_debug_url_data(web_proxy_debug_url_data) - ) + filtered_data = filter_web_proxy_debug_url_data(web_proxy_debug_url_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -312,7 +311,7 @@ def web_proxy_debug_url(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("web-proxy", "debug-url", data=filtered_data, vdom=vdom) + return fos.set("web-proxy", "debug-url", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_web_proxy_explicit.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_web_proxy_explicit.py index 182e2a1e4..444fb0bcb 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_web_proxy_explicit.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_web_proxy_explicit.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -563,11 +563,10 @@ def web_proxy_explicit(data, fos): vdom = data["vdom"] web_proxy_explicit_data = data["web_proxy_explicit"] web_proxy_explicit_data = flatten_multilists_attributes(web_proxy_explicit_data) - filtered_data = underscore_to_hyphen( - filter_web_proxy_explicit_data(web_proxy_explicit_data) - ) + filtered_data = filter_web_proxy_explicit_data(web_proxy_explicit_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("web-proxy", "explicit", data=filtered_data, vdom=vdom) + return fos.set("web-proxy", "explicit", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_web_proxy_fast_fallback.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_web_proxy_fast_fallback.py index ae403a878..1ba76ac68 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_web_proxy_fast_fallback.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_web_proxy_fast_fallback.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -253,12 +253,11 @@ def web_proxy_fast_fallback(data, fos): state = data["state"] web_proxy_fast_fallback_data = data["web_proxy_fast_fallback"] - filtered_data = underscore_to_hyphen( - filter_web_proxy_fast_fallback_data(web_proxy_fast_fallback_data) - ) + filtered_data = filter_web_proxy_fast_fallback_data(web_proxy_fast_fallback_data) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: - return fos.set("web-proxy", "fast-fallback", data=filtered_data, vdom=vdom) + return fos.set("web-proxy", "fast-fallback", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_web_proxy_forward_server.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_web_proxy_forward_server.py index 1e159ef90..658b3b24f 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_web_proxy_forward_server.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_web_proxy_forward_server.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -120,6 +120,13 @@ options: description: - Forward proxy server IPv6 address. type: str + masquerade: + description: + - Enable/disable use of the of the IP address of the outgoing interface as the client IP address + type: str + choices: + - 'enable' + - 'disable' monitor: description: - 'URL for forward server health check monitoring .' @@ -164,8 +171,9 @@ EXAMPLES = """ healthcheck: "disable" ip: "<your_own_value>" ipv6: "<your_own_value>" + masquerade: "enable" monitor: "<your_own_value>" - name: "default_name_10" + name: "default_name_11" password: "<your_own_value>" port: "3128" server_down_option: "block" @@ -268,6 +276,7 @@ def filter_web_proxy_forward_server_data(json): "healthcheck", "ip", "ipv6", + "masquerade", "monitor", "name", "password", @@ -305,9 +314,8 @@ def web_proxy_forward_server(data, fos, check_mode=False): state = data["state"] web_proxy_forward_server_data = data["web_proxy_forward_server"] - filtered_data = underscore_to_hyphen( - filter_web_proxy_forward_server_data(web_proxy_forward_server_data) - ) + filtered_data = filter_web_proxy_forward_server_data(web_proxy_forward_server_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -371,7 +379,7 @@ def web_proxy_forward_server(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("web-proxy", "forward-server", data=filtered_data, vdom=vdom) + return fos.set("web-proxy", "forward-server", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( @@ -444,6 +452,11 @@ versioned_schema = { "username": {"v_range": [["v6.4.0", ""]], "type": "string"}, "password": {"v_range": [["v6.4.0", ""]], "type": "string"}, "comment": {"v_range": [["v6.0.0", ""]], "type": "string"}, + "masquerade": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, }, "v_range": [["v6.0.0", ""]], } diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_web_proxy_forward_server_group.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_web_proxy_forward_server_group.py index 611e6b332..02ba93fc7 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_web_proxy_forward_server_group.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_web_proxy_forward_server_group.py @@ -39,7 +39,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -272,9 +272,10 @@ def web_proxy_forward_server_group(data, fos, check_mode=False): state = data["state"] web_proxy_forward_server_group_data = data["web_proxy_forward_server_group"] - filtered_data = underscore_to_hyphen( - filter_web_proxy_forward_server_group_data(web_proxy_forward_server_group_data) + filtered_data = filter_web_proxy_forward_server_group_data( + web_proxy_forward_server_group_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -343,7 +344,7 @@ def web_proxy_forward_server_group(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "web-proxy", "forward-server-group", data=filtered_data, vdom=vdom + "web-proxy", "forward-server-group", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_web_proxy_global.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_web_proxy_global.py index 568a41b98..0c003bfae 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_web_proxy_global.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_web_proxy_global.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -143,6 +143,13 @@ options: - Address name. Source firewall.address6.name firewall.addrgrp6.name. required: true type: str + log_app_id: + description: + - Enable/disable always log application type in traffic log. + type: str + choices: + - 'enable' + - 'disable' log_forward_server: description: - Enable/disable forward server name logging in forward traffic log. @@ -150,6 +157,13 @@ options: choices: - 'enable' - 'disable' + log_policy_pending: + description: + - Enable/disable logging sessions that are pending on policy matching. + type: str + choices: + - 'enable' + - 'disable' max_message_length: description: - Maximum length of HTTP message, not including body (16 - 256 Kbytes). @@ -162,6 +176,13 @@ options: description: - Maximum length of HTTP messages processed by Web Application Firewall (WAF) (10 - 1024 Kbytes). type: int + policy_category_deep_inspect: + description: + - Enable/disable deep inspection for application level category policy matching. + type: str + choices: + - 'enable' + - 'disable' proxy_fqdn: description: - Fully Qualified Domain Name (FQDN) that clients connect to to connect to the explicit web proxy. @@ -230,10 +251,13 @@ EXAMPLES = """ learn_client_ip_srcaddr6: - name: "default_name_12 (source firewall.address6.name firewall.addrgrp6.name)" + log_app_id: "enable" log_forward_server: "enable" + log_policy_pending: "enable" max_message_length: "32" max_request_length: "8" max_waf_body_cache_length: "32" + policy_category_deep_inspect: "enable" proxy_fqdn: "<your_own_value>" src_affinity_exempt_addr: "<your_own_value>" src_affinity_exempt_addr6: "<your_own_value>" @@ -334,10 +358,13 @@ def filter_web_proxy_global_data(json): "learn_client_ip_from_header", "learn_client_ip_srcaddr", "learn_client_ip_srcaddr6", + "log_app_id", "log_forward_server", + "log_policy_pending", "max_message_length", "max_request_length", "max_waf_body_cache_length", + "policy_category_deep_inspect", "proxy_fqdn", "src_affinity_exempt_addr", "src_affinity_exempt_addr6", @@ -407,11 +434,10 @@ def web_proxy_global(data, fos): vdom = data["vdom"] web_proxy_global_data = data["web_proxy_global"] web_proxy_global_data = flatten_multilists_attributes(web_proxy_global_data) - filtered_data = underscore_to_hyphen( - filter_web_proxy_global_data(web_proxy_global_data) - ) + filtered_data = filter_web_proxy_global_data(web_proxy_global_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("web-proxy", "global", data=filtered_data, vdom=vdom) + return fos.set("web-proxy", "global", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -529,11 +555,26 @@ versioned_schema = { "multiple_values": True, "elements": "str", }, + "policy_category_deep_inspect": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "log_policy_pending": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "log_forward_server": { "v_range": [["v7.4.0", ""]], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "log_app_id": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "tunnel_non_http": { "v_range": [["v6.0.0", "v6.2.7"]], "type": "string", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_web_proxy_profile.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_web_proxy_profile.py index 219ec16b4..9a2022511 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_web_proxy_profile.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_web_proxy_profile.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -446,9 +446,8 @@ def web_proxy_profile(data, fos, check_mode=False): web_proxy_profile_data = data["web_proxy_profile"] web_proxy_profile_data = flatten_multilists_attributes(web_proxy_profile_data) - filtered_data = underscore_to_hyphen( - filter_web_proxy_profile_data(web_proxy_profile_data) - ) + filtered_data = filter_web_proxy_profile_data(web_proxy_profile_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -512,7 +511,7 @@ def web_proxy_profile(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("web-proxy", "profile", data=filtered_data, vdom=vdom) + return fos.set("web-proxy", "profile", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("web-proxy", "profile", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_web_proxy_url_match.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_web_proxy_url_match.py index 4a2972f77..b79916161 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_web_proxy_url_match.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_web_proxy_url_match.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -269,9 +269,8 @@ def web_proxy_url_match(data, fos, check_mode=False): state = data["state"] web_proxy_url_match_data = data["web_proxy_url_match"] - filtered_data = underscore_to_hyphen( - filter_web_proxy_url_match_data(web_proxy_url_match_data) - ) + filtered_data = filter_web_proxy_url_match_data(web_proxy_url_match_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -335,7 +334,7 @@ def web_proxy_url_match(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("web-proxy", "url-match", data=filtered_data, vdom=vdom) + return fos.set("web-proxy", "url-match", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_web_proxy_wisp.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_web_proxy_wisp.py index 348d07302..102818b2b 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_web_proxy_wisp.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_web_proxy_wisp.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -263,9 +263,8 @@ def web_proxy_wisp(data, fos, check_mode=False): state = data["state"] web_proxy_wisp_data = data["web_proxy_wisp"] - filtered_data = underscore_to_hyphen( - filter_web_proxy_wisp_data(web_proxy_wisp_data) - ) + filtered_data = filter_web_proxy_wisp_data(web_proxy_wisp_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -329,7 +328,7 @@ def web_proxy_wisp(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("web-proxy", "wisp", data=filtered_data, vdom=vdom) + return fos.set("web-proxy", "wisp", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("web-proxy", "wisp", mkey=filtered_data["name"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_webfilter_content.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_webfilter_content.py index 2e5ea2f25..0f5748d90 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_webfilter_content.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_webfilter_content.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -295,9 +295,8 @@ def webfilter_content(data, fos, check_mode=False): state = data["state"] webfilter_content_data = data["webfilter_content"] - filtered_data = underscore_to_hyphen( - filter_webfilter_content_data(webfilter_content_data) - ) + filtered_data = filter_webfilter_content_data(webfilter_content_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -361,7 +360,7 @@ def webfilter_content(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("webfilter", "content", data=filtered_data, vdom=vdom) + return fos.set("webfilter", "content", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("webfilter", "content", mkey=filtered_data["id"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_webfilter_content_header.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_webfilter_content_header.py index e1d193a9f..429e02918 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_webfilter_content_header.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_webfilter_content_header.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -298,9 +298,8 @@ def webfilter_content_header(data, fos, check_mode=False): webfilter_content_header_data = flatten_multilists_attributes( webfilter_content_header_data ) - filtered_data = underscore_to_hyphen( - filter_webfilter_content_header_data(webfilter_content_header_data) - ) + filtered_data = filter_webfilter_content_header_data(webfilter_content_header_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -364,7 +363,7 @@ def webfilter_content_header(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("webfilter", "content-header", data=filtered_data, vdom=vdom) + return fos.set("webfilter", "content-header", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_webfilter_fortiguard.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_webfilter_fortiguard.py index c3ebc4393..661e8dbd6 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_webfilter_fortiguard.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_webfilter_fortiguard.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -300,11 +300,10 @@ def underscore_to_hyphen(data): def webfilter_fortiguard(data, fos): vdom = data["vdom"] webfilter_fortiguard_data = data["webfilter_fortiguard"] - filtered_data = underscore_to_hyphen( - filter_webfilter_fortiguard_data(webfilter_fortiguard_data) - ) + filtered_data = filter_webfilter_fortiguard_data(webfilter_fortiguard_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("webfilter", "fortiguard", data=filtered_data, vdom=vdom) + return fos.set("webfilter", "fortiguard", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_webfilter_ftgd_local_cat.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_webfilter_ftgd_local_cat.py index 051839c26..45f457e13 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_webfilter_ftgd_local_cat.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_webfilter_ftgd_local_cat.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -238,9 +238,8 @@ def webfilter_ftgd_local_cat(data, fos, check_mode=False): state = data["state"] webfilter_ftgd_local_cat_data = data["webfilter_ftgd_local_cat"] - filtered_data = underscore_to_hyphen( - filter_webfilter_ftgd_local_cat_data(webfilter_ftgd_local_cat_data) - ) + filtered_data = filter_webfilter_ftgd_local_cat_data(webfilter_ftgd_local_cat_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -304,7 +303,7 @@ def webfilter_ftgd_local_cat(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("webfilter", "ftgd-local-cat", data=filtered_data, vdom=vdom) + return fos.set("webfilter", "ftgd-local-cat", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_webfilter_ftgd_local_rating.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_webfilter_ftgd_local_rating.py index bd2bcb1ec..819f22ed8 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_webfilter_ftgd_local_rating.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_webfilter_ftgd_local_rating.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -243,9 +243,10 @@ def webfilter_ftgd_local_rating(data, fos, check_mode=False): state = data["state"] webfilter_ftgd_local_rating_data = data["webfilter_ftgd_local_rating"] - filtered_data = underscore_to_hyphen( - filter_webfilter_ftgd_local_rating_data(webfilter_ftgd_local_rating_data) + filtered_data = filter_webfilter_ftgd_local_rating_data( + webfilter_ftgd_local_rating_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -309,7 +310,7 @@ def webfilter_ftgd_local_rating(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("webfilter", "ftgd-local-rating", data=filtered_data, vdom=vdom) + return fos.set("webfilter", "ftgd-local-rating", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_webfilter_ips_urlfilter_cache_setting.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_webfilter_ips_urlfilter_cache_setting.py index f59a1fa1c..12dbb0c83 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_webfilter_ips_urlfilter_cache_setting.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_webfilter_ips_urlfilter_cache_setting.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -209,14 +209,13 @@ def webfilter_ips_urlfilter_cache_setting(data, fos): webfilter_ips_urlfilter_cache_setting_data = data[ "webfilter_ips_urlfilter_cache_setting" ] - filtered_data = underscore_to_hyphen( - filter_webfilter_ips_urlfilter_cache_setting_data( - webfilter_ips_urlfilter_cache_setting_data - ) + filtered_data = filter_webfilter_ips_urlfilter_cache_setting_data( + webfilter_ips_urlfilter_cache_setting_data ) + converted_data = underscore_to_hyphen(filtered_data) return fos.set( - "webfilter", "ips-urlfilter-cache-setting", data=filtered_data, vdom=vdom + "webfilter", "ips-urlfilter-cache-setting", data=converted_data, vdom=vdom ) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_webfilter_ips_urlfilter_setting.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_webfilter_ips_urlfilter_setting.py index f13f27324..dbf3b21d8 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_webfilter_ips_urlfilter_setting.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_webfilter_ips_urlfilter_setting.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -217,13 +217,12 @@ def underscore_to_hyphen(data): def webfilter_ips_urlfilter_setting(data, fos): vdom = data["vdom"] webfilter_ips_urlfilter_setting_data = data["webfilter_ips_urlfilter_setting"] - filtered_data = underscore_to_hyphen( - filter_webfilter_ips_urlfilter_setting_data( - webfilter_ips_urlfilter_setting_data - ) + filtered_data = filter_webfilter_ips_urlfilter_setting_data( + webfilter_ips_urlfilter_setting_data ) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("webfilter", "ips-urlfilter-setting", data=filtered_data, vdom=vdom) + return fos.set("webfilter", "ips-urlfilter-setting", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_webfilter_ips_urlfilter_setting6.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_webfilter_ips_urlfilter_setting6.py index 261046752..3ba6c6cb1 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_webfilter_ips_urlfilter_setting6.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_webfilter_ips_urlfilter_setting6.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -217,13 +217,14 @@ def underscore_to_hyphen(data): def webfilter_ips_urlfilter_setting6(data, fos): vdom = data["vdom"] webfilter_ips_urlfilter_setting6_data = data["webfilter_ips_urlfilter_setting6"] - filtered_data = underscore_to_hyphen( - filter_webfilter_ips_urlfilter_setting6_data( - webfilter_ips_urlfilter_setting6_data - ) + filtered_data = filter_webfilter_ips_urlfilter_setting6_data( + webfilter_ips_urlfilter_setting6_data ) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("webfilter", "ips-urlfilter-setting6", data=filtered_data, vdom=vdom) + return fos.set( + "webfilter", "ips-urlfilter-setting6", data=converted_data, vdom=vdom + ) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_webfilter_override.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_webfilter_override.py index b6ad041be..21495cf27 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_webfilter_override.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_webfilter_override.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -297,9 +297,8 @@ def webfilter_override(data, fos, check_mode=False): state = data["state"] webfilter_override_data = data["webfilter_override"] - filtered_data = underscore_to_hyphen( - filter_webfilter_override_data(webfilter_override_data) - ) + filtered_data = filter_webfilter_override_data(webfilter_override_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -363,7 +362,7 @@ def webfilter_override(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("webfilter", "override", data=filtered_data, vdom=vdom) + return fos.set("webfilter", "override", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("webfilter", "override", mkey=filtered_data["id"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_webfilter_profile.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_webfilter_profile.py index dca59a1d3..5221eaa4b 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_webfilter_profile.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_webfilter_profile.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -838,6 +838,13 @@ options: choices: - 'enable' - 'disable' + web_flow_log_encoding: + description: + - Log encoding in flow mode. + type: str + choices: + - 'utf-8' + - 'punycode' web_ftgd_err_log: description: - Enable/disable logging rating errors. @@ -1053,6 +1060,7 @@ EXAMPLES = """ web_filter_referer_log: "enable" web_filter_unknown_log: "enable" web_filter_vbs_log: "enable" + web_flow_log_encoding: "utf-8" web_ftgd_err_log: "enable" web_ftgd_quota_usage: "enable" web_invalid_domain_log: "enable" @@ -1061,12 +1069,12 @@ EXAMPLES = """ wisp_algorithm: "primary-secondary" wisp_servers: - - name: "default_name_125 (source web-proxy.wisp.name)" + name: "default_name_126 (source web-proxy.wisp.name)" youtube_channel_filter: - channel_id: "<your_own_value>" comment: "Comment." - id: "129" + id: "130" youtube_channel_status: "disable" """ @@ -1190,6 +1198,7 @@ def filter_webfilter_profile_data(json): "web_filter_referer_log", "web_filter_unknown_log", "web_filter_vbs_log", + "web_flow_log_encoding", "web_ftgd_err_log", "web_ftgd_quota_usage", "web_invalid_domain_log", @@ -1270,9 +1279,8 @@ def webfilter_profile(data, fos, check_mode=False): webfilter_profile_data = data["webfilter_profile"] webfilter_profile_data = flatten_multilists_attributes(webfilter_profile_data) - filtered_data = underscore_to_hyphen( - filter_webfilter_profile_data(webfilter_profile_data) - ) + filtered_data = filter_webfilter_profile_data(webfilter_profile_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -1336,7 +1344,7 @@ def webfilter_profile(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("webfilter", "profile", data=filtered_data, vdom=vdom) + return fos.set("webfilter", "profile", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("webfilter", "profile", mkey=filtered_data["name"], vdom=vdom) @@ -1411,6 +1419,11 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "web_flow_log_encoding": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "utf-8"}, {"value": "punycode"}], + }, "ovrd_perm": { "v_range": [["v6.0.0", ""]], "type": "list", @@ -1960,28 +1973,48 @@ versioned_schema = { "options": [{"value": "enable"}, {"value": "disable"}], }, "url_extraction": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"], ["v7.4.3", ""]], "type": "dict", "children": { "status": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, "server_fqdn": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "string", }, "redirect_header": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "string", }, "redirect_url": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "string", }, "redirect_no_content": { - "v_range": [["v6.0.0", "v7.0.8"], ["v7.2.0", "v7.2.4"]], + "v_range": [ + ["v6.0.0", "v7.0.8"], + ["v7.2.0", "v7.2.4"], + ["v7.4.3", ""], + ], "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_webfilter_search_engine.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_webfilter_search_engine.py index 543997e90..384a49f38 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_webfilter_search_engine.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_webfilter_search_engine.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -276,9 +276,8 @@ def webfilter_search_engine(data, fos, check_mode=False): state = data["state"] webfilter_search_engine_data = data["webfilter_search_engine"] - filtered_data = underscore_to_hyphen( - filter_webfilter_search_engine_data(webfilter_search_engine_data) - ) + filtered_data = filter_webfilter_search_engine_data(webfilter_search_engine_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -342,7 +341,7 @@ def webfilter_search_engine(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("webfilter", "search-engine", data=filtered_data, vdom=vdom) + return fos.set("webfilter", "search-engine", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_webfilter_status.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_webfilter_status.py index f344cbe96..6764d7f4b 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_webfilter_status.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_webfilter_status.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -200,9 +200,9 @@ def underscore_to_hyphen(data): def valid_attr_to_invalid_attr(data): - specillist = {"<refresh_rate>": "refresh_rate"} + speciallist = {"<refresh_rate>": "refresh_rate"} - for k, v in specillist.items(): + for k, v in speciallist.items(): if v == data: return k @@ -211,8 +211,11 @@ def valid_attr_to_invalid_attr(data): def valid_attr_to_invalid_attrs(data): if isinstance(data, list): + new_data = [] for elem in data: elem = valid_attr_to_invalid_attrs(elem) + new_data.append(elem) + data = new_data elif isinstance(data, dict): new_data = {} for k, v in data.items(): @@ -225,10 +228,8 @@ def valid_attr_to_invalid_attrs(data): def webfilter_status(data, fos): vdom = data["vdom"] webfilter_status_data = data["webfilter_status"] - filtered_data = underscore_to_hyphen( - filter_webfilter_status_data(webfilter_status_data) - ) - converted_data = valid_attr_to_invalid_attrs(filtered_data) + filtered_data = filter_webfilter_status_data(webfilter_status_data) + converted_data = underscore_to_hyphen(valid_attr_to_invalid_attrs(filtered_data)) return fos.set("webfilter", "status", data=converted_data, vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_webfilter_urlfilter.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_webfilter_urlfilter.py index 97149cd12..c55c1dbbc 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_webfilter_urlfilter.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_webfilter_urlfilter.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -388,9 +388,8 @@ def webfilter_urlfilter(data, fos, check_mode=False): webfilter_urlfilter_data = data["webfilter_urlfilter"] webfilter_urlfilter_data = flatten_multilists_attributes(webfilter_urlfilter_data) - filtered_data = underscore_to_hyphen( - filter_webfilter_urlfilter_data(webfilter_urlfilter_data) - ) + filtered_data = filter_webfilter_urlfilter_data(webfilter_urlfilter_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -454,7 +453,7 @@ def webfilter_urlfilter(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("webfilter", "urlfilter", data=filtered_data, vdom=vdom) + return fos.set("webfilter", "urlfilter", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete("webfilter", "urlfilter", mkey=filtered_data["id"], vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_access_control_list.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_access_control_list.py index 2975d060c..c7bb0dbe7 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_access_control_list.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_access_control_list.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -336,11 +336,10 @@ def wireless_controller_access_control_list(data, fos, check_mode=False): wireless_controller_access_control_list_data = data[ "wireless_controller_access_control_list" ] - filtered_data = underscore_to_hyphen( - filter_wireless_controller_access_control_list_data( - wireless_controller_access_control_list_data - ) + filtered_data = filter_wireless_controller_access_control_list_data( + wireless_controller_access_control_list_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -409,7 +408,7 @@ def wireless_controller_access_control_list(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "wireless-controller", "access-control-list", data=filtered_data, vdom=vdom + "wireless-controller", "access-control-list", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_address.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_address.py index 8a566106a..7676941c8 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_address.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_address.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -238,9 +238,10 @@ def wireless_controller_address(data, fos, check_mode=False): state = data["state"] wireless_controller_address_data = data["wireless_controller_address"] - filtered_data = underscore_to_hyphen( - filter_wireless_controller_address_data(wireless_controller_address_data) + filtered_data = filter_wireless_controller_address_data( + wireless_controller_address_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -304,7 +305,7 @@ def wireless_controller_address(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("wireless-controller", "address", data=filtered_data, vdom=vdom) + return fos.set("wireless-controller", "address", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_addrgrp.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_addrgrp.py index 306694f3e..b5f8c1509 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_addrgrp.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_addrgrp.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -247,9 +247,10 @@ def wireless_controller_addrgrp(data, fos, check_mode=False): state = data["state"] wireless_controller_addrgrp_data = data["wireless_controller_addrgrp"] - filtered_data = underscore_to_hyphen( - filter_wireless_controller_addrgrp_data(wireless_controller_addrgrp_data) + filtered_data = filter_wireless_controller_addrgrp_data( + wireless_controller_addrgrp_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -313,7 +314,7 @@ def wireless_controller_addrgrp(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("wireless-controller", "addrgrp", data=filtered_data, vdom=vdom) + return fos.set("wireless-controller", "addrgrp", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_ap_status.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_ap_status.py index 286020ef9..0d4b08e44 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_ap_status.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_ap_status.py @@ -40,7 +40,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -246,9 +246,10 @@ def wireless_controller_ap_status(data, fos, check_mode=False): state = data["state"] wireless_controller_ap_status_data = data["wireless_controller_ap_status"] - filtered_data = underscore_to_hyphen( - filter_wireless_controller_ap_status_data(wireless_controller_ap_status_data) + filtered_data = filter_wireless_controller_ap_status_data( + wireless_controller_ap_status_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -315,7 +316,7 @@ def wireless_controller_ap_status(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "wireless-controller", "ap-status", data=filtered_data, vdom=vdom + "wireless-controller", "ap-status", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_apcfg_profile.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_apcfg_profile.py index 1a57bae97..7a01059e4 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_apcfg_profile.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_apcfg_profile.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -165,7 +165,7 @@ EXAMPLES = """ access_token: "<your_own_value>" wireless_controller_apcfg_profile: ac_ip: "<your_own_value>" - ac_port: "0" + ac_port: "5246" ac_timer: "10" ac_type: "default" ap_family: "fap" @@ -309,11 +309,10 @@ def wireless_controller_apcfg_profile(data, fos, check_mode=False): state = data["state"] wireless_controller_apcfg_profile_data = data["wireless_controller_apcfg_profile"] - filtered_data = underscore_to_hyphen( - filter_wireless_controller_apcfg_profile_data( - wireless_controller_apcfg_profile_data - ) + filtered_data = filter_wireless_controller_apcfg_profile_data( + wireless_controller_apcfg_profile_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -382,7 +381,7 @@ def wireless_controller_apcfg_profile(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "wireless-controller", "apcfg-profile", data=filtered_data, vdom=vdom + "wireless-controller", "apcfg-profile", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_arrp_profile.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_arrp_profile.py index a05842787..1ea705e85 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_arrp_profile.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_arrp_profile.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -376,11 +376,10 @@ def wireless_controller_arrp_profile(data, fos, check_mode=False): state = data["state"] wireless_controller_arrp_profile_data = data["wireless_controller_arrp_profile"] - filtered_data = underscore_to_hyphen( - filter_wireless_controller_arrp_profile_data( - wireless_controller_arrp_profile_data - ) + filtered_data = filter_wireless_controller_arrp_profile_data( + wireless_controller_arrp_profile_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -449,7 +448,7 @@ def wireless_controller_arrp_profile(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "wireless-controller", "arrp-profile", data=filtered_data, vdom=vdom + "wireless-controller", "arrp-profile", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_ble_profile.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_ble_profile.py index aaa6f6584..4c7db65f4 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_ble_profile.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_ble_profile.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -392,11 +392,10 @@ def wireless_controller_ble_profile(data, fos, check_mode=False): wireless_controller_ble_profile_data = flatten_multilists_attributes( wireless_controller_ble_profile_data ) - filtered_data = underscore_to_hyphen( - filter_wireless_controller_ble_profile_data( - wireless_controller_ble_profile_data - ) + filtered_data = filter_wireless_controller_ble_profile_data( + wireless_controller_ble_profile_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -465,7 +464,7 @@ def wireless_controller_ble_profile(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "wireless-controller", "ble-profile", data=filtered_data, vdom=vdom + "wireless-controller", "ble-profile", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_bonjour_profile.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_bonjour_profile.py index 4aba492eb..25efb6e10 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_bonjour_profile.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_bonjour_profile.py @@ -39,7 +39,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -316,11 +316,10 @@ def wireless_controller_bonjour_profile(data, fos, check_mode=False): wireless_controller_bonjour_profile_data = flatten_multilists_attributes( wireless_controller_bonjour_profile_data ) - filtered_data = underscore_to_hyphen( - filter_wireless_controller_bonjour_profile_data( - wireless_controller_bonjour_profile_data - ) + filtered_data = filter_wireless_controller_bonjour_profile_data( + wireless_controller_bonjour_profile_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -389,7 +388,7 @@ def wireless_controller_bonjour_profile(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "wireless-controller", "bonjour-profile", data=filtered_data, vdom=vdom + "wireless-controller", "bonjour-profile", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_client_info.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_client_info.py index 4d153e3c4..25c59e38e 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_client_info.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_client_info.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -200,9 +200,9 @@ def underscore_to_hyphen(data): def valid_attr_to_invalid_attr(data): - specillist = {"<vfid>": "vfid"} + speciallist = {"<vfid>": "vfid"} - for k, v in specillist.items(): + for k, v in speciallist.items(): if v == data: return k @@ -211,8 +211,11 @@ def valid_attr_to_invalid_attr(data): def valid_attr_to_invalid_attrs(data): if isinstance(data, list): + new_data = [] for elem in data: elem = valid_attr_to_invalid_attrs(elem) + new_data.append(elem) + data = new_data elif isinstance(data, dict): new_data = {} for k, v in data.items(): @@ -225,12 +228,10 @@ def valid_attr_to_invalid_attrs(data): def wireless_controller_client_info(data, fos, check_mode=False): vdom = data["vdom"] wireless_controller_client_info_data = data["wireless_controller_client_info"] - filtered_data = underscore_to_hyphen( - filter_wireless_controller_client_info_data( - wireless_controller_client_info_data - ) + filtered_data = filter_wireless_controller_client_info_data( + wireless_controller_client_info_data ) - converted_data = valid_attr_to_invalid_attrs(filtered_data) + converted_data = underscore_to_hyphen(valid_attr_to_invalid_attrs(filtered_data)) return fos.set("wireless-controller", "client-info", data=converted_data, vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_global.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_global.py index 177def4d0..819844409 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_global.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_global.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -182,6 +182,17 @@ options: description: - Maximum numerical difference between an AP"s Ethernet and wireless MAC values to match for rogue detection (0 - 31). type: int + rolling_wtp_upgrade: + description: + - Enable/disable rolling WTP upgrade . + type: str + choices: + - 'enable' + - 'disable' + rolling_wtp_upgrade_threshold: + description: + - Minimum signal level/threshold in dBm required for the managed WTP to be included in rolling WTP upgrade (-95 to -20). + type: str tunnel_mode: description: - Compatible/strict tunnel mode. @@ -226,6 +237,8 @@ EXAMPLES = """ nac_interval: "120" name: "default_name_20" rogue_scan_mac_adjacency: "7" + rolling_wtp_upgrade: "enable" + rolling_wtp_upgrade_threshold: "<your_own_value>" tunnel_mode: "compatible" wpad_process_count: "0" wtp_share: "enable" @@ -331,6 +344,8 @@ def filter_wireless_controller_global_data(json): "nac_interval", "name", "rogue_scan_mac_adjacency", + "rolling_wtp_upgrade", + "rolling_wtp_upgrade_threshold", "tunnel_mode", "wpad_process_count", "wtp_share", @@ -394,11 +409,12 @@ def wireless_controller_global(data, fos): wireless_controller_global_data = flatten_multilists_attributes( wireless_controller_global_data ) - filtered_data = underscore_to_hyphen( - filter_wireless_controller_global_data(wireless_controller_global_data) + filtered_data = filter_wireless_controller_global_data( + wireless_controller_global_data ) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("wireless-controller", "global", data=filtered_data, vdom=vdom) + return fos.set("wireless-controller", "global", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -444,6 +460,15 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "rolling_wtp_upgrade": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, + "rolling_wtp_upgrade_threshold": { + "v_range": [["v7.4.2", ""]], + "type": "string", + }, "max_retransmit": {"v_range": [["v6.0.0", ""]], "type": "integer"}, "control_message_offload": { "v_range": [["v6.0.0", ""]], diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_anqp_3gpp_cellular.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_anqp_3gpp_cellular.py index 3053fd88d..1d16d77d8 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_anqp_3gpp_cellular.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_anqp_3gpp_cellular.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -251,11 +251,10 @@ def wireless_controller_hotspot20_anqp_3gpp_cellular(data, fos, check_mode=False wireless_controller_hotspot20_anqp_3gpp_cellular_data = data[ "wireless_controller_hotspot20_anqp_3gpp_cellular" ] - filtered_data = underscore_to_hyphen( - filter_wireless_controller_hotspot20_anqp_3gpp_cellular_data( - wireless_controller_hotspot20_anqp_3gpp_cellular_data - ) + filtered_data = filter_wireless_controller_hotspot20_anqp_3gpp_cellular_data( + wireless_controller_hotspot20_anqp_3gpp_cellular_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -329,7 +328,7 @@ def wireless_controller_hotspot20_anqp_3gpp_cellular(data, fos, check_mode=False return fos.set( "wireless-controller.hotspot20", "anqp-3gpp-cellular", - data=filtered_data, + data=converted_data, vdom=vdom, ) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_anqp_ip_address_type.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_anqp_ip_address_type.py index c40a41472..689715887 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_anqp_ip_address_type.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_anqp_ip_address_type.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -250,11 +250,10 @@ def wireless_controller_hotspot20_anqp_ip_address_type(data, fos, check_mode=Fal wireless_controller_hotspot20_anqp_ip_address_type_data = data[ "wireless_controller_hotspot20_anqp_ip_address_type" ] - filtered_data = underscore_to_hyphen( - filter_wireless_controller_hotspot20_anqp_ip_address_type_data( - wireless_controller_hotspot20_anqp_ip_address_type_data - ) + filtered_data = filter_wireless_controller_hotspot20_anqp_ip_address_type_data( + wireless_controller_hotspot20_anqp_ip_address_type_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -331,7 +330,7 @@ def wireless_controller_hotspot20_anqp_ip_address_type(data, fos, check_mode=Fal return fos.set( "wireless-controller.hotspot20", "anqp-ip-address-type", - data=filtered_data, + data=converted_data, vdom=vdom, ) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_anqp_nai_realm.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_anqp_nai_realm.py index f2e2bc0e3..a8b99a918 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_anqp_nai_realm.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_anqp_nai_realm.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -342,11 +342,10 @@ def wireless_controller_hotspot20_anqp_nai_realm(data, fos, check_mode=False): wireless_controller_hotspot20_anqp_nai_realm_data = data[ "wireless_controller_hotspot20_anqp_nai_realm" ] - filtered_data = underscore_to_hyphen( - filter_wireless_controller_hotspot20_anqp_nai_realm_data( - wireless_controller_hotspot20_anqp_nai_realm_data - ) + filtered_data = filter_wireless_controller_hotspot20_anqp_nai_realm_data( + wireless_controller_hotspot20_anqp_nai_realm_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -417,7 +416,7 @@ def wireless_controller_hotspot20_anqp_nai_realm(data, fos, check_mode=False): return fos.set( "wireless-controller.hotspot20", "anqp-nai-realm", - data=filtered_data, + data=converted_data, vdom=vdom, ) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_anqp_network_auth_type.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_anqp_network_auth_type.py index e599707cd..a0b949877 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_anqp_network_auth_type.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_anqp_network_auth_type.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -242,11 +242,10 @@ def wireless_controller_hotspot20_anqp_network_auth_type(data, fos, check_mode=F wireless_controller_hotspot20_anqp_network_auth_type_data = data[ "wireless_controller_hotspot20_anqp_network_auth_type" ] - filtered_data = underscore_to_hyphen( - filter_wireless_controller_hotspot20_anqp_network_auth_type_data( - wireless_controller_hotspot20_anqp_network_auth_type_data - ) + filtered_data = filter_wireless_controller_hotspot20_anqp_network_auth_type_data( + wireless_controller_hotspot20_anqp_network_auth_type_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -323,7 +322,7 @@ def wireless_controller_hotspot20_anqp_network_auth_type(data, fos, check_mode=F return fos.set( "wireless-controller.hotspot20", "anqp-network-auth-type", - data=filtered_data, + data=converted_data, vdom=vdom, ) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_anqp_roaming_consortium.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_anqp_roaming_consortium.py index c6da46b98..0eadb6bf4 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_anqp_roaming_consortium.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_anqp_roaming_consortium.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -251,11 +251,10 @@ def wireless_controller_hotspot20_anqp_roaming_consortium(data, fos, check_mode= wireless_controller_hotspot20_anqp_roaming_consortium_data = data[ "wireless_controller_hotspot20_anqp_roaming_consortium" ] - filtered_data = underscore_to_hyphen( - filter_wireless_controller_hotspot20_anqp_roaming_consortium_data( - wireless_controller_hotspot20_anqp_roaming_consortium_data - ) + filtered_data = filter_wireless_controller_hotspot20_anqp_roaming_consortium_data( + wireless_controller_hotspot20_anqp_roaming_consortium_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -332,7 +331,7 @@ def wireless_controller_hotspot20_anqp_roaming_consortium(data, fos, check_mode= return fos.set( "wireless-controller.hotspot20", "anqp-roaming-consortium", - data=filtered_data, + data=converted_data, vdom=vdom, ) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_anqp_venue_name.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_anqp_venue_name.py index 2d70bf96a..da8894141 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_anqp_venue_name.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_anqp_venue_name.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -251,11 +251,10 @@ def wireless_controller_hotspot20_anqp_venue_name(data, fos, check_mode=False): wireless_controller_hotspot20_anqp_venue_name_data = data[ "wireless_controller_hotspot20_anqp_venue_name" ] - filtered_data = underscore_to_hyphen( - filter_wireless_controller_hotspot20_anqp_venue_name_data( - wireless_controller_hotspot20_anqp_venue_name_data - ) + filtered_data = filter_wireless_controller_hotspot20_anqp_venue_name_data( + wireless_controller_hotspot20_anqp_venue_name_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -326,7 +325,7 @@ def wireless_controller_hotspot20_anqp_venue_name(data, fos, check_mode=False): return fos.set( "wireless-controller.hotspot20", "anqp-venue-name", - data=filtered_data, + data=converted_data, vdom=vdom, ) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_anqp_venue_url.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_anqp_venue_url.py index 03d72ed4b..1a00301b8 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_anqp_venue_url.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_anqp_venue_url.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -242,17 +242,16 @@ def wireless_controller_hotspot20_anqp_venue_url(data, fos): wireless_controller_hotspot20_anqp_venue_url_data = data[ "wireless_controller_hotspot20_anqp_venue_url" ] - filtered_data = underscore_to_hyphen( - filter_wireless_controller_hotspot20_anqp_venue_url_data( - wireless_controller_hotspot20_anqp_venue_url_data - ) + filtered_data = filter_wireless_controller_hotspot20_anqp_venue_url_data( + wireless_controller_hotspot20_anqp_venue_url_data ) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: return fos.set( "wireless-controller.hotspot20", "anqp-venue-url", - data=filtered_data, + data=converted_data, vdom=vdom, ) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_h2qp_advice_of_charge.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_h2qp_advice_of_charge.py index 4d66717a5..5f302c997 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_h2qp_advice_of_charge.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_h2qp_advice_of_charge.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -281,17 +281,16 @@ def wireless_controller_hotspot20_h2qp_advice_of_charge(data, fos): wireless_controller_hotspot20_h2qp_advice_of_charge_data = data[ "wireless_controller_hotspot20_h2qp_advice_of_charge" ] - filtered_data = underscore_to_hyphen( - filter_wireless_controller_hotspot20_h2qp_advice_of_charge_data( - wireless_controller_hotspot20_h2qp_advice_of_charge_data - ) + filtered_data = filter_wireless_controller_hotspot20_h2qp_advice_of_charge_data( + wireless_controller_hotspot20_h2qp_advice_of_charge_data ) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: return fos.set( "wireless-controller.hotspot20", "h2qp-advice-of-charge", - data=filtered_data, + data=converted_data, vdom=vdom, ) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_h2qp_conn_capability.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_h2qp_conn_capability.py index 62fc517a6..bd5d15947 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_h2qp_conn_capability.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_h2qp_conn_capability.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -339,11 +339,10 @@ def wireless_controller_hotspot20_h2qp_conn_capability(data, fos, check_mode=Fal wireless_controller_hotspot20_h2qp_conn_capability_data = data[ "wireless_controller_hotspot20_h2qp_conn_capability" ] - filtered_data = underscore_to_hyphen( - filter_wireless_controller_hotspot20_h2qp_conn_capability_data( - wireless_controller_hotspot20_h2qp_conn_capability_data - ) + filtered_data = filter_wireless_controller_hotspot20_h2qp_conn_capability_data( + wireless_controller_hotspot20_h2qp_conn_capability_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -420,7 +419,7 @@ def wireless_controller_hotspot20_h2qp_conn_capability(data, fos, check_mode=Fal return fos.set( "wireless-controller.hotspot20", "h2qp-conn-capability", - data=filtered_data, + data=converted_data, vdom=vdom, ) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_h2qp_operator_name.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_h2qp_operator_name.py index 3dd744e6d..e3ed1d033 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_h2qp_operator_name.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_h2qp_operator_name.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -251,11 +251,10 @@ def wireless_controller_hotspot20_h2qp_operator_name(data, fos, check_mode=False wireless_controller_hotspot20_h2qp_operator_name_data = data[ "wireless_controller_hotspot20_h2qp_operator_name" ] - filtered_data = underscore_to_hyphen( - filter_wireless_controller_hotspot20_h2qp_operator_name_data( - wireless_controller_hotspot20_h2qp_operator_name_data - ) + filtered_data = filter_wireless_controller_hotspot20_h2qp_operator_name_data( + wireless_controller_hotspot20_h2qp_operator_name_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -329,7 +328,7 @@ def wireless_controller_hotspot20_h2qp_operator_name(data, fos, check_mode=False return fos.set( "wireless-controller.hotspot20", "h2qp-operator-name", - data=filtered_data, + data=converted_data, vdom=vdom, ) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_h2qp_osu_provider.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_h2qp_osu_provider.py index 4c8784f51..a0fcd5dd4 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_h2qp_osu_provider.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_h2qp_osu_provider.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -342,11 +342,10 @@ def wireless_controller_hotspot20_h2qp_osu_provider(data, fos, check_mode=False) wireless_controller_hotspot20_h2qp_osu_provider_data ) ) - filtered_data = underscore_to_hyphen( - filter_wireless_controller_hotspot20_h2qp_osu_provider_data( - wireless_controller_hotspot20_h2qp_osu_provider_data - ) + filtered_data = filter_wireless_controller_hotspot20_h2qp_osu_provider_data( + wireless_controller_hotspot20_h2qp_osu_provider_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -420,7 +419,7 @@ def wireless_controller_hotspot20_h2qp_osu_provider(data, fos, check_mode=False) return fos.set( "wireless-controller.hotspot20", "h2qp-osu-provider", - data=filtered_data, + data=converted_data, vdom=vdom, ) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_h2qp_osu_provider_nai.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_h2qp_osu_provider_nai.py index 56d527a7d..e2b9f96a7 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_h2qp_osu_provider_nai.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_h2qp_osu_provider_nai.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -237,17 +237,16 @@ def wireless_controller_hotspot20_h2qp_osu_provider_nai(data, fos): wireless_controller_hotspot20_h2qp_osu_provider_nai_data = data[ "wireless_controller_hotspot20_h2qp_osu_provider_nai" ] - filtered_data = underscore_to_hyphen( - filter_wireless_controller_hotspot20_h2qp_osu_provider_nai_data( - wireless_controller_hotspot20_h2qp_osu_provider_nai_data - ) + filtered_data = filter_wireless_controller_hotspot20_h2qp_osu_provider_nai_data( + wireless_controller_hotspot20_h2qp_osu_provider_nai_data ) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: return fos.set( "wireless-controller.hotspot20", "h2qp-osu-provider-nai", - data=filtered_data, + data=converted_data, vdom=vdom, ) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_h2qp_terms_and_conditions.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_h2qp_terms_and_conditions.py index e914d99cd..c9da9caf8 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_h2qp_terms_and_conditions.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_h2qp_terms_and_conditions.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -233,17 +233,16 @@ def wireless_controller_hotspot20_h2qp_terms_and_conditions(data, fos): wireless_controller_hotspot20_h2qp_terms_and_conditions_data = data[ "wireless_controller_hotspot20_h2qp_terms_and_conditions" ] - filtered_data = underscore_to_hyphen( - filter_wireless_controller_hotspot20_h2qp_terms_and_conditions_data( - wireless_controller_hotspot20_h2qp_terms_and_conditions_data - ) + filtered_data = filter_wireless_controller_hotspot20_h2qp_terms_and_conditions_data( + wireless_controller_hotspot20_h2qp_terms_and_conditions_data ) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: return fos.set( "wireless-controller.hotspot20", "h2qp-terms-and-conditions", - data=filtered_data, + data=converted_data, vdom=vdom, ) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_h2qp_wan_metric.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_h2qp_wan_metric.py index 2b5e5d16c..7bf6bd387 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_h2qp_wan_metric.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_h2qp_wan_metric.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -287,11 +287,10 @@ def wireless_controller_hotspot20_h2qp_wan_metric(data, fos, check_mode=False): wireless_controller_hotspot20_h2qp_wan_metric_data = data[ "wireless_controller_hotspot20_h2qp_wan_metric" ] - filtered_data = underscore_to_hyphen( - filter_wireless_controller_hotspot20_h2qp_wan_metric_data( - wireless_controller_hotspot20_h2qp_wan_metric_data - ) + filtered_data = filter_wireless_controller_hotspot20_h2qp_wan_metric_data( + wireless_controller_hotspot20_h2qp_wan_metric_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -362,7 +361,7 @@ def wireless_controller_hotspot20_h2qp_wan_metric(data, fos, check_mode=False): return fos.set( "wireless-controller.hotspot20", "h2qp-wan-metric", - data=filtered_data, + data=converted_data, vdom=vdom, ) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_hs_profile.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_hs_profile.py index b8bd640df..705228eb7 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_hs_profile.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_hs_profile.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -561,9 +561,9 @@ def underscore_to_hyphen(data): def valid_attr_to_invalid_attr(data): - specillist = {"3gpp_plmn": "plmn_3gpp"} + speciallist = {"3gpp_plmn": "plmn_3gpp"} - for k, v in specillist.items(): + for k, v in speciallist.items(): if v == data: return k @@ -572,8 +572,11 @@ def valid_attr_to_invalid_attr(data): def valid_attr_to_invalid_attrs(data): if isinstance(data, list): + new_data = [] for elem in data: elem = valid_attr_to_invalid_attrs(elem) + new_data.append(elem) + data = new_data elif isinstance(data, dict): new_data = {} for k, v in data.items(): @@ -591,12 +594,10 @@ def wireless_controller_hotspot20_hs_profile(data, fos, check_mode=False): wireless_controller_hotspot20_hs_profile_data = data[ "wireless_controller_hotspot20_hs_profile" ] - filtered_data = underscore_to_hyphen( - filter_wireless_controller_hotspot20_hs_profile_data( - wireless_controller_hotspot20_hs_profile_data - ) + filtered_data = filter_wireless_controller_hotspot20_hs_profile_data( + wireless_controller_hotspot20_hs_profile_data ) - converted_data = valid_attr_to_invalid_attrs(filtered_data) + converted_data = underscore_to_hyphen(valid_attr_to_invalid_attrs(filtered_data)) # check_mode starts from here if check_mode: diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_icon.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_icon.py index 9147af4a1..609a5b52b 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_icon.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_icon.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -270,11 +270,10 @@ def wireless_controller_hotspot20_icon(data, fos, check_mode=False): state = data["state"] wireless_controller_hotspot20_icon_data = data["wireless_controller_hotspot20_icon"] - filtered_data = underscore_to_hyphen( - filter_wireless_controller_hotspot20_icon_data( - wireless_controller_hotspot20_icon_data - ) + filtered_data = filter_wireless_controller_hotspot20_icon_data( + wireless_controller_hotspot20_icon_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -343,7 +342,7 @@ def wireless_controller_hotspot20_icon(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "wireless-controller.hotspot20", "icon", data=filtered_data, vdom=vdom + "wireless-controller.hotspot20", "icon", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_qos_map.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_qos_map.py index 14ca2856d..4d65040e8 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_qos_map.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_hotspot20_qos_map.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -280,11 +280,10 @@ def wireless_controller_hotspot20_qos_map(data, fos, check_mode=False): wireless_controller_hotspot20_qos_map_data = data[ "wireless_controller_hotspot20_qos_map" ] - filtered_data = underscore_to_hyphen( - filter_wireless_controller_hotspot20_qos_map_data( - wireless_controller_hotspot20_qos_map_data - ) + filtered_data = filter_wireless_controller_hotspot20_qos_map_data( + wireless_controller_hotspot20_qos_map_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -353,7 +352,7 @@ def wireless_controller_hotspot20_qos_map(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "wireless-controller.hotspot20", "qos-map", data=filtered_data, vdom=vdom + "wireless-controller.hotspot20", "qos-map", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_inter_controller.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_inter_controller.py index 3ef90ebc0..606856c51 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_inter_controller.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_inter_controller.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -279,14 +279,13 @@ def wireless_controller_inter_controller(data, fos): wireless_controller_inter_controller_data = data[ "wireless_controller_inter_controller" ] - filtered_data = underscore_to_hyphen( - filter_wireless_controller_inter_controller_data( - wireless_controller_inter_controller_data - ) + filtered_data = filter_wireless_controller_inter_controller_data( + wireless_controller_inter_controller_data ) + converted_data = underscore_to_hyphen(filtered_data) return fos.set( - "wireless-controller", "inter-controller", data=filtered_data, vdom=vdom + "wireless-controller", "inter-controller", data=converted_data, vdom=vdom ) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_log.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_log.py index bfbc71240..b67c83fa5 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_log.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_log.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -372,11 +372,10 @@ def underscore_to_hyphen(data): def wireless_controller_log(data, fos): vdom = data["vdom"] wireless_controller_log_data = data["wireless_controller_log"] - filtered_data = underscore_to_hyphen( - filter_wireless_controller_log_data(wireless_controller_log_data) - ) + filtered_data = filter_wireless_controller_log_data(wireless_controller_log_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("wireless-controller", "log", data=filtered_data, vdom=vdom) + return fos.set("wireless-controller", "log", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_mpsk_profile.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_mpsk_profile.py index 4109c8c12..5d6b3af0a 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_mpsk_profile.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_mpsk_profile.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -315,11 +315,10 @@ def wireless_controller_mpsk_profile(data, fos, check_mode=False): state = data["state"] wireless_controller_mpsk_profile_data = data["wireless_controller_mpsk_profile"] - filtered_data = underscore_to_hyphen( - filter_wireless_controller_mpsk_profile_data( - wireless_controller_mpsk_profile_data - ) + filtered_data = filter_wireless_controller_mpsk_profile_data( + wireless_controller_mpsk_profile_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -388,7 +387,7 @@ def wireless_controller_mpsk_profile(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "wireless-controller", "mpsk-profile", data=filtered_data, vdom=vdom + "wireless-controller", "mpsk-profile", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_nac_profile.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_nac_profile.py index 02ab779cc..72fb5f27c 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_nac_profile.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_nac_profile.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -226,15 +226,14 @@ def wireless_controller_nac_profile(data, fos): state = data["state"] wireless_controller_nac_profile_data = data["wireless_controller_nac_profile"] - filtered_data = underscore_to_hyphen( - filter_wireless_controller_nac_profile_data( - wireless_controller_nac_profile_data - ) + filtered_data = filter_wireless_controller_nac_profile_data( + wireless_controller_nac_profile_data ) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: return fos.set( - "wireless-controller", "nac-profile", data=filtered_data, vdom=vdom + "wireless-controller", "nac-profile", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_qos_profile.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_qos_profile.py index 0f87775e0..473cf6f68 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_qos_profile.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_qos_profile.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -416,11 +416,10 @@ def wireless_controller_qos_profile(data, fos, check_mode=False): state = data["state"] wireless_controller_qos_profile_data = data["wireless_controller_qos_profile"] - filtered_data = underscore_to_hyphen( - filter_wireless_controller_qos_profile_data( - wireless_controller_qos_profile_data - ) + filtered_data = filter_wireless_controller_qos_profile_data( + wireless_controller_qos_profile_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -489,7 +488,7 @@ def wireless_controller_qos_profile(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "wireless-controller", "qos-profile", data=filtered_data, vdom=vdom + "wireless-controller", "qos-profile", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_region.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_region.py index d23410a46..1af99015d 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_region.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_region.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -252,9 +252,10 @@ def wireless_controller_region(data, fos, check_mode=False): state = data["state"] wireless_controller_region_data = data["wireless_controller_region"] - filtered_data = underscore_to_hyphen( - filter_wireless_controller_region_data(wireless_controller_region_data) + filtered_data = filter_wireless_controller_region_data( + wireless_controller_region_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -318,7 +319,7 @@ def wireless_controller_region(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("wireless-controller", "region", data=filtered_data, vdom=vdom) + return fos.set("wireless-controller", "region", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_rf_analysis.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_rf_analysis.py index 3c978a2f2..791eb95f9 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_rf_analysis.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_rf_analysis.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -200,9 +200,9 @@ def underscore_to_hyphen(data): def valid_attr_to_invalid_attr(data): - specillist = {"<wtp_id>": "wtp_id"} + speciallist = {"<wtp_id>": "wtp_id"} - for k, v in specillist.items(): + for k, v in speciallist.items(): if v == data: return k @@ -211,8 +211,11 @@ def valid_attr_to_invalid_attr(data): def valid_attr_to_invalid_attrs(data): if isinstance(data, list): + new_data = [] for elem in data: elem = valid_attr_to_invalid_attrs(elem) + new_data.append(elem) + data = new_data elif isinstance(data, dict): new_data = {} for k, v in data.items(): @@ -225,12 +228,10 @@ def valid_attr_to_invalid_attrs(data): def wireless_controller_rf_analysis(data, fos): vdom = data["vdom"] wireless_controller_rf_analysis_data = data["wireless_controller_rf_analysis"] - filtered_data = underscore_to_hyphen( - filter_wireless_controller_rf_analysis_data( - wireless_controller_rf_analysis_data - ) + filtered_data = filter_wireless_controller_rf_analysis_data( + wireless_controller_rf_analysis_data ) - converted_data = valid_attr_to_invalid_attrs(filtered_data) + converted_data = underscore_to_hyphen(valid_attr_to_invalid_attrs(filtered_data)) return fos.set("wireless-controller", "rf-analysis", data=converted_data, vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_setting.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_setting.py index 46a3e8363..9ca4ddf23 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_setting.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_setting.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -377,6 +377,13 @@ options: choices: - 'enable' - 'disable' + rolling_wtp_upgrade: + description: + - Enable/disable rolling WTP upgrade . + type: str + choices: + - 'enable' + - 'disable' wfa_compatibility: description: - Enable/disable WFA compatibility. @@ -410,6 +417,7 @@ EXAMPLES = """ id: "17" ssid_pattern: "<your_own_value>" phishing_ssid_detect: "enable" + rolling_wtp_upgrade: "enable" wfa_compatibility: "enable" """ @@ -507,6 +515,7 @@ def filter_wireless_controller_setting_data(json): "firmware_provision_on_authorization", "offending_ssid", "phishing_ssid_detect", + "rolling_wtp_upgrade", "wfa_compatibility", ] @@ -569,11 +578,12 @@ def wireless_controller_setting(data, fos): wireless_controller_setting_data = flatten_multilists_attributes( wireless_controller_setting_data ) - filtered_data = underscore_to_hyphen( - filter_wireless_controller_setting_data(wireless_controller_setting_data) + filtered_data = filter_wireless_controller_setting_data( + wireless_controller_setting_data ) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("wireless-controller", "setting", data=filtered_data, vdom=vdom) + return fos.set("wireless-controller", "setting", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -882,6 +892,11 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "rolling_wtp_upgrade": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "darrp_optimize": {"v_range": [["v6.2.0", ""]], "type": "integer"}, "darrp_optimize_schedules": { "type": "list", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_snmp.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_snmp.py index c2aeb28fd..e0e72a8f4 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_snmp.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_snmp.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -415,11 +415,10 @@ def wireless_controller_snmp(data, fos): wireless_controller_snmp_data = flatten_multilists_attributes( wireless_controller_snmp_data ) - filtered_data = underscore_to_hyphen( - filter_wireless_controller_snmp_data(wireless_controller_snmp_data) - ) + filtered_data = filter_wireless_controller_snmp_data(wireless_controller_snmp_data) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("wireless-controller", "snmp", data=filtered_data, vdom=vdom) + return fos.set("wireless-controller", "snmp", data=converted_data, vdom=vdom) def is_successful_status(resp): diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_spectral_info.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_spectral_info.py index 412dd2747..c1ae108eb 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_spectral_info.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_spectral_info.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -200,9 +200,9 @@ def underscore_to_hyphen(data): def valid_attr_to_invalid_attr(data): - specillist = {"[wtp_id]": "set_wtp_id"} + speciallist = {"[wtp_id]": "set_wtp_id"} - for k, v in specillist.items(): + for k, v in speciallist.items(): if v == data: return k @@ -211,8 +211,11 @@ def valid_attr_to_invalid_attr(data): def valid_attr_to_invalid_attrs(data): if isinstance(data, list): + new_data = [] for elem in data: elem = valid_attr_to_invalid_attrs(elem) + new_data.append(elem) + data = new_data elif isinstance(data, dict): new_data = {} for k, v in data.items(): @@ -225,12 +228,10 @@ def valid_attr_to_invalid_attrs(data): def wireless_controller_spectral_info(data, fos, check_mode=False): vdom = data["vdom"] wireless_controller_spectral_info_data = data["wireless_controller_spectral_info"] - filtered_data = underscore_to_hyphen( - filter_wireless_controller_spectral_info_data( - wireless_controller_spectral_info_data - ) + filtered_data = filter_wireless_controller_spectral_info_data( + wireless_controller_spectral_info_data ) - converted_data = valid_attr_to_invalid_attrs(filtered_data) + converted_data = underscore_to_hyphen(valid_attr_to_invalid_attrs(filtered_data)) return fos.set( "wireless-controller", "spectral-info", data=converted_data, vdom=vdom diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_ssid_policy.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_ssid_policy.py index cbc591e35..127e5558e 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_ssid_policy.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_ssid_policy.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -226,15 +226,14 @@ def wireless_controller_ssid_policy(data, fos): state = data["state"] wireless_controller_ssid_policy_data = data["wireless_controller_ssid_policy"] - filtered_data = underscore_to_hyphen( - filter_wireless_controller_ssid_policy_data( - wireless_controller_ssid_policy_data - ) + filtered_data = filter_wireless_controller_ssid_policy_data( + wireless_controller_ssid_policy_data ) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: return fos.set( - "wireless-controller", "ssid-policy", data=filtered_data, vdom=vdom + "wireless-controller", "ssid-policy", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_status.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_status.py index 7e0df42ac..021d06c0b 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_status.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_status.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -200,9 +200,9 @@ def underscore_to_hyphen(data): def valid_attr_to_invalid_attr(data): - specillist = {"[1|2]": "set_1_2"} + speciallist = {"[1|2]": "set_1_2"} - for k, v in specillist.items(): + for k, v in speciallist.items(): if v == data: return k @@ -211,8 +211,11 @@ def valid_attr_to_invalid_attr(data): def valid_attr_to_invalid_attrs(data): if isinstance(data, list): + new_data = [] for elem in data: elem = valid_attr_to_invalid_attrs(elem) + new_data.append(elem) + data = new_data elif isinstance(data, dict): new_data = {} for k, v in data.items(): @@ -225,10 +228,10 @@ def valid_attr_to_invalid_attrs(data): def wireless_controller_status(data, fos): vdom = data["vdom"] wireless_controller_status_data = data["wireless_controller_status"] - filtered_data = underscore_to_hyphen( - filter_wireless_controller_status_data(wireless_controller_status_data) + filtered_data = filter_wireless_controller_status_data( + wireless_controller_status_data ) - converted_data = valid_attr_to_invalid_attrs(filtered_data) + converted_data = underscore_to_hyphen(valid_attr_to_invalid_attrs(filtered_data)) return fos.set("wireless-controller", "status", data=converted_data, vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_syslog_profile.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_syslog_profile.py index b83690a6f..9b09dca68 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_syslog_profile.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_syslog_profile.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -275,15 +275,14 @@ def wireless_controller_syslog_profile(data, fos): state = data["state"] wireless_controller_syslog_profile_data = data["wireless_controller_syslog_profile"] - filtered_data = underscore_to_hyphen( - filter_wireless_controller_syslog_profile_data( - wireless_controller_syslog_profile_data - ) + filtered_data = filter_wireless_controller_syslog_profile_data( + wireless_controller_syslog_profile_data ) + converted_data = underscore_to_hyphen(filtered_data) if state == "present" or state is True: return fos.set( - "wireless-controller", "syslog-profile", data=filtered_data, vdom=vdom + "wireless-controller", "syslog-profile", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_timers.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_timers.py index 89303b171..78cf83dca 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_timers.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_timers.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -80,6 +80,20 @@ options: default: null type: dict suboptions: + ap_reboot_wait_interval1: + description: + - Time in minutes to wait before AP reboots when there is no controller detected (5 - 65535). + type: int + ap_reboot_wait_interval2: + description: + - Time in minutes to wait before AP reboots when there is no controller detected and standalone SSIDs are pushed to the AP in the previous + session (5 - 65535). + type: int + ap_reboot_wait_time: + description: + - 'Time to reboot the AP when there is no controller detected and standalone SSIDs are pushed to the AP in the previous session, format hh + :mm.' + type: str auth_timeout: description: - Time after which a client is considered failed in RADIUS authentication and times out (5 - 30 sec). @@ -143,6 +157,10 @@ options: description: - Time period to keep IPsec VPN interfaces up after WTP sessions are disconnected (30 - 3600 sec). type: int + nat_session_keep_alive: + description: + - Maximal time in seconds between control requests sent by the managed WTP, AP, or FortiAP (0 - 255 sec). + type: int radio_stats_interval: description: - Time between running radio reports (1 - 255 sec). @@ -178,6 +196,9 @@ EXAMPLES = """ fortinet.fortios.fortios_wireless_controller_timers: vdom: "{{ vdom }}" wireless_controller_timers: + ap_reboot_wait_interval1: "0" + ap_reboot_wait_interval2: "0" + ap_reboot_wait_time: "<your_own_value>" auth_timeout: "5" ble_scan_report_intv: "30" client_idle_rehome_timeout: "20" @@ -192,12 +213,13 @@ EXAMPLES = """ echo_interval: "30" fake_ap_log: "1" ipsec_intf_cleanup: "120" + nat_session_keep_alive: "0" radio_stats_interval: "15" rogue_ap_cleanup: "0" rogue_ap_log: "0" sta_capability_interval: "30" sta_locate_timer: "1800" - sta_stats_interval: "1" + sta_stats_interval: "10" vap_stats_interval: "15" """ @@ -282,6 +304,9 @@ from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.data_post def filter_wireless_controller_timers_data(json): option_list = [ + "ap_reboot_wait_interval1", + "ap_reboot_wait_interval2", + "ap_reboot_wait_time", "auth_timeout", "ble_scan_report_intv", "client_idle_rehome_timeout", @@ -294,6 +319,7 @@ def filter_wireless_controller_timers_data(json): "echo_interval", "fake_ap_log", "ipsec_intf_cleanup", + "nat_session_keep_alive", "radio_stats_interval", "rogue_ap_cleanup", "rogue_ap_log", @@ -329,11 +355,12 @@ def underscore_to_hyphen(data): def wireless_controller_timers(data, fos): vdom = data["vdom"] wireless_controller_timers_data = data["wireless_controller_timers"] - filtered_data = underscore_to_hyphen( - filter_wireless_controller_timers_data(wireless_controller_timers_data) + filtered_data = filter_wireless_controller_timers_data( + wireless_controller_timers_data ) + converted_data = underscore_to_hyphen(filtered_data) - return fos.set("wireless-controller", "timers", data=filtered_data, vdom=vdom) + return fos.set("wireless-controller", "timers", data=converted_data, vdom=vdom) def is_successful_status(resp): @@ -371,6 +398,7 @@ versioned_schema = { "type": "dict", "children": { "echo_interval": {"v_range": [["v6.0.0", ""]], "type": "integer"}, + "nat_session_keep_alive": {"v_range": [["v7.4.2", ""]], "type": "integer"}, "discovery_interval": {"v_range": [["v6.0.0", ""]], "type": "integer"}, "client_idle_timeout": {"v_range": [["v6.0.0", ""]], "type": "integer"}, "client_idle_rehome_timeout": {"v_range": [["v7.2.0", ""]], "type": "integer"}, @@ -386,6 +414,9 @@ versioned_schema = { "ipsec_intf_cleanup": {"v_range": [["v6.0.0", ""]], "type": "integer"}, "ble_scan_report_intv": {"v_range": [["v6.0.0", ""]], "type": "integer"}, "drma_interval": {"v_range": [["v6.4.4", ""]], "type": "integer"}, + "ap_reboot_wait_interval1": {"v_range": [["v7.4.2", ""]], "type": "integer"}, + "ap_reboot_wait_time": {"v_range": [["v7.4.2", ""]], "type": "string"}, + "ap_reboot_wait_interval2": {"v_range": [["v7.4.2", ""]], "type": "integer"}, "darrp_optimize": {"v_range": [["v6.0.0", "v6.0.11"]], "type": "integer"}, "darrp_day": { "v_range": [["v6.0.0", "v6.0.11"]], diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_utm_profile.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_utm_profile.py index a630c1dbe..f1af516f2 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_utm_profile.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_utm_profile.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -276,11 +276,10 @@ def wireless_controller_utm_profile(data, fos, check_mode=False): state = data["state"] wireless_controller_utm_profile_data = data["wireless_controller_utm_profile"] - filtered_data = underscore_to_hyphen( - filter_wireless_controller_utm_profile_data( - wireless_controller_utm_profile_data - ) + filtered_data = filter_wireless_controller_utm_profile_data( + wireless_controller_utm_profile_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -349,7 +348,7 @@ def wireless_controller_utm_profile(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "wireless-controller", "utm-profile", data=filtered_data, vdom=vdom + "wireless-controller", "utm-profile", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_vap.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_vap.py index a93e9e4d0..2ece585cc 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_vap.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_vap.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -954,6 +954,14 @@ options: type: list elements: str choices: + - '1' + - '1-basic' + - '2' + - '2-basic' + - '5.5' + - '5.5-basic' + - '11' + - '11-basic' - '6' - '6-basic' - '9' @@ -970,14 +978,6 @@ options: - '48-basic' - '54' - '54-basic' - - '1' - - '1-basic' - - '2' - - '2-basic' - - '5.5' - - '5.5-basic' - - '11' - - '11-basic' rates_11ac_mcs_map: description: - Comma separated list of max supported VHT MCS for spatial streams 1 through 8. @@ -1112,6 +1112,14 @@ options: type: list elements: str choices: + - '1' + - '1-basic' + - '2' + - '2-basic' + - '5.5' + - '5.5-basic' + - '11' + - '11-basic' - '6' - '6-basic' - '9' @@ -1128,14 +1136,6 @@ options: - '48-basic' - '54' - '54-basic' - - '1' - - '1-basic' - - '2' - - '2-basic' - - '5.5' - - '5.5-basic' - - '11' - - '11-basic' rates_11n_ss12: description: - Allowed data rates for 802.11n with 1 or 2 spatial streams. @@ -1180,6 +1180,13 @@ options: - 'mcs29/4' - 'mcs30/4' - 'mcs31/4' + roaming_acct_interim_update: + description: + - Enable/disable using accounting interim update instead of accounting start/stop on roaming for WPA-Enterprise security. + type: str + choices: + - 'enable' + - 'disable' sae_groups: description: - SAE-Groups. @@ -1209,6 +1216,13 @@ options: choices: - 'enable' - 'disable' + sae_hnp_only: + description: + - Use hunting-and-pecking-only mechanism for PWE derivation . + type: str + choices: + - 'enable' + - 'disable' sae_password: description: - WPA3 SAE password to be used to authenticate WiFi users. @@ -1299,6 +1313,20 @@ options: - User group name. Source user.group.name. required: true type: str + set_80211k: + description: + - Enable/disable 802.11k assisted roaming . + type: str + choices: + - 'disable' + - 'enable' + set_80211v: + description: + - Enable/disable 802.11v assisted roaming . + type: str + choices: + - 'disable' + - 'enable' split_tunneling: description: - Enable/disable split tunneling . @@ -1606,25 +1634,27 @@ EXAMPLES = """ radius_mac_mpsk_auth: "enable" radius_mac_mpsk_timeout: "86400" radius_server: "<your_own_value> (source user.radius.name)" - rates_11a: "6" + rates_11a: "1" rates_11ac_mcs_map: "<your_own_value>" rates_11ac_ss12: "mcs0/1" rates_11ac_ss34: "mcs0/3" rates_11ax_mcs_map: "<your_own_value>" rates_11ax_ss12: "mcs0/1" rates_11ax_ss34: "mcs0/3" - rates_11bg: "6" + rates_11bg: "1" rates_11n_ss12: "mcs0/1" rates_11n_ss34: "mcs16/3" + roaming_acct_interim_update: "enable" sae_groups: "19" sae_h2e_only: "enable" + sae_hnp_only: "enable" sae_password: "<your_own_value>" sae_pk: "enable" sae_private_key: "<your_own_value>" scan_botnet_connections: "disable" schedule: - - name: "default_name_165 (source firewall.schedule.group.name firewall.schedule.recurring.name firewall.schedule.onetime.name)" + name: "default_name_167 (source firewall.schedule.group.name firewall.schedule.recurring.name firewall.schedule.onetime.name)" secondary_wag_profile: "<your_own_value> (source wireless-controller.wag-profile.name)" security: "open" security_exempt_list: "<your_own_value> (source user.security-exempt-list.name)" @@ -1632,7 +1662,9 @@ EXAMPLES = """ security_redirect_url: "<your_own_value>" selected_usergroups: - - name: "default_name_172 (source user.group.name)" + name: "default_name_174 (source user.group.name)" + set_80211k: "disable" + set_80211v: "disable" split_tunneling: "enable" ssid: "<your_own_value>" sticky_client_remove: "enable" @@ -1645,7 +1677,7 @@ EXAMPLES = """ tunnel_fallback_interval: "7200" usergroup: - - name: "default_name_184 (source user.group.name)" + name: "default_name_188 (source user.group.name)" utm_log: "enable" utm_profile: "<your_own_value> (source wireless-controller.utm-profile.name)" utm_status: "enable" @@ -1653,11 +1685,11 @@ EXAMPLES = """ vlan_auto: "enable" vlan_name: - - name: "default_name_191" + name: "default_name_195" vlan_id: "<your_own_value>" vlan_pool: - - id: "194" + id: "198" wtp_group: "<your_own_value> (source wireless-controller.wtp-group.name)" vlan_pooling: "wtp-group" vlanid: "0" @@ -1896,8 +1928,10 @@ def filter_wireless_controller_vap_data(json): "rates_11bg", "rates_11n_ss12", "rates_11n_ss34", + "roaming_acct_interim_update", "sae_groups", "sae_h2e_only", + "sae_hnp_only", "sae_password", "sae_pk", "sae_private_key", @@ -1909,6 +1943,8 @@ def filter_wireless_controller_vap_data(json): "security_obsolete_option", "security_redirect_url", "selected_usergroups", + "set_80211k", + "set_80211v", "split_tunneling", "ssid", "sticky_client_remove", @@ -2000,6 +2036,32 @@ def underscore_to_hyphen(data): return data +def valid_attr_to_invalid_attr(data): + speciallist = {"80211k": "set_80211k", "80211v": "set_80211v"} + + for k, v in speciallist.items(): + if v == data: + return k + + return data + + +def valid_attr_to_invalid_attrs(data): + if isinstance(data, list): + new_data = [] + for elem in data: + elem = valid_attr_to_invalid_attrs(elem) + new_data.append(elem) + data = new_data + elif isinstance(data, dict): + new_data = {} + for k, v in data.items(): + new_data[valid_attr_to_invalid_attr(k)] = valid_attr_to_invalid_attrs(v) + data = new_data + + return data + + def wireless_controller_vap(data, fos, check_mode=False): vdom = data["vdom"] @@ -2009,9 +2071,8 @@ def wireless_controller_vap(data, fos, check_mode=False): wireless_controller_vap_data = flatten_multilists_attributes( wireless_controller_vap_data ) - filtered_data = underscore_to_hyphen( - filter_wireless_controller_vap_data(wireless_controller_vap_data) - ) + filtered_data = filter_wireless_controller_vap_data(wireless_controller_vap_data) + converted_data = underscore_to_hyphen(valid_attr_to_invalid_attrs(filtered_data)) # check_mode starts from here if check_mode: @@ -2075,7 +2136,7 @@ def wireless_controller_vap(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("wireless-controller", "vap", data=filtered_data, vdom=vdom) + return fos.set("wireless-controller", "vap", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( @@ -2201,11 +2262,6 @@ versioned_schema = { {"value": "prefer-use"}, ], }, - "voice_enterprise": { - "v_range": [["v6.0.0", ""]], - "type": "string", - "options": [{"value": "disable"}, {"value": "enable"}], - }, "neighbor_report_dual_band": { "v_range": [["v7.0.0", ""]], "type": "string", @@ -2389,6 +2445,11 @@ versioned_schema = { "type": "string", "options": [{"value": "enable"}, {"value": "disable"}], }, + "sae_hnp_only": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "sae_pk": { "v_range": [["v7.0.8", "v7.0.12"], ["v7.2.1", ""]], "type": "string", @@ -2755,6 +2816,11 @@ versioned_schema = { "options": [{"value": "enable"}, {"value": "disable"}], }, "eap_reauth_intv": {"v_range": [["v6.0.0", ""]], "type": "integer"}, + "roaming_acct_interim_update": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "qos_profile": {"v_range": [["v6.0.0", ""]], "type": "string"}, "hotspot20_profile": {"v_range": [["v6.0.0", ""]], "type": "string"}, "access_control_list": {"v_range": [["v6.4.0", ""]], "type": "string"}, @@ -2766,6 +2832,20 @@ versioned_schema = { "v_range": [["v6.0.0", ""]], "type": "list", "options": [ + {"value": "1", "v_range": [["v6.0.0", "v7.4.0"], ["v7.4.2", ""]]}, + {"value": "1-basic", "v_range": [["v6.0.0", "v7.4.0"], ["v7.4.2", ""]]}, + {"value": "2", "v_range": [["v6.0.0", "v7.4.0"], ["v7.4.2", ""]]}, + {"value": "2-basic", "v_range": [["v6.0.0", "v7.4.0"], ["v7.4.2", ""]]}, + {"value": "5.5", "v_range": [["v6.0.0", "v7.4.0"], ["v7.4.2", ""]]}, + { + "value": "5.5-basic", + "v_range": [["v6.0.0", "v7.4.0"], ["v7.4.2", ""]], + }, + {"value": "11", "v_range": [["v6.0.0", "v7.4.0"], ["v7.4.2", ""]]}, + { + "value": "11-basic", + "v_range": [["v6.0.0", "v7.4.0"], ["v7.4.2", ""]], + }, {"value": "6"}, {"value": "6-basic"}, {"value": "9"}, @@ -2782,14 +2862,6 @@ versioned_schema = { {"value": "48-basic"}, {"value": "54"}, {"value": "54-basic"}, - {"value": "1", "v_range": [["v6.0.0", "v7.4.0"]]}, - {"value": "1-basic", "v_range": [["v6.0.0", "v7.4.0"]]}, - {"value": "2", "v_range": [["v6.0.0", "v7.4.0"]]}, - {"value": "2-basic", "v_range": [["v6.0.0", "v7.4.0"]]}, - {"value": "5.5", "v_range": [["v6.0.0", "v7.4.0"]]}, - {"value": "5.5-basic", "v_range": [["v6.0.0", "v7.4.0"]]}, - {"value": "11", "v_range": [["v6.0.0", "v7.4.0"]]}, - {"value": "11-basic", "v_range": [["v6.0.0", "v7.4.0"]]}, ], "multiple_values": True, "elements": "str", @@ -2798,6 +2870,20 @@ versioned_schema = { "v_range": [["v6.0.0", ""]], "type": "list", "options": [ + {"value": "1", "v_range": [["v6.0.0", "v7.4.0"], ["v7.4.2", ""]]}, + {"value": "1-basic", "v_range": [["v6.0.0", "v7.4.0"], ["v7.4.2", ""]]}, + {"value": "2", "v_range": [["v6.0.0", "v7.4.0"], ["v7.4.2", ""]]}, + {"value": "2-basic", "v_range": [["v6.0.0", "v7.4.0"], ["v7.4.2", ""]]}, + {"value": "5.5", "v_range": [["v6.0.0", "v7.4.0"], ["v7.4.2", ""]]}, + { + "value": "5.5-basic", + "v_range": [["v6.0.0", "v7.4.0"], ["v7.4.2", ""]], + }, + {"value": "11", "v_range": [["v6.0.0", "v7.4.0"], ["v7.4.2", ""]]}, + { + "value": "11-basic", + "v_range": [["v6.0.0", "v7.4.0"], ["v7.4.2", ""]], + }, {"value": "6"}, {"value": "6-basic"}, {"value": "9"}, @@ -2814,14 +2900,6 @@ versioned_schema = { {"value": "48-basic"}, {"value": "54"}, {"value": "54-basic"}, - {"value": "1", "v_range": [["v6.0.0", "v7.4.0"]]}, - {"value": "1-basic", "v_range": [["v6.0.0", "v7.4.0"]]}, - {"value": "2", "v_range": [["v6.0.0", "v7.4.0"]]}, - {"value": "2-basic", "v_range": [["v6.0.0", "v7.4.0"]]}, - {"value": "5.5", "v_range": [["v6.0.0", "v7.4.0"]]}, - {"value": "5.5-basic", "v_range": [["v6.0.0", "v7.4.0"]]}, - {"value": "11", "v_range": [["v6.0.0", "v7.4.0"]]}, - {"value": "11-basic", "v_range": [["v6.0.0", "v7.4.0"]]}, ], "multiple_values": True, "elements": "str", @@ -2960,6 +3038,11 @@ versioned_schema = { "type": "string", "options": [{"value": "direct"}, {"value": "indirect"}], }, + "voice_enterprise": { + "v_range": [["v6.0.0", "v7.4.1"]], + "type": "string", + "options": [{"value": "disable"}, {"value": "enable"}], + }, "mac_filter": { "v_range": [["v6.0.0", "v7.4.0"]], "type": "string", @@ -3192,6 +3275,16 @@ versioned_schema = { "type": "string", }, "vdom": {"v_range": [["v6.0.0", "v6.0.11"]], "type": "string"}, + "set_80211k": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "disable"}, {"value": "enable"}], + }, + "set_80211v": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "disable"}, {"value": "enable"}], + }, }, "v_range": [["v6.0.0", ""]], } diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_vap_group.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_vap_group.py index 3840c8f0f..ed9b150f6 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_vap_group.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_vap_group.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -244,9 +244,10 @@ def wireless_controller_vap_group(data, fos, check_mode=False): state = data["state"] wireless_controller_vap_group_data = data["wireless_controller_vap_group"] - filtered_data = underscore_to_hyphen( - filter_wireless_controller_vap_group_data(wireless_controller_vap_group_data) + filtered_data = filter_wireless_controller_vap_group_data( + wireless_controller_vap_group_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -313,7 +314,7 @@ def wireless_controller_vap_group(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "wireless-controller", "vap-group", data=filtered_data, vdom=vdom + "wireless-controller", "vap-group", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_vap_status.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_vap_status.py index df3598dcf..c4becd60e 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_vap_status.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_vap_status.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -200,9 +200,9 @@ def underscore_to_hyphen(data): def valid_attr_to_invalid_attr(data): - specillist = {"[1]": "set_1"} + speciallist = {"[1]": "set_1"} - for k, v in specillist.items(): + for k, v in speciallist.items(): if v == data: return k @@ -211,8 +211,11 @@ def valid_attr_to_invalid_attr(data): def valid_attr_to_invalid_attrs(data): if isinstance(data, list): + new_data = [] for elem in data: elem = valid_attr_to_invalid_attrs(elem) + new_data.append(elem) + data = new_data elif isinstance(data, dict): new_data = {} for k, v in data.items(): @@ -225,10 +228,10 @@ def valid_attr_to_invalid_attrs(data): def wireless_controller_vap_status(data, fos): vdom = data["vdom"] wireless_controller_vap_status_data = data["wireless_controller_vap_status"] - filtered_data = underscore_to_hyphen( - filter_wireless_controller_vap_status_data(wireless_controller_vap_status_data) + filtered_data = filter_wireless_controller_vap_status_data( + wireless_controller_vap_status_data ) - converted_data = valid_attr_to_invalid_attrs(filtered_data) + converted_data = underscore_to_hyphen(valid_attr_to_invalid_attrs(filtered_data)) return fos.set("wireless-controller", "vap-status", data=converted_data, vdom=vdom) diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_wag_profile.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_wag_profile.py index 45859c662..3cfb8193e 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_wag_profile.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_wag_profile.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -278,11 +278,10 @@ def wireless_controller_wag_profile(data, fos, check_mode=False): state = data["state"] wireless_controller_wag_profile_data = data["wireless_controller_wag_profile"] - filtered_data = underscore_to_hyphen( - filter_wireless_controller_wag_profile_data( - wireless_controller_wag_profile_data - ) + filtered_data = filter_wireless_controller_wag_profile_data( + wireless_controller_wag_profile_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -351,7 +350,7 @@ def wireless_controller_wag_profile(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "wireless-controller", "wag-profile", data=filtered_data, vdom=vdom + "wireless-controller", "wag-profile", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_wids_profile.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_wids_profile.py index 49583d5af..815fdf52b 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_wids_profile.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_wids_profile.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -636,11 +636,10 @@ def wireless_controller_wids_profile(data, fos, check_mode=False): state = data["state"] wireless_controller_wids_profile_data = data["wireless_controller_wids_profile"] - filtered_data = underscore_to_hyphen( - filter_wireless_controller_wids_profile_data( - wireless_controller_wids_profile_data - ) + filtered_data = filter_wireless_controller_wids_profile_data( + wireless_controller_wids_profile_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -709,7 +708,7 @@ def wireless_controller_wids_profile(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "wireless-controller", "wids-profile", data=filtered_data, vdom=vdom + "wireless-controller", "wids-profile", data=converted_data, vdom=vdom ) elif state == "absent": diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_wtp.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_wtp.py index cfc572495..d1c0450e5 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_wtp.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_wtp.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -397,6 +397,20 @@ options: choices: - 'enable' - 'disable' + purdue_level: + description: + - Purdue Level of this WTP. + type: str + choices: + - '1' + - '1.5' + - '2' + - '2.5' + - '3' + - '3.5' + - '4' + - '5' + - '5.5' radio_1: description: - Configuration options for radio 1. @@ -1161,6 +1175,7 @@ EXAMPLES = """ override_login_passwd_change: "enable" override_split_tunnel: "enable" override_wan_port_mode: "enable" + purdue_level: "1" radio_1: auto_power_high: "17" auto_power_level: "enable" @@ -1184,7 +1199,7 @@ EXAMPLES = """ vap_all: "tunnel" vaps: - - name: "default_name_74 (source wireless-controller.vap-group.name system.interface.name)" + name: "default_name_75 (source wireless-controller.vap-group.name system.interface.name)" radio_2: auto_power_high: "17" auto_power_level: "enable" @@ -1208,7 +1223,7 @@ EXAMPLES = """ vap_all: "tunnel" vaps: - - name: "default_name_96 (source wireless-controller.vap-group.name system.interface.name)" + name: "default_name_97 (source wireless-controller.vap-group.name system.interface.name)" radio_3: auto_power_high: "17" auto_power_level: "enable" @@ -1232,7 +1247,7 @@ EXAMPLES = """ vap_all: "tunnel" vaps: - - name: "default_name_118 (source wireless-controller.vap-group.name system.interface.name)" + name: "default_name_119 (source wireless-controller.vap-group.name system.interface.name)" radio_4: auto_power_high: "17" auto_power_level: "enable" @@ -1255,14 +1270,14 @@ EXAMPLES = """ vap_all: "tunnel" vaps: - - name: "default_name_139 (source wireless-controller.vap-group.name system.interface.name)" + name: "default_name_140 (source wireless-controller.vap-group.name system.interface.name)" region: "<your_own_value> (source wireless-controller.region.name)" region_x: "<your_own_value>" region_y: "<your_own_value>" split_tunneling_acl: - dest_ip: "<your_own_value>" - id: "145" + id: "146" split_tunneling_acl_local_ap_subnet: "enable" split_tunneling_acl_path: "tunnel" tun_mtu_downlink: "0" @@ -1394,6 +1409,7 @@ def filter_wireless_controller_wtp_data(json): "override_login_passwd_change", "override_split_tunnel", "override_wan_port_mode", + "purdue_level", "radio_1", "radio_2", "radio_3", @@ -1475,9 +1491,8 @@ def wireless_controller_wtp(data, fos, check_mode=False): wireless_controller_wtp_data = flatten_multilists_attributes( wireless_controller_wtp_data ) - filtered_data = underscore_to_hyphen( - filter_wireless_controller_wtp_data(wireless_controller_wtp_data) - ) + filtered_data = filter_wireless_controller_wtp_data(wireless_controller_wtp_data) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -1541,7 +1556,7 @@ def wireless_controller_wtp(data, fos, check_mode=False): return True, False, {"reason: ": "Must provide state parameter"}, {} if state == "present" or state is True: - return fos.set("wireless-controller", "wtp", data=filtered_data, vdom=vdom) + return fos.set("wireless-controller", "wtp", data=converted_data, vdom=vdom) elif state == "absent": return fos.delete( @@ -2408,6 +2423,21 @@ versioned_schema = { {"value": "disable"}, ], }, + "purdue_level": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [ + {"value": "1"}, + {"value": "1.5"}, + {"value": "2"}, + {"value": "2.5"}, + {"value": "3"}, + {"value": "3.5"}, + {"value": "4"}, + {"value": "5"}, + {"value": "5.5"}, + ], + }, "coordinate_latitude": {"v_range": [["v6.0.0", ""]], "type": "string"}, "coordinate_longitude": {"v_range": [["v6.0.0", ""]], "type": "string"}, "index": { diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_wtp_group.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_wtp_group.py index 422171bef..f4d86d89e 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_wtp_group.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_wtp_group.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -127,7 +127,12 @@ options: - '233G' - '234G' - '431G' + - '432G' - '433G' + - '241K' + - '243K' + - '441K' + - '443K' - 'U421E' - 'U422EV' - 'U423E' @@ -327,9 +332,10 @@ def wireless_controller_wtp_group(data, fos, check_mode=False): state = data["state"] wireless_controller_wtp_group_data = data["wireless_controller_wtp_group"] - filtered_data = underscore_to_hyphen( - filter_wireless_controller_wtp_group_data(wireless_controller_wtp_group_data) + filtered_data = filter_wireless_controller_wtp_group_data( + wireless_controller_wtp_group_data ) + converted_data = underscore_to_hyphen(filtered_data) # check_mode starts from here if check_mode: @@ -396,7 +402,7 @@ def wireless_controller_wtp_group(data, fos, check_mode=False): if state == "present" or state is True: return fos.set( - "wireless-controller", "wtp-group", data=filtered_data, vdom=vdom + "wireless-controller", "wtp-group", data=converted_data, vdom=vdom ) elif state == "absent": @@ -500,7 +506,12 @@ versioned_schema = { {"value": "233G", "v_range": [["v7.0.8", "v7.0.12"], ["v7.2.1", ""]]}, {"value": "234G", "v_range": [["v7.4.0", ""]]}, {"value": "431G", "v_range": [["v7.0.8", "v7.0.12"], ["v7.2.1", ""]]}, + {"value": "432G", "v_range": [["v7.4.2", ""]]}, {"value": "433G", "v_range": [["v7.0.8", "v7.0.12"], ["v7.2.1", ""]]}, + {"value": "241K", "v_range": [["v7.4.2", ""]]}, + {"value": "243K", "v_range": [["v7.4.2", ""]]}, + {"value": "441K", "v_range": [["v7.4.2", ""]]}, + {"value": "443K", "v_range": [["v7.4.2", ""]]}, {"value": "U421E"}, {"value": "U422EV"}, {"value": "U423E"}, diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_wtp_profile.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_wtp_profile.py index cd974c556..3ef9b2755 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_wtp_profile.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_wtp_profile.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -320,6 +320,10 @@ options: description: - Bluetooth Low Energy profile name. Source wireless-controller.ble-profile.name. type: str + bonjour_profile: + description: + - Bonjour profile name. Source wireless-controller.bonjour-profile.name. + type: str comment: description: - Comment. @@ -943,7 +947,12 @@ options: - '233G' - '234G' - '431G' + - '432G' - '433G' + - '241K' + - '243K' + - '441K' + - '443K' - 'U421E' - 'U422EV' - 'U423E' @@ -1299,6 +1308,7 @@ options: type: str choices: - 'none' + - 'custom' - 'FANT-04ABGN-0606-O-N' - 'FANT-04ABGN-1414-P-N' - 'FANT-04ABGN-8065-P-N' @@ -1306,6 +1316,10 @@ options: - 'FANT-04ABGN-0606-P-R' - 'FANT-10ACAX-1213-D-N' - 'FANT-08ABGN-1213-D-R' + optional_antenna_gain: + description: + - Optional antenna gain in dBi (0 to 20). + type: str power_level: description: - Radio EIRP power level as a percentage of the maximum EIRP power (0 - 100). @@ -1354,6 +1368,10 @@ options: description: - BSSID for WiFi network. type: str + sam_ca_certificate: + description: + - CA certificate for WPA2/WPA3-ENTERPRISE. + type: str sam_captive_portal: description: - Enable/disable Captive Portal Authentication . @@ -1361,6 +1379,10 @@ options: choices: - 'enable' - 'disable' + sam_client_certificate: + description: + - Client certificate for WPA2/WPA3-ENTERPRISE. + type: str sam_cwp_failure_string: description: - Failure identification on the page after an incorrect login. @@ -1385,10 +1407,26 @@ options: description: - Username for captive portal authentication. type: str + sam_eap_method: + description: + - Select WPA2/WPA3-ENTERPRISE EAP Method . + type: str + choices: + - 'both' + - 'tls' + - 'peap' sam_password: description: - Passphrase for WiFi network connection. type: str + sam_private_key: + description: + - Private key for WPA2/WPA3-ENTERPRISE. + type: str + sam_private_key_password: + description: + - Password for private key file for WPA2/WPA3-ENTERPRISE. + type: str sam_report_intv: description: - SAM report interval (sec), 0 for a one-time report. @@ -1401,6 +1439,8 @@ options: - 'open' - 'wpa-personal' - 'wpa-enterprise' + - 'wpa3-sae' + - 'owe' sam_server: description: - SAM test server IP address or domain name. @@ -1793,6 +1833,7 @@ options: type: str choices: - 'none' + - 'custom' - 'FANT-04ABGN-0606-O-N' - 'FANT-04ABGN-1414-P-N' - 'FANT-04ABGN-8065-P-N' @@ -1800,6 +1841,10 @@ options: - 'FANT-04ABGN-0606-P-R' - 'FANT-10ACAX-1213-D-N' - 'FANT-08ABGN-1213-D-R' + optional_antenna_gain: + description: + - Optional antenna gain in dBi (0 to 20). + type: str power_level: description: - Radio EIRP power level as a percentage of the maximum EIRP power (0 - 100). @@ -1848,6 +1893,10 @@ options: description: - BSSID for WiFi network. type: str + sam_ca_certificate: + description: + - CA certificate for WPA2/WPA3-ENTERPRISE. + type: str sam_captive_portal: description: - Enable/disable Captive Portal Authentication . @@ -1855,6 +1904,10 @@ options: choices: - 'enable' - 'disable' + sam_client_certificate: + description: + - Client certificate for WPA2/WPA3-ENTERPRISE. + type: str sam_cwp_failure_string: description: - Failure identification on the page after an incorrect login. @@ -1879,10 +1932,26 @@ options: description: - Username for captive portal authentication. type: str + sam_eap_method: + description: + - Select WPA2/WPA3-ENTERPRISE EAP Method . + type: str + choices: + - 'both' + - 'tls' + - 'peap' sam_password: description: - Passphrase for WiFi network connection. type: str + sam_private_key: + description: + - Private key for WPA2/WPA3-ENTERPRISE. + type: str + sam_private_key_password: + description: + - Password for private key file for WPA2/WPA3-ENTERPRISE. + type: str sam_report_intv: description: - SAM report interval (sec), 0 for a one-time report. @@ -1895,6 +1964,8 @@ options: - 'open' - 'wpa-personal' - 'wpa-enterprise' + - 'wpa3-sae' + - 'owe' sam_server: description: - SAM test server IP address or domain name. @@ -2287,6 +2358,7 @@ options: type: str choices: - 'none' + - 'custom' - 'FANT-04ABGN-0606-O-N' - 'FANT-04ABGN-1414-P-N' - 'FANT-04ABGN-8065-P-N' @@ -2294,6 +2366,10 @@ options: - 'FANT-04ABGN-0606-P-R' - 'FANT-10ACAX-1213-D-N' - 'FANT-08ABGN-1213-D-R' + optional_antenna_gain: + description: + - Optional antenna gain in dBi (0 to 20). + type: str power_level: description: - Radio EIRP power level as a percentage of the maximum EIRP power (0 - 100). @@ -2342,6 +2418,10 @@ options: description: - BSSID for WiFi network. type: str + sam_ca_certificate: + description: + - CA certificate for WPA2/WPA3-ENTERPRISE. + type: str sam_captive_portal: description: - Enable/disable Captive Portal Authentication . @@ -2349,6 +2429,10 @@ options: choices: - 'enable' - 'disable' + sam_client_certificate: + description: + - Client certificate for WPA2/WPA3-ENTERPRISE. + type: str sam_cwp_failure_string: description: - Failure identification on the page after an incorrect login. @@ -2373,10 +2457,26 @@ options: description: - Username for captive portal authentication. type: str + sam_eap_method: + description: + - Select WPA2/WPA3-ENTERPRISE EAP Method . + type: str + choices: + - 'both' + - 'tls' + - 'peap' sam_password: description: - Passphrase for WiFi network connection. type: str + sam_private_key: + description: + - Private key for WPA2/WPA3-ENTERPRISE. + type: str + sam_private_key_password: + description: + - Password for private key file for WPA2/WPA3-ENTERPRISE. + type: str sam_report_intv: description: - SAM report interval (sec), 0 for a one-time report. @@ -2389,6 +2489,8 @@ options: - 'open' - 'wpa-personal' - 'wpa-enterprise' + - 'wpa3-sae' + - 'owe' sam_server: description: - SAM test server IP address or domain name. @@ -2590,7 +2692,7 @@ options: type: str band: description: - - WiFi band that Radio 3 operates on. + - WiFi band that Radio 4 operates on. type: str choices: - '802.11a' @@ -2767,7 +2869,7 @@ options: - '8x8' mode: description: - - Mode of radio 3. Radio 3 can be disabled, configured as an access point, a rogue AP monitor, a sniffer, or a station. + - Mode of radio 4. Radio 4 can be disabled, configured as an access point, a rogue AP monitor, a sniffer, or a station. type: str choices: - 'disabled' @@ -2781,6 +2883,7 @@ options: type: str choices: - 'none' + - 'custom' - 'FANT-04ABGN-0606-O-N' - 'FANT-04ABGN-1414-P-N' - 'FANT-04ABGN-8065-P-N' @@ -2788,6 +2891,10 @@ options: - 'FANT-04ABGN-0606-P-R' - 'FANT-10ACAX-1213-D-N' - 'FANT-08ABGN-1213-D-R' + optional_antenna_gain: + description: + - Optional antenna gain in dBi (0 to 20). + type: str power_level: description: - Radio EIRP power level as a percentage of the maximum EIRP power (0 - 100). @@ -2832,6 +2939,10 @@ options: description: - BSSID for WiFi network. type: str + sam_ca_certificate: + description: + - CA certificate for WPA2/WPA3-ENTERPRISE. + type: str sam_captive_portal: description: - Enable/disable Captive Portal Authentication . @@ -2839,6 +2950,10 @@ options: choices: - 'enable' - 'disable' + sam_client_certificate: + description: + - Client certificate for WPA2/WPA3-ENTERPRISE. + type: str sam_cwp_failure_string: description: - Failure identification on the page after an incorrect login. @@ -2863,10 +2978,26 @@ options: description: - Username for captive portal authentication. type: str + sam_eap_method: + description: + - Select WPA2/WPA3-ENTERPRISE EAP Method . + type: str + choices: + - 'both' + - 'tls' + - 'peap' sam_password: description: - Passphrase for WiFi network connection. type: str + sam_private_key: + description: + - Private key for WPA2/WPA3-ENTERPRISE. + type: str + sam_private_key_password: + description: + - Password for private key file for WPA2/WPA3-ENTERPRISE. + type: str sam_report_intv: description: - SAM report interval (sec), 0 for a one-time report. @@ -2879,6 +3010,8 @@ options: - 'open' - 'wpa-personal' - 'wpa-enterprise' + - 'wpa3-sae' + - 'owe' sam_server: description: - SAM test server IP address or domain name. @@ -3034,6 +3167,13 @@ options: choices: - 'none' - '802.1x' + wan_port_auth_macsec: + description: + - Enable/disable WAN port 802.1x supplicant MACsec policy . + type: str + choices: + - 'enable' + - 'disable' wan_port_auth_methods: description: - WAN port 802.1x supplicant EAP methods . @@ -3072,12 +3212,13 @@ EXAMPLES = """ ap_handoff: "enable" apcfg_profile: "<your_own_value> (source wireless-controller.apcfg-profile.name)" ble_profile: "<your_own_value> (source wireless-controller.ble-profile.name)" + bonjour_profile: "<your_own_value> (source wireless-controller.bonjour-profile.name)" comment: "Comment." console_login: "enable" control_message_offload: "ebp-frame" deny_mac_list: - - id: "12" + id: "13" mac: "<your_own_value>" dtls_in_kernel: "enable" dtls_policy: "clear-text" @@ -3162,13 +3303,13 @@ EXAMPLES = """ station_locate: "enable" led_schedules: - - name: "default_name_96 (source firewall.schedule.group.name firewall.schedule.recurring.name firewall.schedule.onetime.name)" + name: "default_name_97 (source firewall.schedule.group.name firewall.schedule.recurring.name firewall.schedule.onetime.name)" led_state: "enable" lldp: "enable" login_passwd: "<your_own_value>" login_passwd_change: "yes" max_clients: "0" - name: "default_name_102" + name: "default_name_103" platform: ddscan: "enable" mode: "single-5G" @@ -3219,6 +3360,7 @@ EXAMPLES = """ mimo_mode: "default" mode: "disabled" optional_antenna: "none" + optional_antenna_gain: "<your_own_value>" power_level: "100" power_mode: "dBm" power_value: "27" @@ -3227,14 +3369,19 @@ EXAMPLES = """ radio_id: "2" rts_threshold: "2346" sam_bssid: "<your_own_value>" + sam_ca_certificate: "<your_own_value>" sam_captive_portal: "enable" + sam_client_certificate: "<your_own_value>" sam_cwp_failure_string: "<your_own_value>" sam_cwp_match_string: "<your_own_value>" sam_cwp_password: "<your_own_value>" sam_cwp_success_string: "<your_own_value>" sam_cwp_test_url: "<your_own_value>" sam_cwp_username: "<your_own_value>" + sam_eap_method: "both" sam_password: "<your_own_value>" + sam_private_key: "<your_own_value>" + sam_private_key_password: "<your_own_value>" sam_report_intv: "0" sam_security_type: "open" sam_server: "<your_own_value>" @@ -3251,7 +3398,7 @@ EXAMPLES = """ vap_all: "tunnel" vaps: - - name: "default_name_183 (source wireless-controller.vap-group.name system.interface.name)" + name: "default_name_190 (source wireless-controller.vap-group.name system.interface.name)" wids_profile: "<your_own_value> (source wireless-controller.wids-profile.name)" zero_wait_dfs: "enable" radio_2: @@ -3299,6 +3446,7 @@ EXAMPLES = """ mimo_mode: "default" mode: "disabled" optional_antenna: "none" + optional_antenna_gain: "<your_own_value>" power_level: "100" power_mode: "dBm" power_value: "27" @@ -3307,14 +3455,19 @@ EXAMPLES = """ radio_id: "2" rts_threshold: "2346" sam_bssid: "<your_own_value>" + sam_ca_certificate: "<your_own_value>" sam_captive_portal: "enable" + sam_client_certificate: "<your_own_value>" sam_cwp_failure_string: "<your_own_value>" sam_cwp_match_string: "<your_own_value>" sam_cwp_password: "<your_own_value>" sam_cwp_success_string: "<your_own_value>" sam_cwp_test_url: "<your_own_value>" sam_cwp_username: "<your_own_value>" + sam_eap_method: "both" sam_password: "<your_own_value>" + sam_private_key: "<your_own_value>" + sam_private_key_password: "<your_own_value>" sam_report_intv: "0" sam_security_type: "open" sam_server: "<your_own_value>" @@ -3331,7 +3484,7 @@ EXAMPLES = """ vap_all: "tunnel" vaps: - - name: "default_name_261 (source wireless-controller.vap-group.name system.interface.name)" + name: "default_name_274 (source wireless-controller.vap-group.name system.interface.name)" wids_profile: "<your_own_value> (source wireless-controller.wids-profile.name)" zero_wait_dfs: "enable" radio_3: @@ -3340,7 +3493,7 @@ EXAMPLES = """ ap_handoff: "enable" ap_sniffer_addr: "<your_own_value>" ap_sniffer_bufsize: "16" - ap_sniffer_chan: "6" + ap_sniffer_chan: "37" ap_sniffer_ctl: "enable" ap_sniffer_data: "enable" ap_sniffer_mgmt_beacon: "enable" @@ -3379,6 +3532,7 @@ EXAMPLES = """ mimo_mode: "default" mode: "disabled" optional_antenna: "none" + optional_antenna_gain: "<your_own_value>" power_level: "100" power_mode: "dBm" power_value: "27" @@ -3387,14 +3541,19 @@ EXAMPLES = """ radio_id: "2" rts_threshold: "2346" sam_bssid: "<your_own_value>" + sam_ca_certificate: "<your_own_value>" sam_captive_portal: "enable" + sam_client_certificate: "<your_own_value>" sam_cwp_failure_string: "<your_own_value>" sam_cwp_match_string: "<your_own_value>" sam_cwp_password: "<your_own_value>" sam_cwp_success_string: "<your_own_value>" sam_cwp_test_url: "<your_own_value>" sam_cwp_username: "<your_own_value>" + sam_eap_method: "both" sam_password: "<your_own_value>" + sam_private_key: "<your_own_value>" + sam_private_key_password: "<your_own_value>" sam_report_intv: "0" sam_security_type: "open" sam_server: "<your_own_value>" @@ -3411,7 +3570,7 @@ EXAMPLES = """ vap_all: "tunnel" vaps: - - name: "default_name_339 (source wireless-controller.vap-group.name system.interface.name)" + name: "default_name_358 (source wireless-controller.vap-group.name system.interface.name)" wids_profile: "<your_own_value> (source wireless-controller.wids-profile.name)" zero_wait_dfs: "enable" radio_4: @@ -3459,6 +3618,7 @@ EXAMPLES = """ mimo_mode: "default" mode: "disabled" optional_antenna: "none" + optional_antenna_gain: "<your_own_value>" power_level: "100" power_mode: "dBm" power_value: "27" @@ -3466,14 +3626,19 @@ EXAMPLES = """ protection_mode: "rtscts" rts_threshold: "2346" sam_bssid: "<your_own_value>" + sam_ca_certificate: "<your_own_value>" sam_captive_portal: "enable" + sam_client_certificate: "<your_own_value>" sam_cwp_failure_string: "<your_own_value>" sam_cwp_match_string: "<your_own_value>" sam_cwp_password: "<your_own_value>" sam_cwp_success_string: "<your_own_value>" sam_cwp_test_url: "<your_own_value>" sam_cwp_username: "<your_own_value>" + sam_eap_method: "both" sam_password: "<your_own_value>" + sam_private_key: "<your_own_value>" + sam_private_key_password: "<your_own_value>" sam_report_intv: "0" sam_security_type: "open" sam_server: "<your_own_value>" @@ -3490,13 +3655,13 @@ EXAMPLES = """ vap_all: "tunnel" vaps: - - name: "default_name_416 (source wireless-controller.vap-group.name system.interface.name)" + name: "default_name_441 (source wireless-controller.vap-group.name system.interface.name)" wids_profile: "<your_own_value> (source wireless-controller.wids-profile.name)" zero_wait_dfs: "enable" split_tunneling_acl: - dest_ip: "<your_own_value>" - id: "421" + id: "446" split_tunneling_acl_local_ap_subnet: "enable" split_tunneling_acl_path: "tunnel" syslog_profile: "<your_own_value> (source wireless-controller.syslog-profile.name)" @@ -3504,6 +3669,7 @@ EXAMPLES = """ tun_mtu_uplink: "0" unii_4_5ghz_band: "enable" wan_port_auth: "none" + wan_port_auth_macsec: "enable" wan_port_auth_methods: "all" wan_port_auth_password: "<your_own_value>" wan_port_auth_usrname: "<your_own_value>" @@ -3605,6 +3771,7 @@ def filter_wireless_controller_wtp_profile_data(json): "ap_handoff", "apcfg_profile", "ble_profile", + "bonjour_profile", "comment", "console_login", "control_message_offload", @@ -3643,6 +3810,7 @@ def filter_wireless_controller_wtp_profile_data(json): "tun_mtu_uplink", "unii_4_5ghz_band", "wan_port_auth", + "wan_port_auth_macsec", "wan_port_auth_methods", "wan_port_auth_password", "wan_port_auth_usrname", @@ -3713,9 +3881,9 @@ def underscore_to_hyphen(data): def valid_attr_to_invalid_attr(data): - specillist = {"80211d": "set_80211d"} + speciallist = {"80211d": "set_80211d"} - for k, v in specillist.items(): + for k, v in speciallist.items(): if v == data: return k @@ -3724,8 +3892,11 @@ def valid_attr_to_invalid_attr(data): def valid_attr_to_invalid_attrs(data): if isinstance(data, list): + new_data = [] for elem in data: elem = valid_attr_to_invalid_attrs(elem) + new_data.append(elem) + data = new_data elif isinstance(data, dict): new_data = {} for k, v in data.items(): @@ -3744,12 +3915,10 @@ def wireless_controller_wtp_profile(data, fos, check_mode=False): wireless_controller_wtp_profile_data = flatten_multilists_attributes( wireless_controller_wtp_profile_data ) - filtered_data = underscore_to_hyphen( - filter_wireless_controller_wtp_profile_data( - wireless_controller_wtp_profile_data - ) + filtered_data = filter_wireless_controller_wtp_profile_data( + wireless_controller_wtp_profile_data ) - converted_data = valid_attr_to_invalid_attrs(filtered_data) + converted_data = underscore_to_hyphen(valid_attr_to_invalid_attrs(filtered_data)) # check_mode starts from here if check_mode: @@ -3957,10 +4126,15 @@ versioned_schema = { "value": "431G", "v_range": [["v7.0.8", "v7.0.12"], ["v7.2.1", ""]], }, + {"value": "432G", "v_range": [["v7.4.2", ""]]}, { "value": "433G", "v_range": [["v7.0.8", "v7.0.12"], ["v7.2.1", ""]], }, + {"value": "241K", "v_range": [["v7.4.2", ""]]}, + {"value": "243K", "v_range": [["v7.4.2", ""]]}, + {"value": "441K", "v_range": [["v7.4.2", ""]]}, + {"value": "443K", "v_range": [["v7.4.2", ""]]}, {"value": "U421E"}, {"value": "U422EV"}, {"value": "U423E"}, @@ -4049,6 +4223,7 @@ versioned_schema = { "multiple_values": True, "elements": "str", }, + "bonjour_profile": {"v_range": [["v7.4.2", ""]], "type": "string"}, "apcfg_profile": {"v_range": [["v6.4.0", ""]], "type": "string"}, "ble_profile": {"v_range": [["v6.0.0", ""]], "type": "string"}, "syslog_profile": {"v_range": [["v7.0.2", ""]], "type": "string"}, @@ -4687,6 +4862,7 @@ versioned_schema = { "type": "string", "options": [ {"value": "none"}, + {"value": "custom", "v_range": [["v7.4.2", ""]]}, {"value": "FANT-04ABGN-0606-O-N"}, {"value": "FANT-04ABGN-1414-P-N"}, {"value": "FANT-04ABGN-8065-P-N"}, @@ -4696,6 +4872,10 @@ versioned_schema = { {"value": "FANT-08ABGN-1213-D-R"}, ], }, + "optional_antenna_gain": { + "v_range": [["v7.4.2", ""]], + "type": "string", + }, "auto_power_level": { "v_range": [["v6.0.0", ""]], "type": "string", @@ -4752,6 +4932,8 @@ versioned_schema = { {"value": "open"}, {"value": "wpa-personal"}, {"value": "wpa-enterprise"}, + {"value": "wpa3-sae", "v_range": [["v7.4.2", ""]]}, + {"value": "owe", "v_range": [["v7.4.2", ""]]}, ], }, "sam_captive_portal": { @@ -4771,6 +4953,21 @@ versioned_schema = { "v_range": [["v7.0.1", ""]], "type": "string", }, + "sam_eap_method": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "both"}, {"value": "tls"}, {"value": "peap"}], + }, + "sam_client_certificate": { + "v_range": [["v7.4.2", ""]], + "type": "string", + }, + "sam_private_key": {"v_range": [["v7.4.2", ""]], "type": "string"}, + "sam_private_key_password": { + "v_range": [["v7.4.2", ""]], + "type": "string", + }, + "sam_ca_certificate": {"v_range": [["v7.4.2", ""]], "type": "string"}, "sam_username": {"v_range": [["v7.0.0", ""]], "type": "string"}, "sam_password": {"v_range": [["v7.0.0", ""]], "type": "string"}, "sam_test": { @@ -5049,6 +5246,7 @@ versioned_schema = { "type": "string", "options": [ {"value": "none"}, + {"value": "custom", "v_range": [["v7.4.2", ""]]}, {"value": "FANT-04ABGN-0606-O-N"}, {"value": "FANT-04ABGN-1414-P-N"}, {"value": "FANT-04ABGN-8065-P-N"}, @@ -5058,6 +5256,10 @@ versioned_schema = { {"value": "FANT-08ABGN-1213-D-R"}, ], }, + "optional_antenna_gain": { + "v_range": [["v7.4.2", ""]], + "type": "string", + }, "auto_power_level": { "v_range": [["v6.0.0", ""]], "type": "string", @@ -5114,6 +5316,8 @@ versioned_schema = { {"value": "open"}, {"value": "wpa-personal"}, {"value": "wpa-enterprise"}, + {"value": "wpa3-sae", "v_range": [["v7.4.2", ""]]}, + {"value": "owe", "v_range": [["v7.4.2", ""]]}, ], }, "sam_captive_portal": { @@ -5133,6 +5337,21 @@ versioned_schema = { "v_range": [["v7.0.1", ""]], "type": "string", }, + "sam_eap_method": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "both"}, {"value": "tls"}, {"value": "peap"}], + }, + "sam_client_certificate": { + "v_range": [["v7.4.2", ""]], + "type": "string", + }, + "sam_private_key": {"v_range": [["v7.4.2", ""]], "type": "string"}, + "sam_private_key_password": { + "v_range": [["v7.4.2", ""]], + "type": "string", + }, + "sam_ca_certificate": {"v_range": [["v7.4.2", ""]], "type": "string"}, "sam_username": {"v_range": [["v7.0.0", ""]], "type": "string"}, "sam_password": {"v_range": [["v7.0.0", ""]], "type": "string"}, "sam_test": { @@ -5411,6 +5630,7 @@ versioned_schema = { "type": "string", "options": [ {"value": "none"}, + {"value": "custom", "v_range": [["v7.4.2", ""]]}, {"value": "FANT-04ABGN-0606-O-N"}, {"value": "FANT-04ABGN-1414-P-N"}, {"value": "FANT-04ABGN-8065-P-N"}, @@ -5420,6 +5640,10 @@ versioned_schema = { {"value": "FANT-08ABGN-1213-D-R"}, ], }, + "optional_antenna_gain": { + "v_range": [["v7.4.2", ""]], + "type": "string", + }, "auto_power_level": { "v_range": [["v6.2.0", ""]], "type": "string", @@ -5476,6 +5700,8 @@ versioned_schema = { {"value": "open"}, {"value": "wpa-personal"}, {"value": "wpa-enterprise"}, + {"value": "wpa3-sae", "v_range": [["v7.4.2", ""]]}, + {"value": "owe", "v_range": [["v7.4.2", ""]]}, ], }, "sam_captive_portal": { @@ -5495,6 +5721,21 @@ versioned_schema = { "v_range": [["v7.0.1", ""]], "type": "string", }, + "sam_eap_method": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "both"}, {"value": "tls"}, {"value": "peap"}], + }, + "sam_client_certificate": { + "v_range": [["v7.4.2", ""]], + "type": "string", + }, + "sam_private_key": {"v_range": [["v7.4.2", ""]], "type": "string"}, + "sam_private_key_password": { + "v_range": [["v7.4.2", ""]], + "type": "string", + }, + "sam_ca_certificate": {"v_range": [["v7.4.2", ""]], "type": "string"}, "sam_username": {"v_range": [["v7.0.0", ""]], "type": "string"}, "sam_password": {"v_range": [["v7.0.0", ""]], "type": "string"}, "sam_test": { @@ -5770,6 +6011,7 @@ versioned_schema = { "type": "string", "options": [ {"value": "none"}, + {"value": "custom", "v_range": [["v7.4.2", ""]]}, {"value": "FANT-04ABGN-0606-O-N"}, {"value": "FANT-04ABGN-1414-P-N"}, {"value": "FANT-04ABGN-8065-P-N"}, @@ -5779,6 +6021,10 @@ versioned_schema = { {"value": "FANT-08ABGN-1213-D-R"}, ], }, + "optional_antenna_gain": { + "v_range": [["v7.4.2", ""]], + "type": "string", + }, "auto_power_level": { "v_range": [["v6.2.0", "v6.2.0"], ["v6.2.5", ""]], "type": "string", @@ -5865,6 +6111,8 @@ versioned_schema = { {"value": "open"}, {"value": "wpa-personal"}, {"value": "wpa-enterprise"}, + {"value": "wpa3-sae", "v_range": [["v7.4.2", ""]]}, + {"value": "owe", "v_range": [["v7.4.2", ""]]}, ], }, "sam_captive_portal": { @@ -5884,6 +6132,21 @@ versioned_schema = { "v_range": [["v7.0.1", ""]], "type": "string", }, + "sam_eap_method": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "both"}, {"value": "tls"}, {"value": "peap"}], + }, + "sam_client_certificate": { + "v_range": [["v7.4.2", ""]], + "type": "string", + }, + "sam_private_key": {"v_range": [["v7.4.2", ""]], "type": "string"}, + "sam_private_key_password": { + "v_range": [["v7.4.2", ""]], + "type": "string", + }, + "sam_ca_certificate": {"v_range": [["v7.4.2", ""]], "type": "string"}, "sam_username": {"v_range": [["v7.0.0", ""]], "type": "string"}, "sam_password": {"v_range": [["v7.0.0", ""]], "type": "string"}, "sam_test": { @@ -6267,6 +6530,11 @@ versioned_schema = { {"value": "EAP-PEAP"}, ], }, + "wan_port_auth_macsec": { + "v_range": [["v7.4.2", ""]], + "type": "string", + "options": [{"value": "enable"}, {"value": "disable"}], + }, "unii_4_5ghz_band": { "v_range": [["v7.4.0", ""]], "type": "string", diff --git a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_wtp_status.py b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_wtp_status.py index e7e3e0827..3f5b5929d 100644 --- a/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_wtp_status.py +++ b/ansible_collections/fortinet/fortios/plugins/modules/fortios_wireless_controller_wtp_status.py @@ -38,7 +38,7 @@ notes: - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks requirements: - - ansible>=2.14 + - ansible>=2.15 options: access_token: description: @@ -200,9 +200,9 @@ def underscore_to_hyphen(data): def valid_attr_to_invalid_attr(data): - specillist = {"<wtp_id>": "wtp_id"} + speciallist = {"<wtp_id>": "wtp_id"} - for k, v in specillist.items(): + for k, v in speciallist.items(): if v == data: return k @@ -211,8 +211,11 @@ def valid_attr_to_invalid_attr(data): def valid_attr_to_invalid_attrs(data): if isinstance(data, list): + new_data = [] for elem in data: elem = valid_attr_to_invalid_attrs(elem) + new_data.append(elem) + data = new_data elif isinstance(data, dict): new_data = {} for k, v in data.items(): @@ -225,10 +228,10 @@ def valid_attr_to_invalid_attrs(data): def wireless_controller_wtp_status(data, fos): vdom = data["vdom"] wireless_controller_wtp_status_data = data["wireless_controller_wtp_status"] - filtered_data = underscore_to_hyphen( - filter_wireless_controller_wtp_status_data(wireless_controller_wtp_status_data) + filtered_data = filter_wireless_controller_wtp_status_data( + wireless_controller_wtp_status_data ) - converted_data = valid_attr_to_invalid_attrs(filtered_data) + converted_data = underscore_to_hyphen(valid_attr_to_invalid_attrs(filtered_data)) return fos.set("wireless-controller", "wtp-status", data=converted_data, vdom=vdom) |