summaryrefslogtreecommitdiff
path: root/test/units
diff options
context:
space:
mode:
authorAnsible Core Team <info@ansible.com>2020-03-09 09:40:35 +0000
committerAnsible Core Team <info@ansible.com>2020-03-09 09:40:35 +0000
commit37e8b907bcfdd5bfd3e4c8c5af8de23641874e32 (patch)
treeb8e7bddf8bcd439cdc2f5cadf0dc14fcc0411038 /test/units
parentc8db741307ca7ba1342a403a92ab1c82ae563eaa (diff)
downloadansible-37e8b907bcfdd5bfd3e4c8c5af8de23641874e32.tar.gz
Migrated to f5networks.f5_modules
Diffstat (limited to 'test/units')
-rw-r--r--test/units/modules/network/f5/fixtures/MyApp-0.1.0-0001.noarch.rpmbin57508 -> 0 bytes
-rw-r--r--test/units/modules/network/f5/fixtures/basic-iapp.tmpl25
-rw-r--r--test/units/modules/network/f5/fixtures/cert1.crt101
-rw-r--r--test/units/modules/network/f5/fixtures/cert1.key27
-rw-r--r--test/units/modules/network/f5/fixtures/cert2.crt101
-rw-r--r--test/units/modules/network/f5/fixtures/cert2.key30
-rw-r--r--test/units/modules/network/f5/fixtures/chain1.crt68
-rw-r--r--test/units/modules/network/f5/fixtures/create_gtm_irule.tcl8
-rw-r--r--test/units/modules/network/f5/fixtures/create_iapp_service_parameters_f5_http.json199
-rw-r--r--test/units/modules/network/f5/fixtures/create_iapp_template.iapp56
-rw-r--r--test/units/modules/network/f5/fixtures/create_insecure_cert1.crt101
-rw-r--r--test/units/modules/network/f5/fixtures/create_insecure_key1.key27
-rw-r--r--test/units/modules/network/f5/fixtures/create_ltm_irule.tcl18
-rw-r--r--test/units/modules/network/f5/fixtures/data-group-address.txt5
-rw-r--r--test/units/modules/network/f5/fixtures/data-group-integer.txt6
-rw-r--r--test/units/modules/network/f5/fixtures/data-group-string.txt6
-rw-r--r--test/units/modules/network/f5/fixtures/fake_policy.tar.gzbin1450 -> 0 bytes
-rw-r--r--test/units/modules/network/f5/fixtures/fake_policy.xml12174
-rw-r--r--test/units/modules/network/f5/fixtures/load_afm_global_network_log_network.json31
-rw-r--r--test/units/modules/network/f5/fixtures/load_afm_log_global_network_profile.json50
-rw-r--r--test/units/modules/network/f5/fixtures/load_afm_schedule.json19
-rw-r--r--test/units/modules/network/f5/fixtures/load_apm_acl.json27
-rw-r--r--test/units/modules/network/f5/fixtures/load_apm_network_access.json98
-rw-r--r--test/units/modules/network/f5/fixtures/load_asm_dos.json276
-rw-r--r--test/units/modules/network/f5/fixtures/load_asm_policy_active.json197
-rw-r--r--test/units/modules/network/f5/fixtures/load_asm_policy_inactive.json197
-rw-r--r--test/units/modules/network/f5/fixtures/load_auth_remote_role_role_info_1.json16
-rw-r--r--test/units/modules/network/f5/fixtures/load_auth_user_no_pass.json18
-rw-r--r--test/units/modules/network/f5/fixtures/load_auth_user_with_pass.json19
-rw-r--r--test/units/modules/network/f5/fixtures/load_generic_parser.json16
-rw-r--r--test/units/modules/network/f5/fixtures/load_generic_peer.json22
-rw-r--r--test/units/modules/network/f5/fixtures/load_generic_route.json19
-rw-r--r--test/units/modules/network/f5/fixtures/load_generic_router.json22
-rw-r--r--test/units/modules/network/f5/fixtures/load_generic_transport_config.json53
-rw-r--r--test/units/modules/network/f5/fixtures/load_gtm_datacenter_default.json9
-rw-r--r--test/units/modules/network/f5/fixtures/load_gtm_datacenter_disabled.json12
-rw-r--r--test/units/modules/network/f5/fixtures/load_gtm_global_settings_general_1.json25
-rw-r--r--test/units/modules/network/f5/fixtures/load_gtm_irules.json20
-rw-r--r--test/units/modules/network/f5/fixtures/load_gtm_monitor_firepass_1.json19
-rw-r--r--test/units/modules/network/f5/fixtures/load_gtm_monitor_http_1.json21
-rw-r--r--test/units/modules/network/f5/fixtures/load_gtm_monitor_tcp_1.json18
-rw-r--r--test/units/modules/network/f5/fixtures/load_gtm_pool_a_collection.json44
-rw-r--r--test/units/modules/network/f5/fixtures/load_gtm_pool_a_default.json38
-rw-r--r--test/units/modules/network/f5/fixtures/load_gtm_pool_a_example_stats.json48
-rw-r--r--test/units/modules/network/f5/fixtures/load_gtm_pool_a_member_1.json18
-rw-r--r--test/units/modules/network/f5/fixtures/load_gtm_pool_a_with_members_1.json94
-rw-r--r--test/units/modules/network/f5/fixtures/load_gtm_pool_untyped_default.json39
-rw-r--r--test/units/modules/network/f5/fixtures/load_gtm_server_1.json68
-rw-r--r--test/units/modules/network/f5/fixtures/load_gtm_server_virtual_2.json18
-rw-r--r--test/units/modules/network/f5/fixtures/load_gtm_wide_ip_with_pools.json30
-rw-r--r--test/units/modules/network/f5/fixtures/load_imish_output_1.json6
-rw-r--r--test/units/modules/network/f5/fixtures/load_ltm_dns_cache_resolver_1.json43
-rw-r--r--test/units/modules/network/f5/fixtures/load_ltm_dns_nameserver_1.json18
-rw-r--r--test/units/modules/network/f5/fixtures/load_ltm_dns_zone_1.json31
-rw-r--r--test/units/modules/network/f5/fixtures/load_ltm_fastl4_profile_1.json56
-rw-r--r--test/units/modules/network/f5/fixtures/load_ltm_http2_profile.json27
-rw-r--r--test/units/modules/network/f5/fixtures/load_ltm_http_profile_1.json81
-rw-r--r--test/units/modules/network/f5/fixtures/load_ltm_irules.json179
-rw-r--r--test/units/modules/network/f5/fixtures/load_ltm_monitor_http.json28
-rw-r--r--test/units/modules/network/f5/fixtures/load_ltm_monitor_https.json30
-rw-r--r--test/units/modules/network/f5/fixtures/load_ltm_monitor_tcp.json25
-rw-r--r--test/units/modules/network/f5/fixtures/load_ltm_monitor_tcp_echo.json21
-rw-r--r--test/units/modules/network/f5/fixtures/load_ltm_monitor_tcp_half_open.json16
-rw-r--r--test/units/modules/network/f5/fixtures/load_ltm_monitor_udp.json25
-rw-r--r--test/units/modules/network/f5/fixtures/load_ltm_node_1.json25
-rw-r--r--test/units/modules/network/f5/fixtures/load_ltm_node_2.json26
-rw-r--r--test/units/modules/network/f5/fixtures/load_ltm_node_3.json24
-rw-r--r--test/units/modules/network/f5/fixtures/load_ltm_policy_draft_rule_http-uri_forward.json60
-rw-r--r--test/units/modules/network/f5/fixtures/load_ltm_pool.json32
-rw-r--r--test/units/modules/network/f5/fixtures/load_ltm_profile_analytics_1.json52
-rw-r--r--test/units/modules/network/f5/fixtures/load_ltm_profile_clientssl.json103
-rw-r--r--test/units/modules/network/f5/fixtures/load_ltm_profile_dns_1.json35
-rw-r--r--test/units/modules/network/f5/fixtures/load_ltm_profile_http_compression_1.json37
-rw-r--r--test/units/modules/network/f5/fixtures/load_ltm_profile_oneconnect_1.json18
-rw-r--r--test/units/modules/network/f5/fixtures/load_ltm_profile_persistence_cookie_1.json27
-rw-r--r--test/units/modules/network/f5/fixtures/load_ltm_profile_persistence_src_addr_1.json22
-rw-r--r--test/units/modules/network/f5/fixtures/load_ltm_profile_serverssl_1.json73
-rw-r--r--test/units/modules/network/f5/fixtures/load_ltm_profile_tcp_1.json92
-rw-r--r--test/units/modules/network/f5/fixtures/load_ltm_profile_udp_1.json27
-rw-r--r--test/units/modules/network/f5/fixtures/load_ltm_snat_translation_default.json15
-rw-r--r--test/units/modules/network/f5/fixtures/load_ltm_snatpool.json20
-rw-r--r--test/units/modules/network/f5/fixtures/load_ltm_virtual_1.json43
-rw-r--r--test/units/modules/network/f5/fixtures/load_ltm_virtual_1_address.json25
-rw-r--r--test/units/modules/network/f5/fixtures/load_ltm_virtual_2.json65
-rw-r--r--test/units/modules/network/f5/fixtures/load_ltm_virtual_3.json115
-rw-r--r--test/units/modules/network/f5/fixtures/load_ltm_virtual_address_collection_1.json31
-rw-r--r--test/units/modules/network/f5/fixtures/load_ltm_virtual_address_default.json25
-rw-r--r--test/units/modules/network/f5/fixtures/load_machine_resolver.json187
-rw-r--r--test/units/modules/network/f5/fixtures/load_net_dns_resolver_1.json19
-rw-r--r--test/units/modules/network/f5/fixtures/load_net_interfaces.json424
-rw-r--r--test/units/modules/network/f5/fixtures/load_net_node_with_fqdn.json25
-rw-r--r--test/units/modules/network/f5/fixtures/load_net_node_with_ipv4_address.json24
-rw-r--r--test/units/modules/network/f5/fixtures/load_net_route_description.json15
-rw-r--r--test/units/modules/network/f5/fixtures/load_net_route_domain_1.json36
-rw-r--r--test/units/modules/network/f5/fixtures/load_net_service_policy_1.json17
-rw-r--r--test/units/modules/network/f5/fixtures/load_net_timer_policy_1.json9
-rw-r--r--test/units/modules/network/f5/fixtures/load_net_tunnel_1.json25
-rw-r--r--test/units/modules/network/f5/fixtures/load_ntp.json13
-rw-r--r--test/units/modules/network/f5/fixtures/load_regkey_license_key.json96
-rw-r--r--test/units/modules/network/f5/fixtures/load_regkey_license_pool.json10
-rw-r--r--test/units/modules/network/f5/fixtures/load_remote_user_settings.json10
-rw-r--r--test/units/modules/network/f5/fixtures/load_security_address_list_1.json53
-rw-r--r--test/units/modules/network/f5/fixtures/load_security_firewall_global_rules_1.json16
-rw-r--r--test/units/modules/network/f5/fixtures/load_security_firewall_policy_1.json51
-rw-r--r--test/units/modules/network/f5/fixtures/load_security_port_list_1.json41
-rw-r--r--test/units/modules/network/f5/fixtures/load_shared_system_setup_1.json9
-rw-r--r--test/units/modules/network/f5/fixtures/load_sys_application_template_w_new_checksum.json21
-rw-r--r--test/units/modules/network/f5/fixtures/load_sys_application_template_w_old_checksum.json21
-rw-r--r--test/units/modules/network/f5/fixtures/load_sys_crypto_cert_validator_1.json33
-rw-r--r--test/units/modules/network/f5/fixtures/load_sys_file_external-monitor_1.json17
-rw-r--r--test/units/modules/network/f5/fixtures/load_sys_file_ssl_cert_with_issuer_cert.json42
-rw-r--r--test/units/modules/network/f5/fixtures/load_sys_global_settings.json24
-rw-r--r--test/units/modules/network/f5/fixtures/load_sys_httpd.json36
-rw-r--r--test/units/modules/network/f5/fixtures/load_sys_httpd_non_default.json36
-rw-r--r--test/units/modules/network/f5/fixtures/load_sys_log_config_destination_1.json15
-rw-r--r--test/units/modules/network/f5/fixtures/load_sys_log_config_publisher_1.json32
-rw-r--r--test/units/modules/network/f5/fixtures/load_sys_management_route_1.json12
-rw-r--r--test/units/modules/network/f5/fixtures/load_sys_provision_default.json5
-rw-r--r--test/units/modules/network/f5/fixtures/load_sys_smtp_server.json16
-rw-r--r--test/units/modules/network/f5/fixtures/load_sys_snmp_communities_1.json10
-rw-r--r--test/units/modules/network/f5/fixtures/load_sys_snmp_communities_2.json12
-rw-r--r--test/units/modules/network/f5/fixtures/load_sys_snmp_communities_3.json12
-rw-r--r--test/units/modules/network/f5/fixtures/load_sys_snmp_communities_4.json10
-rw-r--r--test/units/modules/network/f5/fixtures/load_sys_snmp_users_1.json15
-rw-r--r--test/units/modules/network/f5/fixtures/load_sys_software_image_1.json15
-rw-r--r--test/units/modules/network/f5/fixtures/load_sys_software_update.json9
-rw-r--r--test/units/modules/network/f5/fixtures/load_sys_syslog_1.json24
-rw-r--r--test/units/modules/network/f5/fixtures/load_tg_ha_order.json22
-rw-r--r--test/units/modules/network/f5/fixtures/load_tm_auth_partition.json9
-rw-r--r--test/units/modules/network/f5/fixtures/load_tm_auth_password_policy_1.json15
-rw-r--r--test/units/modules/network/f5/fixtures/load_tm_auth_tacacs_1.json19
-rw-r--r--test/units/modules/network/f5/fixtures/load_tm_cli_alias_1.json10
-rw-r--r--test/units/modules/network/f5/fixtures/load_tm_cli_script_1.json13
-rw-r--r--test/units/modules/network/f5/fixtures/load_tm_cm_device.json76
-rw-r--r--test/units/modules/network/f5/fixtures/load_tm_cm_device_default.json61
-rw-r--r--test/units/modules/network/f5/fixtures/load_tm_cm_device_group.json19
-rw-r--r--test/units/modules/network/f5/fixtures/load_tm_cm_traffic_group_1.json16
-rw-r--r--test/units/modules/network/f5/fixtures/load_tm_cm_traffic_group_2.json16
-rw-r--r--test/units/modules/network/f5/fixtures/load_tm_net_self.json26
-rw-r--r--test/units/modules/network/f5/fixtures/load_tm_net_trunk_1.json29
-rw-r--r--test/units/modules/network/f5/fixtures/load_tm_sys_syslog_1.json38
-rw-r--r--test/units/modules/network/f5/fixtures/load_tm_sys_syslog_2.json38
-rw-r--r--test/units/modules/network/f5/fixtures/load_tmm_log.json14
-rw-r--r--test/units/modules/network/f5/fixtures/load_vlan.json30
-rw-r--r--test/units/modules/network/f5/fixtures/load_vlan_interfaces.json15
-rw-r--r--test/units/modules/network/f5/fixtures/load_vlan_tagged_ifcs.json12
-rw-r--r--test/units/modules/network/f5/fixtures/load_vlan_untag_ifcs.json11
-rw-r--r--test/units/modules/network/f5/fixtures/pool_members_subcollection.json21
-rw-r--r--test/units/modules/network/f5/fixtures/update_iapp_service_parameters_f5_http.json195
-rw-r--r--test/units/modules/network/f5/fixtures/update_vlan_description.json31
-rw-r--r--test/units/modules/network/f5/test_bigip_apm_acl.py243
-rw-r--r--test/units/modules/network/f5/test_bigip_apm_network_access.py209
-rw-r--r--test/units/modules/network/f5/test_bigip_apm_policy_fetch.py128
-rw-r--r--test/units/modules/network/f5/test_bigip_apm_policy_import.py127
-rw-r--r--test/units/modules/network/f5/test_bigip_appsvcs_extension.py104
-rw-r--r--test/units/modules/network/f5/test_bigip_asm_dos_application.py279
-rw-r--r--test/units/modules/network/f5/test_bigip_asm_policy_fetch.py130
-rw-r--r--test/units/modules/network/f5/test_bigip_asm_policy_import.py125
-rw-r--r--test/units/modules/network/f5/test_bigip_asm_policy_manage.py519
-rw-r--r--test/units/modules/network/f5/test_bigip_asm_policy_server_technology.py122
-rw-r--r--test/units/modules/network/f5/test_bigip_asm_policy_signature_set.py151
-rw-r--r--test/units/modules/network/f5/test_bigip_cli_alias.py118
-rw-r--r--test/units/modules/network/f5/test_bigip_cli_script.py114
-rw-r--r--test/units/modules/network/f5/test_bigip_command.py299
-rw-r--r--test/units/modules/network/f5/test_bigip_config.py112
-rw-r--r--test/units/modules/network/f5/test_bigip_configsync_action.py135
-rw-r--r--test/units/modules/network/f5/test_bigip_data_group.py485
-rw-r--r--test/units/modules/network/f5/test_bigip_device_auth.py131
-rw-r--r--test/units/modules/network/f5/test_bigip_device_auth_ldap.py131
-rw-r--r--test/units/modules/network/f5/test_bigip_device_certificate.py173
-rw-r--r--test/units/modules/network/f5/test_bigip_device_connectivity.py388
-rw-r--r--test/units/modules/network/f5/test_bigip_device_dns.py126
-rw-r--r--test/units/modules/network/f5/test_bigip_device_group.py186
-rw-r--r--test/units/modules/network/f5/test_bigip_device_group_member.py104
-rw-r--r--test/units/modules/network/f5/test_bigip_device_ha_group.py230
-rw-r--r--test/units/modules/network/f5/test_bigip_device_httpd.py303
-rw-r--r--test/units/modules/network/f5/test_bigip_device_info.py130
-rw-r--r--test/units/modules/network/f5/test_bigip_device_license.py120
-rw-r--r--test/units/modules/network/f5/test_bigip_device_ntp.py253
-rw-r--r--test/units/modules/network/f5/test_bigip_device_sshd.py128
-rw-r--r--test/units/modules/network/f5/test_bigip_device_syslog.py111
-rw-r--r--test/units/modules/network/f5/test_bigip_device_traffic_group.py167
-rw-r--r--test/units/modules/network/f5/test_bigip_device_trust.py183
-rw-r--r--test/units/modules/network/f5/test_bigip_dns_cache_resolver.py113
-rw-r--r--test/units/modules/network/f5/test_bigip_dns_nameserver.py126
-rw-r--r--test/units/modules/network/f5/test_bigip_dns_resolver.py124
-rw-r--r--test/units/modules/network/f5/test_bigip_dns_zone.py128
-rw-r--r--test/units/modules/network/f5/test_bigip_file_copy.py121
-rw-r--r--test/units/modules/network/f5/test_bigip_firewall_address_list.py140
-rw-r--r--test/units/modules/network/f5/test_bigip_firewall_dos_profile.py110
-rw-r--r--test/units/modules/network/f5/test_bigip_firewall_dos_vector.py110
-rw-r--r--test/units/modules/network/f5/test_bigip_firewall_global_rules.py115
-rw-r--r--test/units/modules/network/f5/test_bigip_firewall_log_profile.py146
-rw-r--r--test/units/modules/network/f5/test_bigip_firewall_log_profile_network.py171
-rw-r--r--test/units/modules/network/f5/test_bigip_firewall_policy.py119
-rw-r--r--test/units/modules/network/f5/test_bigip_firewall_port_list.py147
-rw-r--r--test/units/modules/network/f5/test_bigip_firewall_rule.py156
-rw-r--r--test/units/modules/network/f5/test_bigip_firewall_rule_list.py109
-rw-r--r--test/units/modules/network/f5/test_bigip_firewall_schedule.py128
-rw-r--r--test/units/modules/network/f5/test_bigip_gtm_datacenter.py245
-rw-r--r--test/units/modules/network/f5/test_bigip_gtm_global.py120
-rw-r--r--test/units/modules/network/f5/test_bigip_gtm_monitor_bigip.py179
-rw-r--r--test/units/modules/network/f5/test_bigip_gtm_monitor_external.py135
-rw-r--r--test/units/modules/network/f5/test_bigip_gtm_monitor_firepass.py156
-rw-r--r--test/units/modules/network/f5/test_bigip_gtm_monitor_http.py162
-rw-r--r--test/units/modules/network/f5/test_bigip_gtm_monitor_https.py170
-rw-r--r--test/units/modules/network/f5/test_bigip_gtm_monitor_tcp.py223
-rw-r--r--test/units/modules/network/f5/test_bigip_gtm_monitor_tcp_half_open.py193
-rw-r--r--test/units/modules/network/f5/test_bigip_gtm_pool.py385
-rw-r--r--test/units/modules/network/f5/test_bigip_gtm_pool_member.py219
-rw-r--r--test/units/modules/network/f5/test_bigip_gtm_server.py341
-rw-r--r--test/units/modules/network/f5/test_bigip_gtm_topology_record.py132
-rw-r--r--test/units/modules/network/f5/test_bigip_gtm_topology_region.py144
-rw-r--r--test/units/modules/network/f5/test_bigip_gtm_virtual_server.py178
-rw-r--r--test/units/modules/network/f5/test_bigip_gtm_wide_ip.py351
-rw-r--r--test/units/modules/network/f5/test_bigip_hostname.py109
-rw-r--r--test/units/modules/network/f5/test_bigip_iapp_service.py376
-rw-r--r--test/units/modules/network/f5/test_bigip_iapp_template.py202
-rw-r--r--test/units/modules/network/f5/test_bigip_ike_peer.py111
-rw-r--r--test/units/modules/network/f5/test_bigip_imish_config.py104
-rw-r--r--test/units/modules/network/f5/test_bigip_ipsec_policy.py109
-rw-r--r--test/units/modules/network/f5/test_bigip_irule.py266
-rw-r--r--test/units/modules/network/f5/test_bigip_log_destination.py131
-rw-r--r--test/units/modules/network/f5/test_bigip_log_publisher.py132
-rw-r--r--test/units/modules/network/f5/test_bigip_lx_package.py123
-rw-r--r--test/units/modules/network/f5/test_bigip_management_route.py124
-rw-r--r--test/units/modules/network/f5/test_bigip_message_routing_peer.py194
-rw-r--r--test/units/modules/network/f5/test_bigip_message_routing_protocol.py179
-rw-r--r--test/units/modules/network/f5/test_bigip_message_routing_route.py178
-rw-r--r--test/units/modules/network/f5/test_bigip_message_routing_router.py206
-rw-r--r--test/units/modules/network/f5/test_bigip_message_routing_transport_config.py183
-rw-r--r--test/units/modules/network/f5/test_bigip_monitor_dns.py157
-rw-r--r--test/units/modules/network/f5/test_bigip_monitor_external.py120
-rw-r--r--test/units/modules/network/f5/test_bigip_monitor_gateway_icmp.py155
-rw-r--r--test/units/modules/network/f5/test_bigip_monitor_http.py452
-rw-r--r--test/units/modules/network/f5/test_bigip_monitor_https.py452
-rw-r--r--test/units/modules/network/f5/test_bigip_monitor_ldap.py110
-rw-r--r--test/units/modules/network/f5/test_bigip_monitor_snmp_dca.py175
-rw-r--r--test/units/modules/network/f5/test_bigip_monitor_tcp.py454
-rw-r--r--test/units/modules/network/f5/test_bigip_monitor_tcp_echo.py331
-rw-r--r--test/units/modules/network/f5/test_bigip_monitor_tcp_half_open.py338
-rw-r--r--test/units/modules/network/f5/test_bigip_monitor_udp.py452
-rw-r--r--test/units/modules/network/f5/test_bigip_node.py250
-rw-r--r--test/units/modules/network/f5/test_bigip_partition.py214
-rw-r--r--test/units/modules/network/f5/test_bigip_password_policy.py152
-rw-r--r--test/units/modules/network/f5/test_bigip_policy.py158
-rw-r--r--test/units/modules/network/f5/test_bigip_policy_rule.py198
-rw-r--r--test/units/modules/network/f5/test_bigip_pool.py546
-rw-r--r--test/units/modules/network/f5/test_bigip_pool_member.py256
-rw-r--r--test/units/modules/network/f5/test_bigip_profile_analytics.py121
-rw-r--r--test/units/modules/network/f5/test_bigip_profile_client_ssl.py129
-rw-r--r--test/units/modules/network/f5/test_bigip_profile_dns.py147
-rw-r--r--test/units/modules/network/f5/test_bigip_profile_fastl4.py178
-rw-r--r--test/units/modules/network/f5/test_bigip_profile_http.py127
-rw-r--r--test/units/modules/network/f5/test_bigip_profile_http2.py130
-rw-r--r--test/units/modules/network/f5/test_bigip_profile_http_compression.py129
-rw-r--r--test/units/modules/network/f5/test_bigip_profile_oneconnect.py124
-rw-r--r--test/units/modules/network/f5/test_bigip_profile_persistence_cookie.py124
-rw-r--r--test/units/modules/network/f5/test_bigip_profile_persistence_src_addr.py128
-rw-r--r--test/units/modules/network/f5/test_bigip_profile_server_ssl.py115
-rw-r--r--test/units/modules/network/f5/test_bigip_profile_tcp.py116
-rw-r--r--test/units/modules/network/f5/test_bigip_profile_udp.py119
-rw-r--r--test/units/modules/network/f5/test_bigip_provision.py318
-rw-r--r--test/units/modules/network/f5/test_bigip_qkview.py178
-rw-r--r--test/units/modules/network/f5/test_bigip_remote_role.py110
-rw-r--r--test/units/modules/network/f5/test_bigip_remote_syslog.py230
-rw-r--r--test/units/modules/network/f5/test_bigip_remote_user.py126
-rw-r--r--test/units/modules/network/f5/test_bigip_routedomain.py128
-rw-r--r--test/units/modules/network/f5/test_bigip_selfip.py207
-rw-r--r--test/units/modules/network/f5/test_bigip_service_policy.py132
-rw-r--r--test/units/modules/network/f5/test_bigip_smtp.py152
-rw-r--r--test/units/modules/network/f5/test_bigip_snat_pool.py187
-rw-r--r--test/units/modules/network/f5/test_bigip_snat_translation.py337
-rw-r--r--test/units/modules/network/f5/test_bigip_snmp.py266
-rw-r--r--test/units/modules/network/f5/test_bigip_snmp_community.py305
-rw-r--r--test/units/modules/network/f5/test_bigip_snmp_trap.py203
-rw-r--r--test/units/modules/network/f5/test_bigip_software_image.py123
-rw-r--r--test/units/modules/network/f5/test_bigip_software_install.py119
-rw-r--r--test/units/modules/network/f5/test_bigip_software_update.py119
-rw-r--r--test/units/modules/network/f5/test_bigip_ssl_certificate.py152
-rw-r--r--test/units/modules/network/f5/test_bigip_ssl_key.py113
-rw-r--r--test/units/modules/network/f5/test_bigip_ssl_ocsp.py130
-rw-r--r--test/units/modules/network/f5/test_bigip_static_route.py377
-rw-r--r--test/units/modules/network/f5/test_bigip_sys_daemon_log_tmm.py138
-rw-r--r--test/units/modules/network/f5/test_bigip_sys_db.py130
-rw-r--r--test/units/modules/network/f5/test_bigip_sys_global.py133
-rw-r--r--test/units/modules/network/f5/test_bigip_timer_policy.py112
-rw-r--r--test/units/modules/network/f5/test_bigip_traffic_selector.py108
-rw-r--r--test/units/modules/network/f5/test_bigip_trunk.py141
-rw-r--r--test/units/modules/network/f5/test_bigip_tunnel.py112
-rw-r--r--test/units/modules/network/f5/test_bigip_ucs.py411
-rw-r--r--test/units/modules/network/f5/test_bigip_ucs_fetch.py131
-rw-r--r--test/units/modules/network/f5/test_bigip_user.py892
-rw-r--r--test/units/modules/network/f5/test_bigip_vcmp_guest.py262
-rw-r--r--test/units/modules/network/f5/test_bigip_virtual_address.py235
-rw-r--r--test/units/modules/network/f5/test_bigip_virtual_server.py995
-rw-r--r--test/units/modules/network/f5/test_bigip_vlan.py344
-rw-r--r--test/units/modules/network/f5/test_bigip_wait.py128
-rw-r--r--test/units/modules/network/f5/test_bigiq_application_fasthttp.py242
-rw-r--r--test/units/modules/network/f5/test_bigiq_application_fastl4_tcp.py235
-rw-r--r--test/units/modules/network/f5/test_bigiq_application_fastl4_udp.py235
-rw-r--r--test/units/modules/network/f5/test_bigiq_application_http.py242
-rw-r--r--test/units/modules/network/f5/test_bigiq_application_https_offload.py260
-rw-r--r--test/units/modules/network/f5/test_bigiq_application_https_waf.py268
-rw-r--r--test/units/modules/network/f5/test_bigiq_device_discovery.py134
-rw-r--r--test/units/modules/network/f5/test_bigiq_device_info.py106
-rw-r--r--test/units/modules/network/f5/test_bigiq_regkey_license.py125
-rw-r--r--test/units/modules/network/f5/test_bigiq_regkey_license_assignment.py141
-rw-r--r--test/units/modules/network/f5/test_bigiq_regkey_pool.py109
-rw-r--r--test/units/modules/network/f5/test_bigiq_utility_license.py113
-rw-r--r--test/units/modules/network/f5/test_bigiq_utility_license_assignment.py134
311 files changed, 0 insertions, 50036 deletions
diff --git a/test/units/modules/network/f5/fixtures/MyApp-0.1.0-0001.noarch.rpm b/test/units/modules/network/f5/fixtures/MyApp-0.1.0-0001.noarch.rpm
deleted file mode 100644
index 1692813534..0000000000
--- a/test/units/modules/network/f5/fixtures/MyApp-0.1.0-0001.noarch.rpm
+++ /dev/null
Binary files differ
diff --git a/test/units/modules/network/f5/fixtures/basic-iapp.tmpl b/test/units/modules/network/f5/fixtures/basic-iapp.tmpl
deleted file mode 100644
index 7f9a681b74..0000000000
--- a/test/units/modules/network/f5/fixtures/basic-iapp.tmpl
+++ /dev/null
@@ -1,25 +0,0 @@
-sys application template good_templ {
- actions {
- definition {
- html-help {
- # HTML Help for the template
- }
- implementation {
- # TMSH implementation code
- }
- macro {
- # TMSH macro code
- }
- presentation {
- # APL presentation language
- }
- role-acl { admin manager resource-admin }
- run-as none
- }
- }
- description "My basic template"
- partition Common
- requires-modules { ltm }
- ignore-verification true
- requires-bigip-version-min 11.6.0
-}
diff --git a/test/units/modules/network/f5/fixtures/cert1.crt b/test/units/modules/network/f5/fixtures/cert1.crt
deleted file mode 100644
index 1d22f30289..0000000000
--- a/test/units/modules/network/f5/fixtures/cert1.crt
+++ /dev/null
@@ -1,101 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 1 (0x1)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C=US, ST=New York, L=New York, O=ACME CA, OU=Coyote, CN=ourca.domain.local
- Validity
- Not Before: Jun 30 16:46:09 2016 GMT
- Not After : Jun 25 16:46:09 2036 GMT
- Subject: C=US, ST=New York, O=ACME, OU=Coyote, CN=cert1.domain.local
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:d6:0f:bd:26:ef:14:4d:09:f6:db:8b:01:f5:4e:
- 6c:03:b1:35:20:16:b8:1b:7c:e6:b6:8d:97:1b:b0:
- 4f:8a:b6:cb:54:7e:7a:ff:fd:af:02:db:bf:9d:cf:
- 9a:4c:0d:87:93:8b:cc:61:f3:23:a9:6f:8e:d4:82:
- 2c:93:b6:e2:fa:37:ed:8a:d3:23:8f:6d:b5:78:4a:
- 38:ba:93:f9:4a:1c:40:06:33:d7:c0:98:20:d4:16:
- ac:a4:a5:6b:41:20:4c:3a:55:7e:c7:50:e7:95:07:
- 4e:86:15:86:7a:0f:6c:57:d2:07:1c:97:24:51:5b:
- 4e:f5:52:3a:f8:4f:95:6b:6c:83:1f:34:4e:ee:b0:
- ae:fe:46:90:38:f1:4d:85:72:8b:46:bc:d1:62:37:
- 65:5a:de:bb:16:51:1e:f5:cb:a0:ef:d6:7b:11:6f:
- 3b:0c:49:17:bc:4d:8c:f5:d9:f0:35:6b:f7:b6:4d:
- 50:eb:47:81:e3:06:f2:bd:ec:67:4f:ab:2b:03:aa:
- e2:1e:42:22:a9:c9:59:dc:0d:19:fb:c5:02:1d:d7:
- 58:e4:04:53:0a:1d:79:bb:c1:33:f1:cd:b7:10:2e:
- b4:6e:9b:dc:60:66:05:50:9f:20:66:a1:71:00:51:
- 54:cf:0a:70:f4:7c:45:c6:f0:a7:1c:11:2f:3e:a3:
- 1f:bf
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints:
- CA:FALSE
- Netscape Comment:
- OpenSSL Generated Certificate
- X509v3 Subject Key Identifier:
- 2D:FB:27:C7:B4:32:FF:F7:87:DB:2D:A7:76:AE:F0:96:7E:DA:DC:17
- X509v3 Authority Key Identifier:
- keyid:4F:2A:15:49:E6:CC:05:2F:2B:F4:0E:CC:BA:2E:4C:DF:13:90:F0:78
-
- Signature Algorithm: sha256WithRSAEncryption
- 3f:46:1c:3b:58:b4:99:f3:75:00:47:d2:fe:ba:ba:9a:04:46:
- 62:b6:2d:a0:0f:8f:c0:95:2a:58:8b:61:f5:14:90:30:26:37:
- 94:a1:a6:29:20:c9:b5:08:d7:f9:15:cb:9d:9c:19:ed:2f:a4:
- e6:91:48:85:1a:f7:ab:17:5e:79:23:69:b8:3c:0c:48:ae:c8:
- ba:90:d0:05:fb:33:7e:86:fd:12:f8:2d:0f:ff:16:15:9a:dc:
- 76:48:7d:65:5b:4e:93:14:e8:be:37:d1:13:f7:a7:b1:cd:ad:
- ae:4f:e1:72:b9:53:2d:cd:e6:42:76:44:93:21:28:58:c0:44:
- ab:3c:da:5b:e5:55:ab:04:86:4d:9c:4c:33:f4:4e:13:98:e9:
- 0f:d1:a3:70:2b:1d:11:20:47:26:f6:d8:45:7f:88:ad:f2:c1:
- 81:0f:be:cd:6c:79:80:94:30:eb:8d:cc:f3:7d:a1:3e:6c:6f:
- fa:8f:f3:1f:2e:76:97:3f:8a:1b:67:3b:e0:f9:b1:3c:6b:dc:
- 64:1b:00:73:e9:89:81:f6:7f:51:f3:51:c8:b9:96:5f:fd:55:
- f8:77:6f:88:bc:65:b3:e2:30:a4:00:7a:79:68:e0:36:8b:a9:
- 1b:06:9b:20:fe:fe:98:aa:56:58:c8:08:a4:7b:12:59:ff:3d:
- bd:5e:13:3b:c6:c7:8a:00:5b:cb:27:18:02:ee:cb:38:c2:b7:
- a9:51:04:ef:31:ca:49:09:48:14:13:eb:91:e2:26:8c:88:5f:
- 1c:78:e1:0d:90:29:d7:c1:fc:c8:89:fd:4d:53:0b:99:58:c2:
- 1a:24:3d:c0:a2:4c:a3:d9:c7:95:c5:bc:72:fa:02:f1:ab:dd:
- aa:2b:9e:a0:bb:1a:68:2d:09:8c:a2:99:0d:26:ec:9e:30:19:
- 01:5a:41:45:63:b3:c5:db:24:32:4c:fe:7f:f3:ce:e9:4d:00:
- 64:cf:bb:15:34:2d:31:6e:4f:c0:96:40:9b:32:35:65:92:01:
- 29:7e:74:02:50:fd:3b:3b:3a:a3:9f:6a:c0:a5:be:3f:c3:07:
- d6:8c:2a:c6:f4:0f:32:bd:3b:fc:45:90:d2:46:ee:6f:c3:2f:
- 26:8c:97:0c:e8:da:9a:97:03:0b:86:17:45:a6:62:69:4e:8d:
- cf:f8:bf:ea:2f:dc:ff:95:14:15:bd:92:2d:8a:08:cf:ce:8a:
- b0:f6:34:0a:a2:0e:49:31:44:e1:47:fb:37:52:53:59:93:25:
- 40:cc:ac:67:2d:a2:b6:9b:75:fd:13:a5:a7:93:4f:72:05:75:
- cd:b1:37:f6:3b:69:3b:24:a1:1f:23:f0:cd:bb:ae:18:b3:aa:
- eb:9f:d7:97:06:ba:fd:44
------BEGIN CERTIFICATE-----
-MIIExjCCAq6gAwIBAgIBATANBgkqhkiG9w0BAQsFADBzMQswCQYDVQQGEwJVUzER
-MA8GA1UECAwITmV3IFlvcmsxETAPBgNVBAcMCE5ldyBZb3JrMRAwDgYDVQQKDAdB
-Q01FIENBMQ8wDQYDVQQLDAZDb3lvdGUxGzAZBgNVBAMMEm91cmNhLmRvbWFpbi5s
-b2NhbDAeFw0xNjA2MzAxNjQ2MDlaFw0zNjA2MjUxNjQ2MDlaMF0xCzAJBgNVBAYT
-AlVTMREwDwYDVQQIDAhOZXcgWW9yazENMAsGA1UECgwEQUNNRTEPMA0GA1UECwwG
-Q295b3RlMRswGQYDVQQDDBJjZXJ0MS5kb21haW4ubG9jYWwwggEiMA0GCSqGSIb3
-DQEBAQUAA4IBDwAwggEKAoIBAQDWD70m7xRNCfbbiwH1TmwDsTUgFrgbfOa2jZcb
-sE+KtstUfnr//a8C27+dz5pMDYeTi8xh8yOpb47UgiyTtuL6N+2K0yOPbbV4Sji6
-k/lKHEAGM9fAmCDUFqykpWtBIEw6VX7HUOeVB06GFYZ6D2xX0gcclyRRW071Ujr4
-T5VrbIMfNE7usK7+RpA48U2FcotGvNFiN2Va3rsWUR71y6Dv1nsRbzsMSRe8TYz1
-2fA1a/e2TVDrR4HjBvK97GdPqysDquIeQiKpyVncDRn7xQId11jkBFMKHXm7wTPx
-zbcQLrRum9xgZgVQnyBmoXEAUVTPCnD0fEXG8KccES8+ox+/AgMBAAGjezB5MAkG
-A1UdEwQCMAAwLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRp
-ZmljYXRlMB0GA1UdDgQWBBQt+yfHtDL/94fbLad2rvCWftrcFzAfBgNVHSMEGDAW
-gBRPKhVJ5swFLyv0Dsy6LkzfE5DweDANBgkqhkiG9w0BAQsFAAOCAgEAP0YcO1i0
-mfN1AEfS/rq6mgRGYrYtoA+PwJUqWIth9RSQMCY3lKGmKSDJtQjX+RXLnZwZ7S+k
-5pFIhRr3qxdeeSNpuDwMSK7IupDQBfszfob9EvgtD/8WFZrcdkh9ZVtOkxTovjfR
-E/ensc2trk/hcrlTLc3mQnZEkyEoWMBEqzzaW+VVqwSGTZxMM/ROE5jpD9GjcCsd
-ESBHJvbYRX+IrfLBgQ++zWx5gJQw643M832hPmxv+o/zHy52lz+KG2c74PmxPGvc
-ZBsAc+mJgfZ/UfNRyLmWX/1V+HdviLxls+IwpAB6eWjgNoupGwabIP7+mKpWWMgI
-pHsSWf89vV4TO8bHigBbyycYAu7LOMK3qVEE7zHKSQlIFBPrkeImjIhfHHjhDZAp
-18H8yIn9TVMLmVjCGiQ9wKJMo9nHlcW8cvoC8avdqiueoLsaaC0JjKKZDSbsnjAZ
-AVpBRWOzxdskMkz+f/PO6U0AZM+7FTQtMW5PwJZAmzI1ZZIBKX50AlD9Ozs6o59q
-wKW+P8MH1owqxvQPMr07/EWQ0kbub8MvJoyXDOjampcDC4YXRaZiaU6Nz/i/6i/c
-/5UUFb2SLYoIz86KsPY0CqIOSTFE4Uf7N1JTWZMlQMysZy2itpt1/ROlp5NPcgV1
-zbE39jtpOyShHyPwzbuuGLOq65/Xlwa6/UQ=
------END CERTIFICATE-----
diff --git a/test/units/modules/network/f5/fixtures/cert1.key b/test/units/modules/network/f5/fixtures/cert1.key
deleted file mode 100644
index a89a29161c..0000000000
--- a/test/units/modules/network/f5/fixtures/cert1.key
+++ /dev/null
@@ -1,27 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIIEpQIBAAKCAQEA1g+9Ju8UTQn224sB9U5sA7E1IBa4G3zmto2XG7BPirbLVH56
-//2vAtu/nc+aTA2Hk4vMYfMjqW+O1IIsk7bi+jftitMjj221eEo4upP5ShxABjPX
-wJgg1BaspKVrQSBMOlV+x1DnlQdOhhWGeg9sV9IHHJckUVtO9VI6+E+Va2yDHzRO
-7rCu/kaQOPFNhXKLRrzRYjdlWt67FlEe9cug79Z7EW87DEkXvE2M9dnwNWv3tk1Q
-60eB4wbyvexnT6srA6riHkIiqclZ3A0Z+8UCHddY5ARTCh15u8Ez8c23EC60bpvc
-YGYFUJ8gZqFxAFFUzwpw9HxFxvCnHBEvPqMfvwIDAQABAoIBAQCjQ7PP+y8vpvbp
-8bbXoy2ND15mkA1xoazR9WIYEzxHny2rzx//GTyfYH1gXtPfR75tEYYb+vbrJxP4
-DyTysN2jXH7HkEwh+9oZ2fo0i+Hp3WwTjvzyftUjDfw1Q5lvPbQGFekxGgrXRpBk
-ggxkEllfDeiwrLJdftfVEhe6BfD/0YibwQeHN7VoC4V8wOanKtDmx74W/1f7WhwQ
-nKQnCrbYqNJa2nGvWiKU5Suvfb0v7tCnQYlfnCpUfj+wcnxlgmGkcyq1L+qC1qC8
-PO5i3T3LM5Yg8CSeGhO/q6gw/fUowuBN1cluTqN97oLHiEM5tLdjeVWwa1Vp0liv
-1WXGT4eBAoGBAPtumMmyVTIorvV6KGNI/Eo6jfE0HOXVdXtm4iToDDuiYwto7/Ge
-/kV+11Fpu0lV+eYPfZn175Of8FnQPwczQF1OOH/aQ/ViY8j87bZUbCy25mWrfNkh
-2rRlyI3/OsSfL5SkyWpYB0yhSJZV9mSQJTZolB4GQRNPKtqi7NpB4WxBAoGBANnz
-VS4JBJO75yeSG5BzPp5VVKm+nu0Betlva8GsHdEic8OM9bGpVozGysAW3Xdxp7q6
-gLJGyyuzpsxldCc/IdIlF5fz7gkLl4NoYanz9PSEr2XZLh9+2yXGkPFlC3IeHAUB
-E+2UO9MFpWrmfKoAnYZCR6vJDxtQBpAlTUvJEYv/AoGBAPha62K32327P+7MJl7D
-9ijgI9rwjebcbbpiCtlHuOWi5lCb6/7v/NvqiYcqeEvdOAXuoTNWAbsBTel5UPis
-wFQp8pcfouccs9IRPEFQrLWSSIx+0sirrxtoOq1AQe18DAS4rRd1MmiYG1ocOVBm
-LcvLixsJNHh9R6hFLM3+K0vBAoGANkmJ+gF9Bl9TYGPgQcay3jVa9Tzp0RcBRo+e
-Q4tfkewG8bp2qF4JlN8fOWF4oHvKz5QM4lsH2EbTUS4kFHKBNhrPGaZEsDQW9UBW
-s0J0zUMPfUrvViD+7RXcnIQSqcYeLJDsKc02aYWKgmoOuzmUAxEXUQ6vmJoCSH1C
-F5JpsHkCgYEArwTSzb1+/ThQhK1JN8hJ4jMjQ8E7PzLTMILrdDALn2g1T4VzL7N7
-UG6oUieMlo/UH6cv6330dwaGVklXZbyDKSDROIafFcOpVfcvDUgJCjp3CaY9A2zG
-+EPkRpeHKXAIgG+QuOwVOtYWcWltnBf61slTqiY2vKX1+ZGmrMrw1Zw=
------END RSA PRIVATE KEY-----
diff --git a/test/units/modules/network/f5/fixtures/cert2.crt b/test/units/modules/network/f5/fixtures/cert2.crt
deleted file mode 100644
index 30674bc8e7..0000000000
--- a/test/units/modules/network/f5/fixtures/cert2.crt
+++ /dev/null
@@ -1,101 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 2 (0x2)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C=US, ST=New York, L=New York, O=ACME CA, OU=Coyote, CN=ourca.domain.local
- Validity
- Not Before: Jun 30 16:49:00 2016 GMT
- Not After : Jun 25 16:49:00 2036 GMT
- Subject: C=US, ST=New York, O=ACME, OU=Coyote, CN=cert2.domain.local
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:c6:9e:84:99:4d:69:98:c2:42:95:ed:43:ca:24:
- 05:64:9d:67:81:1c:ff:56:7b:ad:d1:cb:09:39:28:
- 4f:ac:aa:1b:34:61:3a:b1:e3:57:d4:9e:15:40:77:
- 91:20:2b:e8:7e:d3:91:1e:46:50:6c:2f:4b:00:c2:
- f2:3a:43:89:d9:81:73:84:5f:02:db:49:ac:3b:9e:
- fe:c0:77:2e:53:ea:ce:da:ff:49:98:21:1d:31:4d:
- 0f:14:20:30:36:9a:23:b4:28:08:06:59:81:30:03:
- 86:09:0b:5b:e1:72:63:5e:54:ac:90:b1:82:55:b8:
- 12:00:d5:01:26:be:6a:eb:fc:58:5b:8a:7a:fe:46:
- 23:a3:eb:5d:6c:e0:f6:79:00:5d:5b:49:82:42:62:
- e2:58:e8:65:54:14:be:99:25:8b:b7:df:cf:53:26:
- f2:7a:fd:b9:f9:f3:d5:af:06:d6:1e:ba:66:4d:41:
- 8c:5d:aa:23:41:7f:f4:27:21:a0:30:09:86:13:c4:
- 57:1b:13:45:63:6b:3b:a3:7f:d1:1a:cd:fd:07:51:
- 0f:1a:e1:d9:25:3e:d2:77:e1:c7:60:db:12:df:ef:
- 71:65:c8:c7:1a:42:94:6f:57:2a:d7:67:30:0f:33:
- 31:ba:90:4d:d1:80:38:08:e7:90:7a:04:0e:8f:b0:
- 2a:73
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints:
- CA:FALSE
- Netscape Comment:
- OpenSSL Generated Certificate
- X509v3 Subject Key Identifier:
- 43:71:A9:16:2B:DA:DC:5F:FD:82:87:78:26:48:4E:77:21:47:44:D6
- X509v3 Authority Key Identifier:
- keyid:4F:2A:15:49:E6:CC:05:2F:2B:F4:0E:CC:BA:2E:4C:DF:13:90:F0:78
-
- Signature Algorithm: sha256WithRSAEncryption
- 15:ac:f9:cb:bc:88:c0:d3:74:83:88:cd:19:94:bb:87:7e:fd:
- 4d:25:09:9b:08:84:64:c5:37:c7:99:b3:25:ee:6e:82:46:b0:
- 13:f9:05:ad:4d:4a:b2:e3:29:5d:0d:55:9e:9c:62:1d:95:f2:
- 19:49:5e:d3:5b:58:98:ce:e8:f5:e5:c1:ce:b5:a8:7a:b1:f8:
- 14:fe:25:10:12:5b:41:53:d2:47:ab:20:e5:50:da:b6:ba:00:
- 21:94:6b:dd:0b:24:15:dc:c0:4e:b8:1d:cc:9e:5f:10:5e:46:
- 3f:96:c9:f8:28:bb:13:31:d6:d2:6c:48:41:bb:23:ab:23:64:
- 73:d6:2b:2e:9a:77:d4:08:fb:e0:e8:50:2c:49:7f:98:9e:f6:
- 37:30:2b:7c:97:c6:a7:1e:5b:dc:ce:bb:1e:58:e4:bd:05:4c:
- ad:07:d6:03:c5:a9:57:a4:26:e2:10:f7:f9:63:1a:2a:6a:9c:
- 52:98:33:bf:ea:70:cd:c0:86:32:80:6e:70:54:87:74:3c:41:
- 53:a1:c6:53:44:c7:74:a6:11:b6:48:66:86:f9:04:ca:ec:5d:
- 4f:ce:7f:64:51:34:52:53:98:a8:70:62:f7:3b:fb:39:11:9a:
- e1:e2:d3:00:0b:6b:d2:33:3c:44:de:c3:6b:e1:6f:c9:be:d2:
- 2c:8a:f0:b3:d3:4c:12:2f:ad:9d:6b:40:89:23:94:93:6d:12:
- 6c:38:89:fa:fe:ad:02:55:55:8b:c3:86:7f:15:c4:3a:a9:70:
- e9:06:6c:26:09:28:9f:6e:94:f2:a1:27:5c:89:4c:42:ac:65:
- 90:92:d2:6d:09:7c:d8:a1:bf:5b:25:e4:db:ed:71:41:d7:e2:
- 61:47:89:9e:46:29:9d:f9:f4:94:cf:f5:b3:e8:df:6a:47:34:
- d1:ed:fc:a4:58:fe:82:e1:6e:e9:05:65:f5:d2:57:9a:d1:42:
- 64:ae:0c:bb:07:14:39:a2:c0:85:e4:25:a5:c4:e6:3f:e6:da:
- d0:18:4f:e0:01:ba:99:2e:1f:75:35:c3:fa:a3:e7:e1:75:1b:
- 1c:19:93:cc:96:eb:3f:ce:8b:10:40:36:63:f5:66:dc:6d:75:
- 31:ba:db:27:21:b4:15:00:e9:ce:d0:08:e3:b0:1c:e3:29:c9:
- 63:5a:c8:5c:ca:db:ce:51:b7:87:22:c6:ba:42:d7:ab:29:b4:
- 87:fa:27:9a:18:22:90:9f:da:c0:90:c4:49:64:38:38:2e:a2:
- ea:87:c1:8b:4e:8b:ff:a7:53:45:4f:d8:8b:86:69:ea:87:1d:
- f6:e6:44:14:1f:69:ee:2c:de:5a:a1:df:a8:57:13:65:4d:5b:
- ce:6e:f2:15:2a:c5:32:08
------BEGIN CERTIFICATE-----
-MIIExjCCAq6gAwIBAgIBAjANBgkqhkiG9w0BAQsFADBzMQswCQYDVQQGEwJVUzER
-MA8GA1UECAwITmV3IFlvcmsxETAPBgNVBAcMCE5ldyBZb3JrMRAwDgYDVQQKDAdB
-Q01FIENBMQ8wDQYDVQQLDAZDb3lvdGUxGzAZBgNVBAMMEm91cmNhLmRvbWFpbi5s
-b2NhbDAeFw0xNjA2MzAxNjQ5MDBaFw0zNjA2MjUxNjQ5MDBaMF0xCzAJBgNVBAYT
-AlVTMREwDwYDVQQIDAhOZXcgWW9yazENMAsGA1UECgwEQUNNRTEPMA0GA1UECwwG
-Q295b3RlMRswGQYDVQQDDBJjZXJ0Mi5kb21haW4ubG9jYWwwggEiMA0GCSqGSIb3
-DQEBAQUAA4IBDwAwggEKAoIBAQDGnoSZTWmYwkKV7UPKJAVknWeBHP9We63Rywk5
-KE+sqhs0YTqx41fUnhVAd5EgK+h+05EeRlBsL0sAwvI6Q4nZgXOEXwLbSaw7nv7A
-dy5T6s7a/0mYIR0xTQ8UIDA2miO0KAgGWYEwA4YJC1vhcmNeVKyQsYJVuBIA1QEm
-vmrr/Fhbinr+RiOj611s4PZ5AF1bSYJCYuJY6GVUFL6ZJYu3389TJvJ6/bn589Wv
-BtYeumZNQYxdqiNBf/QnIaAwCYYTxFcbE0Vjazujf9Eazf0HUQ8a4dklPtJ34cdg
-2xLf73FlyMcaQpRvVyrXZzAPMzG6kE3RgDgI55B6BA6PsCpzAgMBAAGjezB5MAkG
-A1UdEwQCMAAwLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRp
-ZmljYXRlMB0GA1UdDgQWBBRDcakWK9rcX/2Ch3gmSE53IUdE1jAfBgNVHSMEGDAW
-gBRPKhVJ5swFLyv0Dsy6LkzfE5DweDANBgkqhkiG9w0BAQsFAAOCAgEAFaz5y7yI
-wNN0g4jNGZS7h379TSUJmwiEZMU3x5mzJe5ugkawE/kFrU1KsuMpXQ1VnpxiHZXy
-GUle01tYmM7o9eXBzrWoerH4FP4lEBJbQVPSR6sg5VDatroAIZRr3QskFdzATrgd
-zJ5fEF5GP5bJ+Ci7EzHW0mxIQbsjqyNkc9YrLpp31Aj74OhQLEl/mJ72NzArfJfG
-px5b3M67HljkvQVMrQfWA8WpV6Qm4hD3+WMaKmqcUpgzv+pwzcCGMoBucFSHdDxB
-U6HGU0THdKYRtkhmhvkEyuxdT85/ZFE0UlOYqHBi9zv7ORGa4eLTAAtr0jM8RN7D
-a+Fvyb7SLIrws9NMEi+tnWtAiSOUk20SbDiJ+v6tAlVVi8OGfxXEOqlw6QZsJgko
-n26U8qEnXIlMQqxlkJLSbQl82KG/WyXk2+1xQdfiYUeJnkYpnfn0lM/1s+jfakc0
-0e38pFj+guFu6QVl9dJXmtFCZK4MuwcUOaLAheQlpcTmP+ba0BhP4AG6mS4fdTXD
-+qPn4XUbHBmTzJbrP86LEEA2Y/Vm3G11MbrbJyG0FQDpztAI47Ac4ynJY1rIXMrb
-zlG3hyLGukLXqym0h/onmhgikJ/awJDESWQ4OC6i6ofBi06L/6dTRU/Yi4Zp6ocd
-9uZEFB9p7izeWqHfqFcTZU1bzm7yFSrFMgg=
------END CERTIFICATE-----
diff --git a/test/units/modules/network/f5/fixtures/cert2.key b/test/units/modules/network/f5/fixtures/cert2.key
deleted file mode 100644
index 6d4bdf1526..0000000000
--- a/test/units/modules/network/f5/fixtures/cert2.key
+++ /dev/null
@@ -1,30 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-Proc-Type: 4,ENCRYPTED
-DEK-Info: AES-256-CBC,C56C8101A9C8D6B9AD0975807D4793BB
-
-rhV1cJee3XAlY83zIXytJOlvXFrsHmzyTVoOn26eOwgza8CuE5gQQzLXiT12zK0q
-YAbYyyyEXJJogVU61s1vuCQRNiezUCwT4SBj7ni4rXqu5BYUxKh0wD0gjE519yNP
-nqnPUYKdLkFY7I6RJjqCqkk8xnJm64g5zCqN58aR98Mkqr1898+lZ2OHqAsAYBNH
-dM/SE7B7E4Mr1sAjpsn6L4PJ93WSwmEtH3nZTnPF9qtFuJwjUcHCN/r/s3QXki95
-eFX+7qW460lBfDeRUKXKqz4gO017AXu1kccrlHhdQoJGf3D+x9zwofG/uFeAH3iN
-f9IRaiR2IN6SS67QFmOkI9S95tsFb4N8bmmfGV4w8wfxvDzGJuxzIb4gByX5xov4
-S22pDpkfn5YqxgC5ItSiFYpg01HEi2l79HwZqAn1kowLsuF1JJKAYL5IMS3DlrdH
-AyA9CN28G6pYEjwFBbFgpOg64UNmrkxRncHxC4FuH7iGZNJL9+HQve/J5nlrnx6M
-IU2myiZZhgbsl/V45ddXBDSlEdWFLHtEhcG+ICJP3EZAXHR0e9vyrWDk7T5zKhLP
-ch9PNmIw+5zzpRuPu5NYw7V0ax8UOf2AydyBHeIQWuY52bai+QMDyQauomqpPXRY
-tpCcW85P9jstY/F6TV32XQu/cHWolziJXI/QzWF5+uvnLMAsb3p5mriCG4DOTWF3
-KFSytTGnDQUUCLgaYSSKXL5Z52PVYmTjoqX8M6cvqSEdjK84wILQE0JMItQjGSIM
-y5qHD7Mthf9YOJy1D86qtVumbaOBLw/rGPQS5QlK/m256xZ10LUslYczMpw1orN3
-3Uv8zHKk790XduHTllR0LwQXMJXG59hgiWAu3V3rsAkVSRpC3MI6IUZ2cfJvZ0Ds
-FmUhCJ34JQxD4E/sT9uGAk6VIq/fAmM7/gq0oF4oqOFg4Zy1r3rc1Kvdoy1yKUi6
-JCI5bKCkgIthx4XUKQVtFMkHBDZAHr6i5Lzy4nM6I4S4/qL3JH4Q+739D1rjGVlq
-OWcaeOzkkbJrE8h+A94UQao4R50LavKgq/o2n56tHG0RhXXyV5MC/X9rbSVipihR
-rwNKnogdhAjY96IrOzdiHTArg8qZBGvHPoGUl3zjWFqNbHEs4NLSrEl6oEs6F/vC
-zEZmi8gxqraw4u1GJnpoMuLO45PuhcxcXgJSvTh/OKDaR1u0ggEn7TxfAygm0ahP
-i6NBgoZ/upTHAWqWht2JjSmQHQW7doVkp/BgNJq13oYF7FEUEg/ZtBTPKPR3CjM0
-ZKDGvKqWRVRyrw9FSwXn6WlSFfT3vhPMoW2jq1Kq5o/ZyhcquCVE8i+xq6hilcb5
-sNiV1tPWsZOFHx4T5hBVK+QnC8t7pCj38YpyEoY4/gffMtY85jsrLMlPYd5bmJ6O
-x1tKiQauK+aX6IMu38YnHjCGnCkw1fF2OMSohbG2QfaKsmfkt8YLRuf2PTtjLtke
-xGt0Irjac/sEZPc4SEIqnehNfXadiuMV3+4v6ey9vf782r76KH8gInY2gDsQ4X6d
-1LVNCNAd/AGlitopL4hYomaeTjTzqIy5fMlGmTrpZjokenu/ILXsljZVAX2iyOAs
------END RSA PRIVATE KEY-----
diff --git a/test/units/modules/network/f5/fixtures/chain1.crt b/test/units/modules/network/f5/fixtures/chain1.crt
deleted file mode 100644
index 38dd8dc9cf..0000000000
--- a/test/units/modules/network/f5/fixtures/chain1.crt
+++ /dev/null
@@ -1,68 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIF2DCCA8CgAwIBAgIJAKql/ua7JdaGMA0GCSqGSIb3DQEBCwUAMHkxCzAJBgNV
-BAYTAkdCMRAwDgYDVQQIDAdFbmdsYW5kMRIwEAYDVQQKDAlBbGljZSBMdGQxKDAm
-BgNVBAsMH0FsaWNlIEx0ZCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxGjAYBgNVBAMM
-EUFsaWNlIEx0ZCBSb290IENBMB4XDTE3MDcyNTAzMTcwNloXDTM3MDcyMDAzMTcw
-NloweTELMAkGA1UEBhMCR0IxEDAOBgNVBAgMB0VuZ2xhbmQxEjAQBgNVBAoMCUFs
-aWNlIEx0ZDEoMCYGA1UECwwfQWxpY2UgTHRkIENlcnRpZmljYXRlIEF1dGhvcml0
-eTEaMBgGA1UEAwwRQWxpY2UgTHRkIFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUA
-A4ICDwAwggIKAoICAQC7grIMGI9e11lKh++bhyhTAU4qsKgM52xkl4sctSkK5hyT
-jY8YYfD9ERrrJov6LLCt8QiwFypoqdILTht4g6sGACoVGXigFbLNyhEhX64kIWwT
-PNFFXezYJv87qxPeT0I+6oHwai3smrUsPzsK73vwWOlnAW0mxvSzWpzvc3CgCB1J
-+vRhdPm0VgT5HuR20WDPvx0T+ftQRrhIHz/UZSTHo/CEcuJ9zjhEmQlZRhfxZiBW
-FY8Mgs6bgAKC+KtAsFTqRAuXq++xOnIIBzXACluFxp7Fee1CZh2GPxmtzFSIJVH0
-pH6wf9Kxkr0zuiAt3nq3xQcQZVdRP3bWscxp0lYG8BjuMZppI+r+gG1k/7WsRU/A
-SUiHi4EogznIuJ7o1LbcULpIKjHsHVKXYz+ff+hx7npisHIE9BoyBe9SbalJxIcS
-7n9/Mw6UmKk/zxspXCwMLraaeoyy2vUoC/zXW2WQHq67IarSAVbCPEPliqydVZ9k
-y1ZQKGdrpxxLdsbasNv3xnS50DBd4GsSnxdhzCXUUhvLQ8dZ/NRXvZ6wwcdeQ6PV
-5+dQNgnm7yd4mxyBbqv6RBAa37uNKWNf4yAQ9j9QN8pzW+qzuusAcLxTdDbtyeMi
-Dz5UHzF912m3KLlF/Aad2TbjrCR4K0CEozVT8lhFpZlNl+IdZyuSbZQ6tYrJ0wID
-AQABo2MwYTAdBgNVHQ4EFgQUk2h12cau/s1k/IGR0OAUWZbf8a8wHwYDVR0jBBgw
-FoAUk2h12cau/s1k/IGR0OAUWZbf8a8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8B
-Af8EBAMCAYYwDQYJKoZIhvcNAQELBQADggIBADSBpj8O7Wrs0gpciOmJ7cmVUIoX
-XTd+WgzustaUJoqpeCmzkeC7O9/a9Eat2LrmKIBoY6uzH1hnYwOxSdSdodBuUcOv
-6hBl7rFCgg+ACRn7zaaInFRPdx4P+ovbfFFetKmg54XA8ZDb7YRpwj3zMtlV38Ca
-WC1jP36ocn8UZ8av1ki7KNz/0PqzJ4sVs6IZrj2Lo0lDcu+29Nh5VJ7AZnOfUeas
-4sQr3dPHPaMQBxz0rKr/FN4qx63kd9GmoGz4DEDnPeUl2v52i/48ym0Q7JrntD5J
-qJaaoU4uxUMkmnD8wOmBBtXQ3eRpHE6W8ZcJGWkL8bRPrFnwxMk71N1guetetzoY
-xX7E3/CtSV7CSJMF74hE/ULNG8XdWAYY3zojSStA8UzYzO/pCA/PcmxBzxnkch4W
-3LetTSKH9mN9k2p51jGLWIbRGod5qffmtb76xRzhyhgryCV/afwfJxKeXwjDz8ty
-J6qFBXclDjTWVHHOU8hGvu4Z4PD6cbQ68tLlfFoDRq6nqKufFKpxOyw9ioLcPWbz
-+rJsnqE1+5QR4tisplmSQtQ5nI45Wns+UCmsEJm+gPkyp9pBQVudkEo1OSyCSSwZ
-evwZgkD2YclUpxcQRQR/Sy4Kvrwv3D+6zfgovClqpI3SHvQ1v/TXa3wB/RTB1H0q
-0Qn4FWp63AaOBNrC
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIF3TCCA8WgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAweTELMAkGA1UEBhMCR0Ix
-EDAOBgNVBAgMB0VuZ2xhbmQxEjAQBgNVBAoMCUFsaWNlIEx0ZDEoMCYGA1UECwwf
-QWxpY2UgTHRkIENlcnRpZmljYXRlIEF1dGhvcml0eTEaMBgGA1UEAwwRQWxpY2Ug
-THRkIFJvb3QgQ0EwHhcNMTcwNzI1MDMxNzE0WhcNMjcwNzIzMDMxNzE0WjCBgTEL
-MAkGA1UEBhMCR0IxEDAOBgNVBAgMB0VuZ2xhbmQxEjAQBgNVBAoMCUFsaWNlIEx0
-ZDEoMCYGA1UECwwfQWxpY2UgTHRkIENlcnRpZmljYXRlIEF1dGhvcml0eTEiMCAG
-A1UEAwwZQWxpY2UgTHRkIEludGVybWVkaWF0ZSBDQTCCAiIwDQYJKoZIhvcNAQEB
-BQADggIPADCCAgoCggIBAL1whyll1+/qWhAUdy6U5vtopX0wzJrg3dk8tIlpDChh
-khTEK779aQNapRKpZmJ6hnCkg7buVOSBP2WqqGQ1s9cakBSFkDyy5hrqeSzIR93w
-9n2sTc4EBD0b8QWn5D0hdoWLT3+OwFHCBf/vb+qA9Vz0P/PRPYUnKttQH6nXTj9C
-+AzegfS4SbfDJ4XdhbzCewgUvr3rqP61AQuEwZq7qoVCA3bFSASUfbJgMBxJgfBG
-KynueJ62L+wbZLXUDq9G3T0KIUlxgGIcPQ0tu2kW7uSeY5wZazuvNJCHM9HKsjUf
-wb8GgavQRlgunE9zXAEr+iP2DQrmZXdhJkkb4EyG1vuTMK3DtGjlpXAVGsiuuZ1o
-PVYZDVKhfKFN9tyop/dppxDTHyJlp2prtsudhtqwzYDqrUsMu4/LMWvxgUcTK4U7
-mPSBcvOb4fTqXirNRYsqi8BK/nxt/hUBVG0vEnoIH0ppzqWvMcsMtMi3535sErUJ
-k8IVKYIGB9OKb9SzpERYT6+BH9sUURZ/xyhRd2pj7EiVAEVxrrVoedZJzLRuXH99
-qhFG2HnDAaDC9LX09GveTzgUVUfif5fJgGBkzslpM3z8t3THz9RjrqtrzKOCHcZF
-cgt46oQByT0UjhIPCz3/6h04XzSszue8aTAwi1JaYhHoXEPolgJRoLeuFdsJtfyt
-AgMBAAGjZjBkMB0GA1UdDgQWBBSiTrrHxly7SsSV+MqprYstABOIjDAfBgNVHSME
-GDAWgBSTaHXZxq7+zWT8gZHQ4BRZlt/xrzASBgNVHRMBAf8ECDAGAQH/AgEAMA4G
-A1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAakyu4lsOWz2+VHI0S6xb
-M/afSDgnmI+i/1lSQ7UHM1XIvuINIzAcWndU1XuHyFjT7p9ZDPZ52gcseIenrKOD
-EsJWKO3u33to3YUMfBCJi9VbTCtd6rkjuFggN6EKM1esqs0kgenWmvEQSv73OOii
-UCAbif4fSva6C5PhgK7X0zE+hTsPxRZnN8baRlL01IHEraG+PfYCEpjvzExzoaW6
-aLNS0DAS1escb9K5u6Cf4KIxkdqpcYIW7v7tehj5KS3E0cRv3QAaMUBkMWTWlSP3
-irzC0OB8BFuYZ1OxDYnxhSY1mfwfI8kWrvA83okS8qwfjq/rty53VG3tON9GzGXg
-P1SQ3xB/6yxSvskcbN1blfHJfJRpOIxBvAydhdBCh7PO0WJzTP8kmffMhOiT5AdE
-jcJVxWSjwqUetomlNiErEvo7ZmxEwQZQE5wnuGM4eAbV87zLVrnj+viRo1dP7RFN
-iRUwjrxKpozUY5AGY2hZdFrWObBe1AvLDQcNDUc+oMwgnIBC2YtO1cTKJ3IFru0f
-Av48lyJ88AfO2W7pEfoVqAAZszu2s0VZB5W9fBOQLizvkjK8s5YeUPdhW3epEYF9
-I1PsTSNdN+abV5qNdIjgRVtNlV63+1y0Ez7J7RvO847ZYTuqHnfaRG03p10YnxBs
-WcSe5ozInV3EZ9TxFcGQR+E=
------END CERTIFICATE-----
diff --git a/test/units/modules/network/f5/fixtures/create_gtm_irule.tcl b/test/units/modules/network/f5/fixtures/create_gtm_irule.tcl
deleted file mode 100644
index d2283646c5..0000000000
--- a/test/units/modules/network/f5/fixtures/create_gtm_irule.tcl
+++ /dev/null
@@ -1,8 +0,0 @@
-when LB_SELECTED {
- # Capture IP address chosen by WIP load balancing
- set wipHost [LB::server addr]
-}
-
-when LB_FAILED {
- set wipHost [LB::server addr]
-}
diff --git a/test/units/modules/network/f5/fixtures/create_iapp_service_parameters_f5_http.json b/test/units/modules/network/f5/fixtures/create_iapp_service_parameters_f5_http.json
deleted file mode 100644
index 31fce52a7e..0000000000
--- a/test/units/modules/network/f5/fixtures/create_iapp_service_parameters_f5_http.json
+++ /dev/null
@@ -1,199 +0,0 @@
-{
- "name": "http_example",
- "partition": "Common",
- "template": "/Common/f5.http",
- "inheritedDevicegroup": "true",
- "deviceGroup": "none",
- "inheritedTrafficGroup": "true",
- "trafficGroup": "/Common/traffic-group-local-only",
- "lists": [
- {
- "name": "irules__irules",
- "encrypted": "no",
- "value": [
- "/Common/lgyft"
- ]
- },
- {
- "name": "net__client_vlan",
- "encrypted": "no",
- "value": [
- "/Common/net2"
- ]
- }
- ],
- "tables": [
- {
- "columnNames": [
- "name"
- ],
- "name": "pool__hosts",
- "rows": [
- {
- "row": [
- "demo.example.com"
- ]
- }
- ]
- },
- {
- "columnNames": [
- "addr",
- "connection_limit"
- ],
- "name": "pool__members",
- "rows": [
- {
- "row": [
- "10.1.1.1",
- "0"
- ]
- },
- {
- "row": [
- "10.1.1.2",
- "0"
- ]
- }
- ]
- }
- ],
- "variables": [
- {
- "name": "afm__policy",
- "value": "/#do_not_use#"
- },
- {
- "name": "afm__dos_security_profile",
- "value": "/#do_not_use#"
- },
- {
- "name": "afm__protocol_security_profile",
- "value": "/#do_not_use#"
- },
- {
- "name": "asm__use_asm",
- "value": "/#do_not_use#"
- },
- {
- "name": "client__http_compression",
- "value": "/#do_not_use#"
- },
- {
- "name": "client__standard_caching_without_wa",
- "value": "/#do_not_use#"
- },
- {
- "name": "client__tcp_wan_opt",
- "value": "/#create_new#"
- },
- {
- "name": "monitor__monitor",
- "value": "/#create_new#"
- },
- {
- "name": "monitor__frequency",
- "value": "30"
- },
- {
- "name": "monitor__uri",
- "value": "/my/path"
- },
- {
- "name": "monitor__response",
- "value": ""
- },
- {
- "name": "net__client_mode",
- "value": "wan"
- },
- {
- "name": "net__server_mode",
- "value": "lan"
- },
- {
- "name": "net__vlan_mode",
- "value": "all"
- },
- {
- "name": "pool__addr",
- "value": "10.10.10.10"
- },
- {
- "name": "pool__http",
- "value": "/#create_new#"
- },
- {
- "name": "pool__mask",
- "value": ""
- },
- {
- "name": "pool__persist",
- "value": "/#cookie#"
- },
- {
- "name": "pool__lb_method",
- "value": "least-connections-member"
- },
- {
- "name": "pool__pool_to_use",
- "value": "/#create_new#"
- },
- {
- "name": "pool__port_secure",
- "value": "443"
- },
- {
- "name": "pool__redirect_port",
- "value": "80"
- },
- {
- "name": "pool__redirect_to_https",
- "value": "yes"
- },
- {
- "name": "pool__xff",
- "value": "yes"
- },
- {
- "name": "server__oneconnect",
- "value": "/#create_new#"
- },
- {
- "name": "server__tcp_lan_opt",
- "value": "/#create_new#"
- },
- {
- "name": "ssl__cert",
- "value": "/Common/default.crt"
- },
- {
- "name": "ssl__client_ssl_profile",
- "value": "/#create_new#"
- },
- {
- "name": "ssl__key",
- "value": "/Common/default.key"
- },
- {
- "name": "ssl__mode",
- "value": "client_ssl"
- },
- {
- "name": "ssl__use_chain_cert",
- "value": "/#do_not_use#"
- },
- {
- "name": "ssl_encryption_questions__advanced",
- "value": "yes"
- },
- {
- "name": "stats__analytics",
- "value": "/#do_not_use#"
- },
- {
- "name": "stats__request_logging",
- "value": "/#do_not_use#"
- }
- ]
-}
diff --git a/test/units/modules/network/f5/fixtures/create_iapp_template.iapp b/test/units/modules/network/f5/fixtures/create_iapp_template.iapp
deleted file mode 100644
index 995bd4d636..0000000000
--- a/test/units/modules/network/f5/fixtures/create_iapp_template.iapp
+++ /dev/null
@@ -1,56 +0,0 @@
-cli admin-partitions {
- update-partition Common
-}
-
-sys application template foo.iapp {
-
- actions {
- definition {
-
- implementation {
- set cfg { ltm virtual forwarding-repro {
- destination 0.0.0.0:any
- description "something 1"
- mask any
- profiles {
- fastL4 { }
- }
- source 1.1.1.1/32
- translate-address disabled
- translate-port disabled
- vlans { __forwarding_vlans__ }
- vlans-enabled
-} }
-
-
- if {![info exists {::var__forwarding_vlans}] || (${::var__forwarding_vlans} == "")} {
- set {::var__forwarding_vlans} "{}"
- puts "Info: assigning empty string to variable {::var__forwarding_vlans}"
- }
-
-
- set cfg [string map "__forwarding_vlans__ ${::var__forwarding_vlans} __app_service__ $tmsh::app_name.app/$tmsh::app_name " $cfg]
- set fileId [open /var/tmp/demo.repro.cfg "w"]
- puts -nonewline $fileId $cfg
- close $fileId
-
-
- tmsh::load sys config merge file /var/tmp/demo.repro.cfg
- }
-
- presentation {
-
- include "/Common/f5.apl_common"
- section var {
- string forwarding_vlans display "xxlarge"
- }
-
- text {
- var "General variables"
- var.forwarding_vlans "__var__forwarding_vlans__"
- }
- }
- role-acl { admin manager resource-admin }
- }
- }
-}
diff --git a/test/units/modules/network/f5/fixtures/create_insecure_cert1.crt b/test/units/modules/network/f5/fixtures/create_insecure_cert1.crt
deleted file mode 100644
index 1d22f30289..0000000000
--- a/test/units/modules/network/f5/fixtures/create_insecure_cert1.crt
+++ /dev/null
@@ -1,101 +0,0 @@
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 1 (0x1)
- Signature Algorithm: sha256WithRSAEncryption
- Issuer: C=US, ST=New York, L=New York, O=ACME CA, OU=Coyote, CN=ourca.domain.local
- Validity
- Not Before: Jun 30 16:46:09 2016 GMT
- Not After : Jun 25 16:46:09 2036 GMT
- Subject: C=US, ST=New York, O=ACME, OU=Coyote, CN=cert1.domain.local
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (2048 bit)
- Modulus:
- 00:d6:0f:bd:26:ef:14:4d:09:f6:db:8b:01:f5:4e:
- 6c:03:b1:35:20:16:b8:1b:7c:e6:b6:8d:97:1b:b0:
- 4f:8a:b6:cb:54:7e:7a:ff:fd:af:02:db:bf:9d:cf:
- 9a:4c:0d:87:93:8b:cc:61:f3:23:a9:6f:8e:d4:82:
- 2c:93:b6:e2:fa:37:ed:8a:d3:23:8f:6d:b5:78:4a:
- 38:ba:93:f9:4a:1c:40:06:33:d7:c0:98:20:d4:16:
- ac:a4:a5:6b:41:20:4c:3a:55:7e:c7:50:e7:95:07:
- 4e:86:15:86:7a:0f:6c:57:d2:07:1c:97:24:51:5b:
- 4e:f5:52:3a:f8:4f:95:6b:6c:83:1f:34:4e:ee:b0:
- ae:fe:46:90:38:f1:4d:85:72:8b:46:bc:d1:62:37:
- 65:5a:de:bb:16:51:1e:f5:cb:a0:ef:d6:7b:11:6f:
- 3b:0c:49:17:bc:4d:8c:f5:d9:f0:35:6b:f7:b6:4d:
- 50:eb:47:81:e3:06:f2:bd:ec:67:4f:ab:2b:03:aa:
- e2:1e:42:22:a9:c9:59:dc:0d:19:fb:c5:02:1d:d7:
- 58:e4:04:53:0a:1d:79:bb:c1:33:f1:cd:b7:10:2e:
- b4:6e:9b:dc:60:66:05:50:9f:20:66:a1:71:00:51:
- 54:cf:0a:70:f4:7c:45:c6:f0:a7:1c:11:2f:3e:a3:
- 1f:bf
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints:
- CA:FALSE
- Netscape Comment:
- OpenSSL Generated Certificate
- X509v3 Subject Key Identifier:
- 2D:FB:27:C7:B4:32:FF:F7:87:DB:2D:A7:76:AE:F0:96:7E:DA:DC:17
- X509v3 Authority Key Identifier:
- keyid:4F:2A:15:49:E6:CC:05:2F:2B:F4:0E:CC:BA:2E:4C:DF:13:90:F0:78
-
- Signature Algorithm: sha256WithRSAEncryption
- 3f:46:1c:3b:58:b4:99:f3:75:00:47:d2:fe:ba:ba:9a:04:46:
- 62:b6:2d:a0:0f:8f:c0:95:2a:58:8b:61:f5:14:90:30:26:37:
- 94:a1:a6:29:20:c9:b5:08:d7:f9:15:cb:9d:9c:19:ed:2f:a4:
- e6:91:48:85:1a:f7:ab:17:5e:79:23:69:b8:3c:0c:48:ae:c8:
- ba:90:d0:05:fb:33:7e:86:fd:12:f8:2d:0f:ff:16:15:9a:dc:
- 76:48:7d:65:5b:4e:93:14:e8:be:37:d1:13:f7:a7:b1:cd:ad:
- ae:4f:e1:72:b9:53:2d:cd:e6:42:76:44:93:21:28:58:c0:44:
- ab:3c:da:5b:e5:55:ab:04:86:4d:9c:4c:33:f4:4e:13:98:e9:
- 0f:d1:a3:70:2b:1d:11:20:47:26:f6:d8:45:7f:88:ad:f2:c1:
- 81:0f:be:cd:6c:79:80:94:30:eb:8d:cc:f3:7d:a1:3e:6c:6f:
- fa:8f:f3:1f:2e:76:97:3f:8a:1b:67:3b:e0:f9:b1:3c:6b:dc:
- 64:1b:00:73:e9:89:81:f6:7f:51:f3:51:c8:b9:96:5f:fd:55:
- f8:77:6f:88:bc:65:b3:e2:30:a4:00:7a:79:68:e0:36:8b:a9:
- 1b:06:9b:20:fe:fe:98:aa:56:58:c8:08:a4:7b:12:59:ff:3d:
- bd:5e:13:3b:c6:c7:8a:00:5b:cb:27:18:02:ee:cb:38:c2:b7:
- a9:51:04:ef:31:ca:49:09:48:14:13:eb:91:e2:26:8c:88:5f:
- 1c:78:e1:0d:90:29:d7:c1:fc:c8:89:fd:4d:53:0b:99:58:c2:
- 1a:24:3d:c0:a2:4c:a3:d9:c7:95:c5:bc:72:fa:02:f1:ab:dd:
- aa:2b:9e:a0:bb:1a:68:2d:09:8c:a2:99:0d:26:ec:9e:30:19:
- 01:5a:41:45:63:b3:c5:db:24:32:4c:fe:7f:f3:ce:e9:4d:00:
- 64:cf:bb:15:34:2d:31:6e:4f:c0:96:40:9b:32:35:65:92:01:
- 29:7e:74:02:50:fd:3b:3b:3a:a3:9f:6a:c0:a5:be:3f:c3:07:
- d6:8c:2a:c6:f4:0f:32:bd:3b:fc:45:90:d2:46:ee:6f:c3:2f:
- 26:8c:97:0c:e8:da:9a:97:03:0b:86:17:45:a6:62:69:4e:8d:
- cf:f8:bf:ea:2f:dc:ff:95:14:15:bd:92:2d:8a:08:cf:ce:8a:
- b0:f6:34:0a:a2:0e:49:31:44:e1:47:fb:37:52:53:59:93:25:
- 40:cc:ac:67:2d:a2:b6:9b:75:fd:13:a5:a7:93:4f:72:05:75:
- cd:b1:37:f6:3b:69:3b:24:a1:1f:23:f0:cd:bb:ae:18:b3:aa:
- eb:9f:d7:97:06:ba:fd:44
------BEGIN CERTIFICATE-----
-MIIExjCCAq6gAwIBAgIBATANBgkqhkiG9w0BAQsFADBzMQswCQYDVQQGEwJVUzER
-MA8GA1UECAwITmV3IFlvcmsxETAPBgNVBAcMCE5ldyBZb3JrMRAwDgYDVQQKDAdB
-Q01FIENBMQ8wDQYDVQQLDAZDb3lvdGUxGzAZBgNVBAMMEm91cmNhLmRvbWFpbi5s
-b2NhbDAeFw0xNjA2MzAxNjQ2MDlaFw0zNjA2MjUxNjQ2MDlaMF0xCzAJBgNVBAYT
-AlVTMREwDwYDVQQIDAhOZXcgWW9yazENMAsGA1UECgwEQUNNRTEPMA0GA1UECwwG
-Q295b3RlMRswGQYDVQQDDBJjZXJ0MS5kb21haW4ubG9jYWwwggEiMA0GCSqGSIb3
-DQEBAQUAA4IBDwAwggEKAoIBAQDWD70m7xRNCfbbiwH1TmwDsTUgFrgbfOa2jZcb
-sE+KtstUfnr//a8C27+dz5pMDYeTi8xh8yOpb47UgiyTtuL6N+2K0yOPbbV4Sji6
-k/lKHEAGM9fAmCDUFqykpWtBIEw6VX7HUOeVB06GFYZ6D2xX0gcclyRRW071Ujr4
-T5VrbIMfNE7usK7+RpA48U2FcotGvNFiN2Va3rsWUR71y6Dv1nsRbzsMSRe8TYz1
-2fA1a/e2TVDrR4HjBvK97GdPqysDquIeQiKpyVncDRn7xQId11jkBFMKHXm7wTPx
-zbcQLrRum9xgZgVQnyBmoXEAUVTPCnD0fEXG8KccES8+ox+/AgMBAAGjezB5MAkG
-A1UdEwQCMAAwLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRp
-ZmljYXRlMB0GA1UdDgQWBBQt+yfHtDL/94fbLad2rvCWftrcFzAfBgNVHSMEGDAW
-gBRPKhVJ5swFLyv0Dsy6LkzfE5DweDANBgkqhkiG9w0BAQsFAAOCAgEAP0YcO1i0
-mfN1AEfS/rq6mgRGYrYtoA+PwJUqWIth9RSQMCY3lKGmKSDJtQjX+RXLnZwZ7S+k
-5pFIhRr3qxdeeSNpuDwMSK7IupDQBfszfob9EvgtD/8WFZrcdkh9ZVtOkxTovjfR
-E/ensc2trk/hcrlTLc3mQnZEkyEoWMBEqzzaW+VVqwSGTZxMM/ROE5jpD9GjcCsd
-ESBHJvbYRX+IrfLBgQ++zWx5gJQw643M832hPmxv+o/zHy52lz+KG2c74PmxPGvc
-ZBsAc+mJgfZ/UfNRyLmWX/1V+HdviLxls+IwpAB6eWjgNoupGwabIP7+mKpWWMgI
-pHsSWf89vV4TO8bHigBbyycYAu7LOMK3qVEE7zHKSQlIFBPrkeImjIhfHHjhDZAp
-18H8yIn9TVMLmVjCGiQ9wKJMo9nHlcW8cvoC8avdqiueoLsaaC0JjKKZDSbsnjAZ
-AVpBRWOzxdskMkz+f/PO6U0AZM+7FTQtMW5PwJZAmzI1ZZIBKX50AlD9Ozs6o59q
-wKW+P8MH1owqxvQPMr07/EWQ0kbub8MvJoyXDOjampcDC4YXRaZiaU6Nz/i/6i/c
-/5UUFb2SLYoIz86KsPY0CqIOSTFE4Uf7N1JTWZMlQMysZy2itpt1/ROlp5NPcgV1
-zbE39jtpOyShHyPwzbuuGLOq65/Xlwa6/UQ=
------END CERTIFICATE-----
diff --git a/test/units/modules/network/f5/fixtures/create_insecure_key1.key b/test/units/modules/network/f5/fixtures/create_insecure_key1.key
deleted file mode 100644
index a89a29161c..0000000000
--- a/test/units/modules/network/f5/fixtures/create_insecure_key1.key
+++ /dev/null
@@ -1,27 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIIEpQIBAAKCAQEA1g+9Ju8UTQn224sB9U5sA7E1IBa4G3zmto2XG7BPirbLVH56
-//2vAtu/nc+aTA2Hk4vMYfMjqW+O1IIsk7bi+jftitMjj221eEo4upP5ShxABjPX
-wJgg1BaspKVrQSBMOlV+x1DnlQdOhhWGeg9sV9IHHJckUVtO9VI6+E+Va2yDHzRO
-7rCu/kaQOPFNhXKLRrzRYjdlWt67FlEe9cug79Z7EW87DEkXvE2M9dnwNWv3tk1Q
-60eB4wbyvexnT6srA6riHkIiqclZ3A0Z+8UCHddY5ARTCh15u8Ez8c23EC60bpvc
-YGYFUJ8gZqFxAFFUzwpw9HxFxvCnHBEvPqMfvwIDAQABAoIBAQCjQ7PP+y8vpvbp
-8bbXoy2ND15mkA1xoazR9WIYEzxHny2rzx//GTyfYH1gXtPfR75tEYYb+vbrJxP4
-DyTysN2jXH7HkEwh+9oZ2fo0i+Hp3WwTjvzyftUjDfw1Q5lvPbQGFekxGgrXRpBk
-ggxkEllfDeiwrLJdftfVEhe6BfD/0YibwQeHN7VoC4V8wOanKtDmx74W/1f7WhwQ
-nKQnCrbYqNJa2nGvWiKU5Suvfb0v7tCnQYlfnCpUfj+wcnxlgmGkcyq1L+qC1qC8
-PO5i3T3LM5Yg8CSeGhO/q6gw/fUowuBN1cluTqN97oLHiEM5tLdjeVWwa1Vp0liv
-1WXGT4eBAoGBAPtumMmyVTIorvV6KGNI/Eo6jfE0HOXVdXtm4iToDDuiYwto7/Ge
-/kV+11Fpu0lV+eYPfZn175Of8FnQPwczQF1OOH/aQ/ViY8j87bZUbCy25mWrfNkh
-2rRlyI3/OsSfL5SkyWpYB0yhSJZV9mSQJTZolB4GQRNPKtqi7NpB4WxBAoGBANnz
-VS4JBJO75yeSG5BzPp5VVKm+nu0Betlva8GsHdEic8OM9bGpVozGysAW3Xdxp7q6
-gLJGyyuzpsxldCc/IdIlF5fz7gkLl4NoYanz9PSEr2XZLh9+2yXGkPFlC3IeHAUB
-E+2UO9MFpWrmfKoAnYZCR6vJDxtQBpAlTUvJEYv/AoGBAPha62K32327P+7MJl7D
-9ijgI9rwjebcbbpiCtlHuOWi5lCb6/7v/NvqiYcqeEvdOAXuoTNWAbsBTel5UPis
-wFQp8pcfouccs9IRPEFQrLWSSIx+0sirrxtoOq1AQe18DAS4rRd1MmiYG1ocOVBm
-LcvLixsJNHh9R6hFLM3+K0vBAoGANkmJ+gF9Bl9TYGPgQcay3jVa9Tzp0RcBRo+e
-Q4tfkewG8bp2qF4JlN8fOWF4oHvKz5QM4lsH2EbTUS4kFHKBNhrPGaZEsDQW9UBW
-s0J0zUMPfUrvViD+7RXcnIQSqcYeLJDsKc02aYWKgmoOuzmUAxEXUQ6vmJoCSH1C
-F5JpsHkCgYEArwTSzb1+/ThQhK1JN8hJ4jMjQ8E7PzLTMILrdDALn2g1T4VzL7N7
-UG6oUieMlo/UH6cv6330dwaGVklXZbyDKSDROIafFcOpVfcvDUgJCjp3CaY9A2zG
-+EPkRpeHKXAIgG+QuOwVOtYWcWltnBf61slTqiY2vKX1+ZGmrMrw1Zw=
------END RSA PRIVATE KEY-----
diff --git a/test/units/modules/network/f5/fixtures/create_ltm_irule.tcl b/test/units/modules/network/f5/fixtures/create_ltm_irule.tcl
deleted file mode 100644
index 5f7624a33f..0000000000
--- a/test/units/modules/network/f5/fixtures/create_ltm_irule.tcl
+++ /dev/null
@@ -1,18 +0,0 @@
-when RULE_INIT {
- set static::FormBaseURL "/sp-ofba-form"
- set static::FormReturnURL "/sp-ofba-completed"
- set static::HeadAuthReq "X-FORMS_BASED_AUTH_REQUIRED"
- set static::HeadAuthRet "X-FORMS_BASED_AUTH_RETURN_URL"
- set static::HeadAuthSize "X-FORMS_BASED_AUTH_DIALOG_SIZE"
- set static::HeadAuthSizeVal "800x600"
- set static::ckname "MRHSession_SP"
- set static::Basic_Realm_Text "SharePoint Authentication"
-}
-
-when HTTP_REQUEST {
- set apmsessionid [HTTP::cookie value MRHSession]
-}
-
-when HTTP_RESPONSE {
- # Insert persistent cookie for html content type and private session
-}
diff --git a/test/units/modules/network/f5/fixtures/data-group-address.txt b/test/units/modules/network/f5/fixtures/data-group-address.txt
deleted file mode 100644
index d2f5a16877..0000000000
--- a/test/units/modules/network/f5/fixtures/data-group-address.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-network 10.0.0.0 prefixlen 8 := "Network1",
-network 172.16.0.0 prefixlen 12 := "Network2",
-network 192.168.0.0 prefixlen 16 := "Network3",
-host 192.168.20.1 := "Host1",
-host 172.16.1.1 := "Host2",
diff --git a/test/units/modules/network/f5/fixtures/data-group-integer.txt b/test/units/modules/network/f5/fixtures/data-group-integer.txt
deleted file mode 100644
index 711ac1987b..0000000000
--- a/test/units/modules/network/f5/fixtures/data-group-integer.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-1 := alpha
-2 := bravo
-3 := charlie
-4 := x-ray
-5 := yankee
-6 := zulu
diff --git a/test/units/modules/network/f5/fixtures/data-group-string.txt b/test/units/modules/network/f5/fixtures/data-group-string.txt
deleted file mode 100644
index c30fca282c..0000000000
--- a/test/units/modules/network/f5/fixtures/data-group-string.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-a := alpha
-b := bravo
-c := charlie
-x := x-ray
-y := yankee
-z := zulu
diff --git a/test/units/modules/network/f5/fixtures/fake_policy.tar.gz b/test/units/modules/network/f5/fixtures/fake_policy.tar.gz
deleted file mode 100644
index cdc6202779..0000000000
--- a/test/units/modules/network/f5/fixtures/fake_policy.tar.gz
+++ /dev/null
Binary files differ
diff --git a/test/units/modules/network/f5/fixtures/fake_policy.xml b/test/units/modules/network/f5/fixtures/fake_policy.xml
deleted file mode 100644
index 590944a484..0000000000
--- a/test/units/modules/network/f5/fixtures/fake_policy.xml
+++ /dev/null
@@ -1,12174 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<policy bigip_version="11.5.4" integrity_check="d7ed8cbd2414d6ab935e5f837ef0f93e" name="/Common/fake_policy">
- <policy_version>
- <timestamp>2017-04-11T08:05:22Z</timestamp>
- <device_name>ltm4restlab.lab.local</device_name>
- <policy_name>/Common/fake_policy</policy_name>
- <last_change>Allowed Response Code 503 [add]: Response Code was set to 503.</last_change>
- </policy_version>
- <encoding>utf-8</encoding>
- <maximum_http_length>8192</maximum_http_length>
- <maximum_cookie_length>8192</maximum_cookie_length>
- <description></description>
- <trigger_asm_irule_event>Disabled</trigger_asm_irule_event>
- <case_insensitive>false</case_insensitive>
- <whitehat>false</whitehat>
- <owa>false</owa>
- <inspect_http_uploads>false</inspect_http_uploads>
- <protocol_free>false</protocol_free>
- <path_parameter_handling>as parameters</path_parameter_handling>
- <mask_sensitive>true</mask_sensitive>
- <trust_xff>false</trust_xff>
- <learning>
- <learning_type>policy based</learning_type>
- </learning>
- <csrf>
- <enabled>false</enabled>
- <ssl_only>false</ssl_only>
- <enforcement_mode>enforcing</enforcement_mode>
- <expiration_time_in_seconds>0</expiration_time_in_seconds>
- </csrf>
- <allowed_response_code>400</allowed_response_code>
- <allowed_response_code>401</allowed_response_code>
- <allowed_response_code>404</allowed_response_code>
- <allowed_response_code>407</allowed_response_code>
- <allowed_response_code>417</allowed_response_code>
- <allowed_response_code>503</allowed_response_code>
- <web_scraping>
- <grace_threshold>100</grace_threshold>
- <session_prevention_threshold>100</session_prevention_threshold>
- <revalidation_threshold>2000</revalidation_threshold>
- <rapid_surf_max_time_duration>1000</rapid_surf_max_time_duration>
- <rapid_surf_max_page_changes>5</rapid_surf_max_page_changes>
- <web_scraping_alarm>false</web_scraping_alarm>
- <web_scraping_block>false</web_scraping_block>
- <session_opening_anomaly_block>false</session_opening_anomaly_block>
- <session_opening_anomaly_alarm>false</session_opening_anomaly_alarm>
- <session_transactions_anomaly_alarm>false</session_transactions_anomaly_alarm>
- <session_transactions_anomaly_block>false</session_transactions_anomaly_block>
- <opening_client_side_integrity_defense>false</opening_client_side_integrity_defense>
- <opening_rate_limiting>false</opening_rate_limiting>
- <sessions_opened_per_second_increase_rate>500</sessions_opened_per_second_increase_rate>
- <sessions_opened_per_second_maximum>50</sessions_opened_per_second_maximum>
- <sessions_opened_per_second_minimum>25</sessions_opened_per_second_minimum>
- <opening_max_prevention_duration>1800</opening_max_prevention_duration>
- <opening_drop_ip_with_reputation>false</opening_drop_ip_with_reputation>
- <transactions_tps_increase_rate>500</transactions_tps_increase_rate>
- <transactions_per_second_maximum>400</transactions_per_second_maximum>
- <transactions_per_second_minimum>200</transactions_per_second_minimum>
- <transactions_max_prevention_duration>1800</transactions_max_prevention_duration>
- <opening_persistent_storage_inconsistency>true</opening_persistent_storage_inconsistency>
- <opening_persistent_storage_resets>true</opening_persistent_storage_resets>
- <opening_persistent_storage_inconsistency_events_maximum>3</opening_persistent_storage_inconsistency_events_maximum>
- <opening_persistent_storage_inconsistency_events_duration>600</opening_persistent_storage_inconsistency_events_duration>
- <opening_persistent_storage_resets_maximum>2</opening_persistent_storage_resets_maximum>
- <opening_persistent_storage_resets_duration>600</opening_persistent_storage_resets_duration>
- <persistent_storage_max_prevention_duration>1800</persistent_storage_max_prevention_duration>
- <use_persistent_storage>false</use_persistent_storage>
- <persistent_data_validity_period>120</persistent_data_validity_period>
- <session_opening_anomaly_enable>true</session_opening_anomaly_enable>
- <suspicious_clients_alarm>false</suspicious_clients_alarm>
- <suspicious_clients_block>false</suspicious_clients_block>
- <fingerprinting_enable>false</fingerprinting_enable>
- <fingerprint_resets_enabled>false</fingerprint_resets_enabled>
- <fingerprint_resets_threshold>5</fingerprint_resets_threshold>
- <fingerprint_resets_time_window>600</fingerprint_resets_time_window>
- <detect_plugins>false</detect_plugins>
- <suspicious_clients_prevention_duration>300</suspicious_clients_prevention_duration>
- </web_scraping>
- <blocking>
- <enforcement_mode>transparent</enforcement_mode>
- <maximum_decoding_passes>2</maximum_decoding_passes>
- <maximum_headers>20</maximum_headers>
- <maximum_parameters>500</maximum_parameters>
- <response_page cause="default">
- <response_type>default</response_type>
- <response_header>HTTP/1.1 200 OK
-Cache-Control: no-cache
-Pragma: no-cache
-Connection: close</response_header>
- <response_html_code>&lt;html>&lt;head>&lt;title>Request Rejected&lt;/title>&lt;/head>&lt;body>The requested URL was rejected. Please consult with your administrator.&lt;br>&lt;br>Your support ID is: &lt;%TS.request.ID()%>&lt;/body>&lt;/html></response_html_code>
- </response_page>
- <response_page cause="XML">
- <response_type>soap fault</response_type>
- <response_header>HTTP/1.1 200 OK
-Cache-Control: no-cache
-Pragma: no-cache
-Content-type: text/xml
-Connection: close</response_header>
- <response_html_code>&lt;?xml version='1.0' encoding='utf-8'?>&lt;soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'>&lt;soap:Body>&lt;soap:Fault>&lt;faultcode>soap:Client&lt;/faultcode>&lt;faultstring>The requested operation was rejected. Please consult with your administrator.Your support ID is: &lt;%TS.request.ID()%>&lt;/faultstring>&lt;detail/>&lt;/soap:Fault>&lt;/soap:Body>&lt;/soap:Envelope></response_html_code>
- </response_page>
- <response_page cause="Ajax">
- <response_type>default</response_type>
- <response_header>HTTP/1.1 200 OK
-Cache-Control: no-cache
-Pragma: no-cache
-Connection: close</response_header>
- <response_html_code>&lt;html>&lt;head>&lt;title>Request Rejected&lt;/title>&lt;/head>&lt;body>The requested URL was rejected. Please consult with your administrator.&lt;br>&lt;br>Your support ID is: &lt;%TS.request.ID()%>&lt;/body>&lt;/html></response_html_code>
- <ajax_action_type>alert_popup</ajax_action_type>
- <ajax_popup_message>The requested URL was rejected. Please consult with your administrator. Your support ID is: &lt;%TS.request.ID()%></ajax_popup_message>
- </response_page>
- <response_page cause="Ajax_login">
- <response_type>default</response_type>
- <response_header>HTTP/1.1 200 OK
-Cache-Control: no-cache
-Pragma: no-cache
-Connection: close</response_header>
- <response_html_code>&lt;html>&lt;head>&lt;title>Request Rejected&lt;/title>&lt;/head>&lt;body>The requested URL was rejected. Please consult with your administrator.&lt;br>&lt;br>Your support ID is: &lt;%TS.request.ID()%>&lt;/body>&lt;/html></response_html_code>
- <ajax_action_type>alert_popup</ajax_action_type>
- <ajax_popup_message>The requested URL was rejected. Please consult with your administrator. Your support ID is: &lt;%TS.request.ID()%></ajax_popup_message>
- </response_page>
- <response_page_settings>
- <flg_ajax_enabled>disabled</flg_ajax_enabled>
- </response_page_settings>
- </blocking>
- <session_awareness>
- <enabled>false</enabled>
- <use_apm_username>false</use_apm_username>
- <lifetime_window>900</lifetime_window>
- <violation_actions_enabled>false</violation_actions_enabled>
- <session>
- <track_all_threshold>5</track_all_threshold>
- <block_illegal_threshold>5</block_illegal_threshold>
- <block_all_threshold>20</block_all_threshold>
- <track_all_threshold_enabled>true</track_all_threshold_enabled>
- <block_illegal_threshold_enabled>false</block_illegal_threshold_enabled>
- <block_all_threshold_enabled>true</block_all_threshold_enabled>
- </session>
- <ip_address>
- <track_all_threshold>15</track_all_threshold>
- <block_illegal_threshold>15</block_illegal_threshold>
- <block_all_threshold>60</block_all_threshold>
- <track_all_threshold_enabled>false</track_all_threshold_enabled>
- <block_illegal_threshold_enabled>false</block_illegal_threshold_enabled>
- <block_all_threshold_enabled>false</block_all_threshold_enabled>
- </ip_address>
- <user>
- <track_all_threshold>5</track_all_threshold>
- <block_illegal_threshold>5</block_illegal_threshold>
- <block_all_threshold>20</block_all_threshold>
- <track_all_threshold_enabled>true</track_all_threshold_enabled>
- <block_illegal_threshold_enabled>false</block_illegal_threshold_enabled>
- <block_all_threshold_enabled>true</block_all_threshold_enabled>
- </user>
- <track_all_period>600</track_all_period>
- <block_illegal_period>600</block_illegal_period>
- <block_all_period>600</block_all_period>
- <block_all_period_enabled>false</block_all_period_enabled>
- <block_only_autheticated>false</block_only_autheticated>
- </session_awareness>
- <gwt_profiles>
- <character_set/>
- </gwt_profiles>
- <json_profiles>
- <character_set/>
- </json_profiles>
- <xml_profiles>
- <character_set/>
- </xml_profiles>
- <file_types>
- <file_type name="*" type="wildcard">
- <learning_mode>Always</learning_mode>
- <url_length>100</url_length>
- <request_length>5000</request_length>
- <query_string_length>1000</query_string_length>
- <post_data_length>1000</post_data_length>
- <check_response>false</check_response>
- <in_staging>false</in_staging>
- <last_updated>2017-04-11T08:05:13Z</last_updated>
- <check_url_length>false</check_url_length>
- <check_request_length>false</check_request_length>
- <check_query_string_length>false</check_query_string_length>
- <check_post_data_length>false</check_post_data_length>
- </file_type>
- </file_types>
- <urls>
- <url name="*" protocol="HTTPS" type="wildcard">
- <learning_mode>Never</learning_mode>
- <check_flows>false</check_flows>
- <is_entry_point>false</is_entry_point>
- <is_referrer>false</is_referrer>
- <can_change_domain_cookie>false</can_change_domain_cookie>
- <user_config_level>basic</user_config_level>
- <check_metachars>true</check_metachars>
- <in_staging>true</in_staging>
- <last_updated>2017-04-11T08:05:13Z</last_updated>
- <clickjacking_protection>
- <enabled>false</enabled>
- <allow_rendering_in_frames>N/A</allow_rendering_in_frames>
- </clickjacking_protection>
- <cors_enforcement_enable>false</cors_enforcement_enable>
- <allow_cors>true</allow_cors>
- <cors_allow_credentials_handling>unmodified</cors_allow_credentials_handling>
- <cors_allow_credentials>allow</cors_allow_credentials>
- <cors_check_maximum_age>false</cors_check_maximum_age>
- <cors_maximum_age>1800</cors_maximum_age>
- <cors_allowed_origins_handling>unmodified</cors_allowed_origins_handling>
- <cors_allowed_methods_handling>unmodified</cors_allowed_methods_handling>
- <cors_allowed_headers_handling>unmodified</cors_allowed_headers_handling>
- <cors_exposed_headers_handling>unmodified</cors_exposed_headers_handling>
- <flg_wildcard_includes_slash>true</flg_wildcard_includes_slash>
- <parameter/>
- <content_profile>
- <header_name>*</header_name>
- <header_value>*</header_value>
- <header_order>0</header_order>
- <enforcement_type>http</enforcement_type>
- <in_classification>false</in_classification>
- </content_profile>
- </url>
- <url name="*" protocol="HTTP" type="wildcard">
- <learning_mode>Never</learning_mode>
- <check_flows>false</check_flows>
- <is_entry_point>false</is_entry_point>
- <is_referrer>false</is_referrer>
- <can_change_domain_cookie>false</can_change_domain_cookie>
- <user_config_level>basic</user_config_level>
- <check_metachars>true</check_metachars>
- <in_staging>true</in_staging>
- <last_updated>2017-04-11T08:05:13Z</last_updated>
- <clickjacking_protection>
- <enabled>false</enabled>
- <allow_rendering_in_frames>N/A</allow_rendering_in_frames>
- </clickjacking_protection>
- <cors_enforcement_enable>false</cors_enforcement_enable>
- <allow_cors>true</allow_cors>
- <cors_allow_credentials_handling>unmodified</cors_allow_credentials_handling>
- <cors_allow_credentials>allow</cors_allow_credentials>
- <cors_check_maximum_age>false</cors_check_maximum_age>
- <cors_maximum_age>1800</cors_maximum_age>
- <cors_allowed_origins_handling>unmodified</cors_allowed_origins_handling>
- <cors_allowed_methods_handling>unmodified</cors_allowed_methods_handling>
- <cors_allowed_headers_handling>unmodified</cors_allowed_headers_handling>
- <cors_exposed_headers_handling>unmodified</cors_exposed_headers_handling>
- <flg_wildcard_includes_slash>true</flg_wildcard_includes_slash>
- <parameter/>
- <content_profile>
- <header_name>*</header_name>
- <header_value>*</header_value>
- <header_order>0</header_order>
- <enforcement_type>http</enforcement_type>
- <in_classification>false</in_classification>
- </content_profile>
- </url>
- <character_set/>
- </urls>
- <parameters>
- <parameter name="*" type="wildcard">
- <learning_mode>When Violation Detected</learning_mode>
- <is_mandatory>false</is_mandatory>
- <allow_empty_value>true</allow_empty_value>
- <value_type>user input</value_type>
- <user_input_format></user_input_format>
- <match_regular_expression></match_regular_expression>
- <is_sensitive>false</is_sensitive>
- <in_staging>true</in_staging>
- <last_updated>2017-04-11T08:05:13Z</last_updated>
- <parameter_name_metachars>
- <check_metachars>true</check_metachars>
- </parameter_name_metachars>
- <check_maximum_length>false</check_maximum_length>
- <check_metachars>true</check_metachars>
- <check_attack_signatures>true</check_attack_signatures>
- <allow_repeated_parameter_name>false</allow_repeated_parameter_name>
- <in_classification>false</in_classification>
- <disallow_file_upload_of_executables>true</disallow_file_upload_of_executables>
- <is_base64>false</is_base64>
- </parameter>
- <character_set/>
- <parameter_name_metachars>
- <character_set/>
- </parameter_name_metachars>
- </parameters>
- <sensitive_parameters>
- <parameter_name>password</parameter_name>
- </sensitive_parameters>
- <flows>
- <flow_access>
- <expiration_period>0</expiration_period>
- <response_page>
- <response_type>default</response_type>
- <response_header>HTTP/1.1 200 OK
-Cache-Control: no-cache
-Pragma: no-cache
-Connection: close</response_header>
- <response_html_code>&lt;html>&lt;head>&lt;title>Request Rejected&lt;/title>&lt;/head>&lt;body>The requested URL was rejected. Please consult with your administrator.&lt;br>&lt;br>Your support ID is: &lt;%TS.request.ID()%>&lt;/body>&lt;/html></response_html_code>
- </response_page>
- </flow_access>
- </flows>
- <methods>
- <method name="GET">
- <act_as>GET</act_as>
- <user_config_level>basic</user_config_level>
- </method>
- <method name="POST">
- <act_as>POST</act_as>
- <user_config_level>basic</user_config_level>
- </method>
- <method name="HEAD">
- <act_as>GET</act_as>
- <user_config_level>basic</user_config_level>
- </method>
- </methods>
- <headers>
- <allowed_modified_cookie name="*" type="wildcard">
- <learning_mode>When Violation Detected</learning_mode>
- <in_staging>true</in_staging>
- <enforcement_mode>allow</enforcement_mode>
- <http_only>false</http_only>
- <secure>false</secure>
- <check_signatures>true</check_signatures>
- <is_base64>false</is_base64>
- </allowed_modified_cookie>
- <character_set/>
- </headers>
- <attack_signatures>
- <signature_set>
- <set id="1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"></set>
- <alarm>true</alarm>
- <block>true</block>
- <learn>true</learn>
- </signature_set>
- <enable_staging>true</enable_staging>
- <staging_period_in_days>7</staging_period_in_days>
- <signature signature_id="200000001">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000002">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000003">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000004">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000005">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000006">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000007">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000008">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000009">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000011">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000012">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000013">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000014">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000015">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000016">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000017">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000018">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000019">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000020">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000021">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000022">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000023">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000024">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000025">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000026">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000027">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000028">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000029">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000030">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000031">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000032">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000034">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000035">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000036">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000037">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000041">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000042">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000043">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000059">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000060">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000063">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000067">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000068">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000070">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000071">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000072">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000073">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000074">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000075">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000076">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000081">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000082">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000083">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000084">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000085">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000086">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000089">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000090">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000091">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000093">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000094">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000095">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000096">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000097">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000098">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000099">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000101">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000102">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000103">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000104">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000105">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000106">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000107">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000108">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000109">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000110">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000111">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000112">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000113">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000114">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000115">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000116">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000117">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000118">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000119">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000120">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000121">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000122">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000123">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000124">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000125">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000126">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000127">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000128">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000129">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000130">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000131">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000132">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000133">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000134">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000135">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000136">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000137">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000138">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000139">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000140">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000141">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000145">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000146">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000147">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000151">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000152">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000153">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000156">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000157">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000158">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000159">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000160">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000161">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000162">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000163">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000164">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000165">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000167">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000168">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000169">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000170">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000171">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000172">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000173">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000174">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000175">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000176">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000177">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000178">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000179">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000180">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000181">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000182">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000183">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000187">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000188">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200000190">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001001">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001015">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001016">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001017">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001018">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001019">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001020">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001021">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001022">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001023">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001024">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001025">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001026">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001027">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001028">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001029">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001030">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001031">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001032">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001033">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001034">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001035">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001036">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001037">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001038">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001039">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001040">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001041">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001042">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001043">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001044">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001045">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001046">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001047">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001048">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001049">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001050">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001051">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001052">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001053">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001054">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001055">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001056">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001057">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001058">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001059">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001060">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001061">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001062">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001063">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001064">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001065">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001069">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001070">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001071">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001072">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001073">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001074">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001075">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001076">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001077">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001078">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001079">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001080">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001081">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001082">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001083">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001084">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001085">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001086">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001087">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001088">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001089">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001090">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001091">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001092">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001093">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001094">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001095">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001096">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001097">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001098">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001099">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001100">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001101">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001111">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001112">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001113">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001114">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001115">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001116">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001117">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001118">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001119">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001120">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001121">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001122">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001123">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001124">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001125">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001126">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001127">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001128">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001129">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001130">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001131">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001132">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001133">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001134">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001135">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001136">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001137">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001138">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001139">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001140">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001141">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001142">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001143">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001144">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001145">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001146">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001147">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001148">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001149">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001150">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001151">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001152">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001153">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001154">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001155">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001156">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001157">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001158">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001159">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001160">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001161">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001162">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001163">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001164">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001165">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001166">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001167">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001168">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001169">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001170">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001171">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001172">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001173">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001174">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001175">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001176">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001177">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001178">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001179">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001180">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001181">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001182">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001183">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001184">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001185">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001186">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001187">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001188">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001189">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001190">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001191">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001192">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001193">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001194">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001195">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001196">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001197">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001198">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001199">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001200">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001201">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001202">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001203">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001204">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001205">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001206">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001207">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001208">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001209">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001210">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001211">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001212">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001213">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001214">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001215">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001216">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001217">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001218">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001219">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001220">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001221">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001222">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001223">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001224">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001225">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001226">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001227">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001228">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001229">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001230">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001231">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001232">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001233">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001234">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001235">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001236">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001237">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001238">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001239">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001240">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001241">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001242">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001243">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001244">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001245">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001246">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001247">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001248">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001249">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001250">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001251">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001252">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001253">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001254">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001255">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001256">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001257">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001258">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001259">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001260">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001261">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001262">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001263">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001264">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001265">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001266">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001267">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001268">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001269">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001270">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001271">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001272">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001273">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001274">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001275">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001276">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001277">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001278">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001279">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001280">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001281">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001282">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001283">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001284">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001285">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001286">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001287">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001288">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001289">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001290">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001291">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001292">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001293">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001294">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001295">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001296">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001297">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001298">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001299">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001300">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001301">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001302">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001303">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001304">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001305">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001306">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001307">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001308">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001309">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001310">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001311">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001312">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001313">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001314">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001315">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001316">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001317">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001318">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001319">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001320">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001321">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001322">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001323">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001324">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001325">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001326">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001327">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001328">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001329">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001330">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001331">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001332">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001333">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001334">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001335">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001336">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001337">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001338">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001339">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001340">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001341">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001342">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001343">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001344">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001345">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001346">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001347">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001348">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001349">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001350">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001351">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001352">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001353">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001354">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001355">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001356">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001357">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001358">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001359">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001360">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001361">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001362">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001363">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001364">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001365">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001366">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001367">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001368">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001369">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001370">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001371">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001372">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001373">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001374">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001375">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001376">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001377">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001378">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001379">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001380">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001381">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001382">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001383">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001384">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001385">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001386">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001387">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001388">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001389">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001391">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001392">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001393">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001394">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001395">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001396">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001397">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001398">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001399">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001400">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001401">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001402">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001403">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001404">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001405">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001406">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001407">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001408">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001409">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001410">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001411">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001412">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001413">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001414">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001415">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001416">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001417">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001418">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001419">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001420">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001421">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001422">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001423">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001424">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001425">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001426">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001427">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001428">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001429">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001430">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001431">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001432">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001433">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001434">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001435">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001436">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001437">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001438">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001439">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001440">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001441">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001442">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001443">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001444">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001445">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001446">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001447">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001448">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001449">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001450">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001451">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001452">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001453">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001454">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001455">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001456">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001457">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001458">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001459">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001460">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001461">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001462">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001463">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001464">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001465">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001466">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001467">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001468">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001469">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001470">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001471">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001474">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001475">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001476">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001477">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001478">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001480">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001481">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001482">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001483">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001484">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001485">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001486">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001487">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001488">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001489">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001490">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001491">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001492">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001493">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001494">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001496">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001497">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001498">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001499">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001500">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001504">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001505">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001506">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001507">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001508">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001509">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001510">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001511">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001512">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001513">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001514">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001515">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001516">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001517">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001518">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001519">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001520">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001521">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001522">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001523">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001524">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001525">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001526">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001527">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001528">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001529">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001530">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001531">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001532">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001533">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001534">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001535">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001536">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001537">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001538">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001539">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001540">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001541">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001542">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001543">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001544">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001545">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001546">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001547">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001548">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001549">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001550">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001551">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001552">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001553">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001554">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001555">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001556">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001557">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001558">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001559">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001560">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001561">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001562">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001563">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001564">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001565">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001566">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001567">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001568">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001569">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001570">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001571">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001572">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001573">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001574">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001575">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001576">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001577">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001578">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001579">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001580">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001581">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001582">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001583">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001584">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001585">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001586">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001587">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001588">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001589">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001590">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001591">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001592">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001593">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001594">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001595">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001596">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001597">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001598">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001599">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001600">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001601">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001602">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001603">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001604">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001605">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001606">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001607">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001608">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001609">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001610">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001611">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001612">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001613">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001614">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001615">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001616">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001617">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001618">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001619">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001620">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001621">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001622">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001623">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001624">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001625">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001626">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001627">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001628">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001629">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001630">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001631">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001632">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001633">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001634">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001635">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001636">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001637">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001638">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001639">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001640">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001641">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001642">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001643">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001644">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001645">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001646">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001647">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001648">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001649">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001650">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001651">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001652">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001653">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001654">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001655">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001657">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001658">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001659">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001660">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001661">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001662">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001663">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001664">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001665">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001666">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001667">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001668">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001669">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001670">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001671">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001672">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001673">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001674">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001675">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001676">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001677">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001678">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001679">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001680">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001681">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001682">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001683">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001684">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001685">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001686">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001687">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001688">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001689">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001690">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001691">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001692">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001693">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001694">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001695">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001696">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001697">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001698">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001699">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001715">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001716">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200001717">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002024">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002025">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002026">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002027">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002028">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002029">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002030">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002031">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002032">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002033">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002034">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002035">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002038">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002040">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002042">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002043">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002044">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002045">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002046">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002048">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002049">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002050">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002053">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002054">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002055">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002056">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002057">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002058">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002060">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002061">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002062">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002063">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002064">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002065">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002066">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002067">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002068">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002069">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002070">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002071">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002073">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002074">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002075">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002076">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002077">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002078">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002079">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002080">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002081">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002082">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002083">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002084">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002085">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002086">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002087">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002088">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002089">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002090">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002091">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002092">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002093">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002094">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002095">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002101">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002102">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002103">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002104">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002105">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002106">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002107">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002108">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002110">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002111">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002113">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002114">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002115">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002116">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002117">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002118">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002119">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002120">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002121">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002122">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002123">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002124">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002125">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002126">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002127">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002128">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002129">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002130">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002131">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002133">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002134">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002135">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002137">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002138">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002139">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002140">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002141">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002142">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002143">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002145">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002147">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002149">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002151">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002153">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002154">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002155">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002156">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002157">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002158">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002160">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002161">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002162">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002163">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002164">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002165">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002166">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002167">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002168">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002169">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002170">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002171">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002172">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002173">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002174">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002175">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002176">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002177">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002178">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002179">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002180">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002181">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002182">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002183">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002184">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002185">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002186">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002187">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002188">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002189">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002190">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002191">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002192">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002193">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002195">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002196">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002197">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002198">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002199">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002200">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002201">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002202">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002203">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002204">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002206">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002207">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002208">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002210">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002213">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002214">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002225">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002226">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002227">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002228">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002229">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002230">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002231">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002232">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002234">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002236">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002237">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002240">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002241">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002242">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002243">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002244">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002247">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002248">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002249">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002251">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002252">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002253">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002254">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002255">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002256">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002257">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002258">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002259">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002260">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002261">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002262">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002263">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002264">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002265">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002266">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002267">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002268">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002269">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002270">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002271">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002272">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002273">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002274">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002275">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002276">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002277">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002278">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002279">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002280">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002282">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002283">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002284">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002285">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002286">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002287">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002288">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002289">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002290">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002291">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002292">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002293">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002294">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002295">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002296">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002297">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002298">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002299">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002300">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002301">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002302">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002303">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002305">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002306">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002307">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002308">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002309">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002310">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002311">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002312">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002313">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002314">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002315">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002316">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002317">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002318">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002319">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002320">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002321">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002322">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002323">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002324">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002325">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002326">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002327">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002328">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002329">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002330">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002331">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002332">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002333">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002334">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002335">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002336">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002337">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002338">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002339">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002340">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002341">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002342">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002343">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002344">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002345">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002346">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002347">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002348">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002349">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002350">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002351">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002352">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002353">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002354">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002355">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002356">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002357">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002358">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002359">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002360">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002361">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002362">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002363">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002364">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002365">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002366">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002367">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002368">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002369">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002370">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002371">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002372">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002373">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002374">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002375">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002376">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002377">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002378">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002379">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002380">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002381">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002382">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002383">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002384">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002385">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002386">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002387">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002388">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002389">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002390">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002391">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002392">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002393">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002394">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002395">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002396">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002397">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002398">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002399">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002400">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002401">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002402">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002403">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002404">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002405">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002406">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002408">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002409">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002410">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002411">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002412">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002413">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002414">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002415">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002416">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002419">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002420">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002421">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002422">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002423">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002424">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002425">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002426">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002427">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002428">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002429">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002430">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002431">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002432">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002433">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002434">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002435">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002436">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002437">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002438">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002439">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002440">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002441">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002442">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002443">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002444">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002446">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002447">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002448">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002449">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002450">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002451">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002452">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002453">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002454">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002455">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002456">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002457">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002458">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002459">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002460">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002461">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002462">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002463">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002464">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002465">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002466">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002467">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002468">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002469">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002470">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002471">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002472">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002473">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002474">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002475">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002476">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002477">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002478">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002479">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002480">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002481">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002482">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002483">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002484">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002485">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002486">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002487">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002488">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002489">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002490">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002491">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002492">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002493">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002494">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002495">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002496">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002497">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002498">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002499">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002500">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002501">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002502">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002503">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002504">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002505">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002506">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002507">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002508">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002509">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002510">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002511">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002512">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002513">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002514">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002515">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002516">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002517">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002518">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002519">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002520">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002521">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002522">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002523">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002524">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002525">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002526">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002527">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002528">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002529">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002530">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002531">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002532">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002533">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002534">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002535">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002536">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002537">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002538">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002539">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002540">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002541">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002542">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002543">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002544">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002545">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002546">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002547">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002548">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002549">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002550">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002551">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002552">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002553">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002554">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002555">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002556">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002557">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002558">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002559">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002560">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002561">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002562">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002563">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002564">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002565">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002566">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002567">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002568">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002569">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002570">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002571">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002572">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002573">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002574">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002575">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002576">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002577">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002578">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002579">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002580">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002581">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002582">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002583">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002584">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002585">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002586">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002587">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002588">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002589">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002590">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002591">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002592">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002593">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002594">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002595">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002596">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002597">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002598">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002599">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002600">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002601">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002602">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002603">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002604">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002605">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200002606">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003000">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003001">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003002">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003003">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003004">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003005">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003006">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003007">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003008">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003009">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003010">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003011">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003013">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003014">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003015">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003016">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003017">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003018">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003019">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003020">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003022">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003023">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003024">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003025">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003026">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003027">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003028">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003029">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003030">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003031">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003032">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003033">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003034">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003035">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003036">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003037">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003038">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003039">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003040">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003041">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003042">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003043">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003044">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003045">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003046">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003047">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003048">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003049">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003050">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003051">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003052">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003053">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003054">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003055">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003056">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003057">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003058">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003059">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003060">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003061">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003062">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003063">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003064">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003065">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003066">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003067">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003068">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003069">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003071">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003072">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003073">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003074">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003075">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003076">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003077">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003078">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003079">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003080">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003081">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003082">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003083">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003084">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003085">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003086">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003087">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003088">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003089">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003090">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003091">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003092">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003093">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003094">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003095">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003096">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003097">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003098">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003099">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003100">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003101">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003102">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003103">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003104">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003105">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003106">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003107">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003108">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003109">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003110">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003111">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003112">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003113">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003114">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003115">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003116">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003117">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003118">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003119">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003120">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003121">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003122">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003123">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003124">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003125">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003126">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003127">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003128">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003129">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003130">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003131">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003132">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003133">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003134">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003135">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003136">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003137">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003138">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003139">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003140">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003141">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003142">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003143">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003144">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003145">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003146">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003147">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003148">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003149">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003150">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003151">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003152">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003153">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003154">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003155">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003156">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003157">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003158">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003159">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003160">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003161">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003162">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003163">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003164">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003165">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003166">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003167">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003168">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003169">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003170">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003171">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003172">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003174">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003175">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003176">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003177">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003178">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003180">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003182">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003183">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003184">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003185">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003186">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003187">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003188">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003189">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003190">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003191">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003192">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003193">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003194">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003195">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003196">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003197">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003198">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003199">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003200">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003202">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003203">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003204">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003205">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003206">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003207">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003208">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003209">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003210">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003212">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003213">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003214">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003215">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003216">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003217">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003218">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003219">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003220">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003221">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003222">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003223">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003224">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003225">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003226">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003228">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003229">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003230">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003231">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003232">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003233">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003234">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003235">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003236">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003237">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003238">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003239">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003240">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003241">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003242">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003243">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003244">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003245">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003246">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003247">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003248">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003249">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003250">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003251">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003252">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003253">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003254">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003255">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003256">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003257">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003258">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003259">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003261">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003262">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003264">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003266">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003267">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003268">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003269">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003270">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003271">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003272">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003273">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003274">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003275">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003276">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003277">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003278">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003279">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003280">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003281">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003282">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003284">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003285">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003286">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003287">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003288">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003289">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003290">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003291">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003292">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003293">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003294">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003295">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003296">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003297">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003298">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003299">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003300">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003301">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003302">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003303">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003304">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003305">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003306">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003307">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003308">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003309">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003310">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003311">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003312">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003313">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003314">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003315">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003316">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003317">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003318">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003319">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003320">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003321">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003322">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003323">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003324">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003325">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003326">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003327">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003328">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003329">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003330">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003332">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003333">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003334">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003335">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003336">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003337">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003338">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003339">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003340">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003341">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003342">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003343">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003344">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003345">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003346">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003347">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003348">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003349">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003350">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003351">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003352">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003353">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003354">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003355">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003356">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003357">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003358">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003359">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003360">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003361">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003362">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003363">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003364">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003365">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003366">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003367">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003368">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003369">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003370">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003371">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003372">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003373">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003374">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003375">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003376">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003377">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003378">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003379">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003380">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003381">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003382">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003384">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003385">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003386">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003387">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003388">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003389">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003390">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003391">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003392">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003394">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003396">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003397">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003398">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003399">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003400">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003401">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003402">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003403">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003404">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003405">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003406">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003407">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003408">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003410">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003411">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003412">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003414">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003415">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003416">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003417">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003418">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003419">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003420">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003421">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003422">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003423">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003424">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003425">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003426">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003427">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003428">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003429">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003430">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003431">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003432">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003433">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003434">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003435">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003436">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003437">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003438">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003439">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003440">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003441">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003442">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003443">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003444">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003445">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003446">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003447">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003448">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003449">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003450">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003451">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003452">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003453">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003454">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003455">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003456">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003457">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003458">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003459">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003460">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003461">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003462">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003463">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003464">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003465">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003466">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003467">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003468">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003469">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003470">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003471">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003472">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003473">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003474">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003475">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200003476">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004000">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004001">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004002">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004003">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004004">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004005">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004006">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004007">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004008">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004009">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004010">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004011">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004012">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004013">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004014">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004015">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004016">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004017">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004018">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004019">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004020">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004021">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004022">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004023">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004024">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004025">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004026">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004027">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004028">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004029">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004030">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004031">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004032">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004033">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004034">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004035">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004036">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004037">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004038">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004039">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004040">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004041">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004042">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004043">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004044">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004045">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004046">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004047">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004048">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004049">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004051">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004052">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004053">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004054">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004055">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004056">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004057">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004058">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004059">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004106">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004107">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004108">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004109">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004110">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004111">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004112">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004113">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004114">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004115">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004116">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004117">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004118">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004119">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004120">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004121">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004122">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004123">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004124">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004125">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004126">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004127">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004128">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004129">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004130">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004131">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004132">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004133">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004134">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004135">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004136">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004137">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004138">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004139">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004140">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004141">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004142">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004143">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004144">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004145">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004146">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004147">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004148">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004149">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004150">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004151">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004152">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004153">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004154">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004155">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004156">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004157">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004158">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004159">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004160">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004161">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004162">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004163">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004165">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004166">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004167">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004168">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004169">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004170">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004171">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004172">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004174">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004175">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004176">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004177">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004178">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004179">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004180">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004181">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004182">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004183">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004184">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004185">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004186">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004187">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004188">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004189">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004190">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004191">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200004198">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200005000">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200005001">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200005002">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200005003">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200005004">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200005005">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200005007">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200005008">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200006000">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200006001">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200006002">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200006003">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200006004">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200006005">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200006006">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200006007">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200006008">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200006009">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200006010">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200006011">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200006012">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200006013">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200006014">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200006015">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200006016">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200006017">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200006018">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200006019">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200006020">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200006021">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200006022">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200006023">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200006024">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200006025">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200006026">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200006027">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200006028">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200006029">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200006030">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200006031">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200007000">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200007002">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200007003">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200007004">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200007005">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200007006">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200007007">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200007008">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200007009">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200007010">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200007011">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200007012">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200007013">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200008000">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200008001">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200008002">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200008003">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009000">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009001">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009002">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009003">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009004">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009005">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009006">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009007">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009008">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009009">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009010">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009011">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009012">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009013">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009014">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009015">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009016">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009017">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009018">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009019">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009020">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009021">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009022">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009023">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009024">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009025">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009026">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009027">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009028">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009029">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009030">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009031">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009032">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009033">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009034">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009035">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009036">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009037">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009038">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009039">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009040">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009041">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009042">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009043">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009044">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009045">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009046">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009047">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009048">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009049">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009050">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009051">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009052">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009053">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009054">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009055">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009056">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009057">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009058">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009059">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009060">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009061">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009062">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009063">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009064">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009065">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009066">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009067">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009068">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009069">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009070">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009071">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009072">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009073">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009074">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009075">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009076">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009077">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009078">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009079">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009080">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009081">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009082">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009083">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009084">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009085">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009086">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009087">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009088">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009089">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009090">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009091">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009092">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009093">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009094">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009095">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009096">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009097">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009098">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009099">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009100">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009101">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009102">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009103">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009104">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009105">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009106">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009107">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009108">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009109">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009110">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009111">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009112">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009113">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009114">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009115">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009116">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009117">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009118">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009119">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009120">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009121">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009122">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009123">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009124">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009125">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009126">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009127">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009128">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009129">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009130">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009131">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009132">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009133">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009134">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009135">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009136">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009137">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009138">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009139">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009140">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009141">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009142">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009143">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009144">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009145">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009146">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009147">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009148">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009149">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009150">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009151">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009152">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009153">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009154">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009155">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009156">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009157">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009158">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009159">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009160">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009161">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009162">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009163">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009164">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009165">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009166">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009167">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009168">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009169">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009170">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009171">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009172">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009173">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009174">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009175">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009176">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009177">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009178">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009179">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009180">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009181">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009182">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009183">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009184">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009185">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009186">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009187">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009188">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009189">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009190">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009191">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009192">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009193">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009194">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009195">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009196">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009197">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009198">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009199">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009200">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009201">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009202">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009203">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009204">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009205">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009206">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009207">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009208">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009209">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009210">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009211">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009212">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009213">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009214">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009215">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009216">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009217">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009218">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009219">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009220">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009221">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009222">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009223">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009224">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009225">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009226">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009227">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009228">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009229">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009230">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009231">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009232">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009233">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009234">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009235">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009236">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009237">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009238">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009239">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009240">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009241">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009242">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009243">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009244">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009245">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009246">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009247">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009248">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009249">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009250">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009251">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009252">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009253">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009254">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009255">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200009256">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010000">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010001">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010002">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010003">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010004">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010005">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010007">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010008">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010009">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010010">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010011">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010012">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010013">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010014">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010015">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010016">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010017">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010018">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010019">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010020">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010021">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010022">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010023">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010024">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010025">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010026">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010027">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010028">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010029">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010030">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010031">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010032">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010033">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010034">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010035">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010036">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010037">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010038">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010039">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010040">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010041">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010042">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010043">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010044">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010045">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010046">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010047">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010048">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010049">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010050">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010051">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010052">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010053">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010054">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010055">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010056">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010057">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010058">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010059">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010060">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010061">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010062">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010063">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010064">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010065">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010066">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010067">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010068">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200010069">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200011000">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200011026">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200011027">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200011028">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200011029">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200011030">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200011031">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200011032">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200011033">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200011034">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200011035">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200011036">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200011037">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200011038">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200011039">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200011040">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200011041">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200011042">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200011043">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200011044">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200011045">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200011046">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200011047">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200011048">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200011049">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200011050">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200011051">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200011052">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200011053">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200011054">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200012001">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200012002">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200012003">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200012004">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200012005">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200012006">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200012007">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200012008">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200012009">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200012010">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200012011">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200012012">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200012013">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200012014">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200012015">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200012016">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200012017">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200012018">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200012019">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200012020">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200013001">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200014000">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200014001">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200014002">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200014003">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015000">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015001">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015002">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015003">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015004">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015005">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015006">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015007">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015008">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015009">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015010">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015011">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015012">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015013">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015014">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015015">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015016">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015017">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015018">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015019">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015020">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015021">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015022">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015023">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015024">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015025">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015026">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015027">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015028">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015029">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015030">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015031">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015032">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015033">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015035">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015036">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015037">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015038">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015039">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015040">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015041">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015042">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015043">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015044">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015045">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015046">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015047">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015048">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015049">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015050">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015051">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015052">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015053">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015054">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015055">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015056">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015057">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015058">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015059">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015060">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015061">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015062">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015063">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015064">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015065">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015066">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015067">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015068">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015069">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015070">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015071">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015072">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015073">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015074">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015075">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015076">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015077">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015078">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015079">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200015080">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200016000">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200016001">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200016002">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200016003">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200016004">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200016005">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200016006">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200016007">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200018000">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200018001">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200018002">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200018003">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200018004">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200018005">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200018006">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200018007">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200018008">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200018010">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200018011">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200018016">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200018018">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200018019">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200018020">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200018021">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200018022">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200018023">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200018025">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200018026">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200018027">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200018028">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200018029">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200018030">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019000">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019001">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019002">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019003">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019004">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019005">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019006">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019007">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019008">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019009">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019010">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019011">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019012">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019013">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019014">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019015">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019016">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019017">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019018">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019019">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019020">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019021">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019022">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019023">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019024">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019025">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019027">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019028">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019029">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019030">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019031">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019032">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019033">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019034">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019035">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019036">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019037">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019038">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019039">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019040">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019041">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019042">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019043">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019044">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019045">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019046">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019047">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019048">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019049">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019050">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019051">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019052">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019053">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019054">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019055">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019056">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019057">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019058">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019059">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019060">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019061">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019062">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019063">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019064">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019065">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019066">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019067">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019068">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019069">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019070">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019071">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019072">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019073">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019074">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019075">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019076">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019077">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019078">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019079">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019080">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019081">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019082">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019083">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019084">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019085">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019086">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019087">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019088">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019089">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019090">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019091">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019092">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019093">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019094">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019095">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019096">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019097">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019098">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019099">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019100">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019101">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019102">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019103">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019104">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019105">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019106">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019107">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019108">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019109">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019110">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019111">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019112">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019113">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019114">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019115">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019116">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019117">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019118">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019119">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019120">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019121">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019122">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019123">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019124">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019125">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019126">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019127">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019128">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019129">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019130">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019131">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019132">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019133">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019134">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019135">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200019136">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021001">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021002">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021004">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021005">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021006">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021007">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021008">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021009">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021010">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021011">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021012">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021013">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021014">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021015">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021016">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021017">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021018">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021019">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021020">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021021">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021022">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021023">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021024">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021025">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021026">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021027">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021028">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021029">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021030">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021031">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021032">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021033">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021034">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021035">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021036">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021037">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021038">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021039">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021040">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021041">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021042">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021043">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021045">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021046">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021047">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021048">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021049">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021051">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021052">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021053">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021054">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021055">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021056">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021057">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021058">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021059">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021060">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021061">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021062">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021063">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021064">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021065">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021066">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021067">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021069">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021070">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021072">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021074">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021075">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021076">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021077">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021078">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021079">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021080">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021081">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021082">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021083">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021084">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021085">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021086">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021087">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021088">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021089">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021090">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021091">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021092">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021093">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021094">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021095">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021096">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021097">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021098">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021099">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021100">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021101">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021102">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021103">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021104">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021105">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021106">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021107">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021108">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021109">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021112">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021113">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021114">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021115">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021116">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021117">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021118">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021119">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021120">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021121">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021122">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021123">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021124">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021125">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021126">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021127">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021128">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021129">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021130">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021131">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021132">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021133">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021134">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021135">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021136">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021137">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021138">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021139">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021140">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021141">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021142">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200021143">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200022001">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200022002">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200022003">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200022004">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200022005">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200022006">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200022007">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200022008">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200022009">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200022010">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200022011">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200022012">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200022013">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200022014">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200022015">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200022016">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200022017">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200022018">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200022019">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200023001">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200023002">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200023003">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200023004">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100000">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100001">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100002">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100004">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100005">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100006">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100007">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100008">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100009">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100010">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100011">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100013">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100014">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100015">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100018">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100019">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100020">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100021">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100022">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100025">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100026">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100027">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100028">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100029">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100030">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100031">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100032">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100033">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100034">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100035">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100036">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100037">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100038">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100039">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100040">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100041">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100042">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100043">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100044">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100045">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100046">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100047">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100048">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100049">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100050">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100051">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100053">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100054">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100055">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100056">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100057">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100058">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100059">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100060">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100061">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100062">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100063">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100064">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100065">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100066">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100067">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100069">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100071">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100072">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100073">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100074">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100075">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100077">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100078">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100079">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100080">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100081">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100082">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100083">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100084">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100085">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100086">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100087">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100088">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100089">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100090">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100091">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100092">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100093">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100094">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100095">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100096">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100097">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100098">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100099">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100100">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100101">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100102">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100103">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100104">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100105">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100106">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100107">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100108">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100109">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100110">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100111">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100300">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100304">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100305">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100306">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100307">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100308">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100309">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100310">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100311">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100312">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100313">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100314">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100315">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100316">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100317">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100318">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100319">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100320">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100321">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100322">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100323">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100324">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100330">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200100332">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200200001">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="200200002">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- <signature signature_id="299999999">
- <enabled>true</enabled>
- <in_staging>true</in_staging>
- </signature>
- </attack_signatures>
- <data_guard>
- <enabled>false</enabled>
- <credit_card_numbers>false</credit_card_numbers>
- <social_security_numbers>false</social_security_numbers>
- <file_content>false</file_content>
- <mask_data>false</mask_data>
- <check_custom_patterns>false</check_custom_patterns>
- <check_exception_patterns>false</check_exception_patterns>
- <enforcement_mode>enforce_all_except_url_list</enforcement_mode>
- </data_guard>
- <policy_builder>
- <enabled>false</enabled>
- <http_protocol_compliance>true</http_protocol_compliance>
- <evasion_techniques_detected>true</evasion_techniques_detected>
- <learn_file_types>Always</learn_file_types>
- <file_types_lengths>true</file_types_lengths>
- <attack_signatures>true</attack_signatures>
- <learn_urls>Never</learn_urls>
- <urls_metachars>false</urls_metachars>
- <learn_parameters>When Violation Detected</learn_parameters>
- <learn_cookies>When Violation Detected</learn_cookies>
- <learn_redirection_domains>Always</learn_redirection_domains>
- <maximum_redirection_domains>100</maximum_redirection_domains>
- <parameters_value_lengths>false</parameters_value_lengths>
- <parameters_name_meta_characters>false</parameters_name_meta_characters>
- <parameters_value_meta_characters>false</parameters_value_meta_characters>
- <parameters_integer_value>true</parameters_integer_value>
- <allowed_methods>false</allowed_methods>
- <request_length_exceeds_buffer_size>true</request_length_exceeds_buffer_size>
- <client_side_policy_building>false</client_side_policy_building>
- <maximum_file_types>250</maximum_file_types>
- <maximum_urls>10000</maximum_urls>
- <maximum_parameters>10000</maximum_parameters>
- <maximum_allowed_modified_cookies>100</maximum_allowed_modified_cookies>
- <content_profiles>false</content_profiles>
- <content_profile_classification>false</content_profile_classification>
- <track_site_changes>
- <untrusted>
- <enabled>true</enabled>
- <distinct_sessions>10</distinct_sessions>
- <distinct_ips>10</distinct_ips>
- <minimum_interval>300</minimum_interval>
- <maximum_interval>604800</maximum_interval>
- </untrusted>
- <trusted>
- <enabled>true</enabled>
- <distinct_sessions>1</distinct_sessions>
- <distinct_ips>1</distinct_ips>
- <minimum_interval>0</minimum_interval>
- <maximum_interval>604800</maximum_interval>
- </trusted>
- </track_site_changes>
- <loosen_rule>
- <untrusted>
- <distinct_sessions>20</distinct_sessions>
- <distinct_ips>20</distinct_ips>
- <minimum_interval>3600</minimum_interval>
- <maximum_interval>604800</maximum_interval>
- </untrusted>
- <trusted>
- <distinct_sessions>1</distinct_sessions>
- <distinct_ips>1</distinct_ips>
- <minimum_interval>0</minimum_interval>
- <maximum_interval>604800</maximum_interval>
- </trusted>
- </loosen_rule>
- <tighten_rule>
- <untrusted>
- <distinct_sessions>500</distinct_sessions>
- <distinct_ips>500</distinct_ips>
- <total_requests>5000</total_requests>
- <minimum_interval>86400</minimum_interval>
- </untrusted>
- <trusted>
- <distinct_sessions>500</distinct_sessions>
- <distinct_ips>500</distinct_ips>
- <total_requests>5000</total_requests>
- <minimum_interval>86400</minimum_interval>
- </trusted>
- </tighten_rule>
- <dynamic_parameters>
- <unique_value_sets>10</unique_value_sets>
- <hidden_fields>false</hidden_fields>
- <use_statistics_forms>false</use_statistics_forms>
- <use_statistics_links>false</use_statistics_links>
- </dynamic_parameters>
- <parameter_level>global</parameter_level>
- <collapse_to_global_occurrences>10</collapse_to_global_occurrences>
- <all_trusted_ips>list</all_trusted_ips>
- <valid_host_names>true</valid_host_names>
- <csrf_urls>false</csrf_urls>
- <learn_from_responses>true</learn_from_responses>
- <encoding_failed_to_convert>false</encoding_failed_to_convert>
- <check_max_cookie_header_length>false</check_max_cookie_header_length>
- <check_max_http_header_length>false</check_max_http_header_length>
- <collapse_urls>true</collapse_urls>
- <collapse_urls_occurrences>500</collapse_urls_occurrences>
- <collapse_urls_depth>2</collapse_urls_depth>
- <response_code>1xx</response_code>
- <response_code>2xx</response_code>
- <response_code>3xx</response_code>
- <filetype>bmp</filetype>
- <filetype>gif</filetype>
- <filetype>ico</filetype>
- <filetype>jpeg</filetype>
- <filetype>jpg</filetype>
- <filetype>pcx</filetype>
- <filetype>pdf</filetype>
- <filetype>png</filetype>
- <filetype>swf</filetype>
- <filetype>wav</filetype>
- </policy_builder>
- <geolocation>
- <enforcement_mode>
- <mode>disallow</mode>
- </enforcement_mode>
- </geolocation>
- <ip_reputation>
- <enabled>false</enabled>
- </ip_reputation>
- <database_protection>
- <enabled>false</enabled>
- <user_source>APM Usernames and Session ID</user_source>
- </database_protection>
- <header name="*" type="wildcard">
- <is_mandatory>false</is_mandatory>
- <check_signatures>true</check_signatures>
- <is_base64>false</is_base64>
- <percent_normalization>false</percent_normalization>
- <uri_normalization>false</uri_normalization>
- <html_normalization>false</html_normalization>
- <enable_normalization_violation>false</enable_normalization_violation>
- <is_default>true</is_default>
- </header>
- <header name="referer" type="explicit">
- <is_mandatory>false</is_mandatory>
- <check_signatures>true</check_signatures>
- <is_base64>false</is_base64>
- <percent_normalization>false</percent_normalization>
- <uri_normalization>true</uri_normalization>
- <html_normalization>false</html_normalization>
- <enable_normalization_violation>true</enable_normalization_violation>
- <is_default>true</is_default>
- </header>
- <header name="cookie" type="explicit">
- <is_mandatory>false</is_mandatory>
- <check_signatures>false</check_signatures>
- <is_base64>false</is_base64>
- <percent_normalization>false</percent_normalization>
- <uri_normalization>false</uri_normalization>
- <html_normalization>false</html_normalization>
- <enable_normalization_violation>false</enable_normalization_violation>
- <is_default>true</is_default>
- </header>
- <header name="authorization" type="explicit">
- <is_mandatory>false</is_mandatory>
- <check_signatures>true</check_signatures>
- <is_base64>false</is_base64>
- <percent_normalization>false</percent_normalization>
- <uri_normalization>false</uri_normalization>
- <html_normalization>false</html_normalization>
- <enable_normalization_violation>false</enable_normalization_violation>
- <is_default>true</is_default>
- </header>
- <redirection_domain name="*" type="wildcard">
- <include_subdomains>false</include_subdomains>
- <learning_mode>Always</learning_mode>
- </redirection_domain>
- <redirection_protection>
- <enabled>true</enabled>
- </redirection_protection>
-</policy>
diff --git a/test/units/modules/network/f5/fixtures/load_afm_global_network_log_network.json b/test/units/modules/network/f5/fixtures/load_afm_global_network_log_network.json
deleted file mode 100644
index cc4ef0d391..0000000000
--- a/test/units/modules/network/f5/fixtures/load_afm_global_network_log_network.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "kind": "tm:security:log:profile:network:networkstate",
- "name": "global-network",
- "fullPath": "global-network",
- "generation": 839,
- "selfLink": "https://localhost/mgmt/tm/security/log/profile/~Common~global-network/network/global-network?ver=12.1.4",
- "filter": {
- "logAclMatchAccept": "disabled",
- "logAclMatchDrop": "disabled",
- "logAclMatchReject": "disabled",
- "logAclToBoxDeny": "disabled",
- "logGeoAlways": "disabled",
- "logIpErrors": "disabled",
- "logTcpErrors": "disabled",
- "logTcpEvents": "disabled",
- "logTranslationFields": "disabled"
- },
- "format": {
- "fieldListDelimiter": ",",
- "type": "none"
- },
- "rateLimit": {
- "aclMatchAccept": 4294967295,
- "aclMatchDrop": 4294967295,
- "aclMatchReject": 4294967295,
- "aggregateRate": 4294967295,
- "ipErrors": 4294967295,
- "tcpErrors": 4294967295,
- "tcpEvents": 4294967295
- }
-}
diff --git a/test/units/modules/network/f5/fixtures/load_afm_log_global_network_profile.json b/test/units/modules/network/f5/fixtures/load_afm_log_global_network_profile.json
deleted file mode 100644
index 205af5b8c5..0000000000
--- a/test/units/modules/network/f5/fixtures/load_afm_log_global_network_profile.json
+++ /dev/null
@@ -1,50 +0,0 @@
-{
- "kind": "tm:security:log:profile:profilestate",
- "name": "global-network",
- "partition": "Common",
- "fullPath": "/Common/global-network",
- "generation": 1,
- "selfLink": "https://localhost/mgmt/tm/security/log/profile/~Common~global-network?ver=12.1.4",
- "description": "Default logging profile for network events",
- "ipIntelligence": {
- "aggregateRate": 4294967295,
- "logRtbh": "disabled",
- "logShun": "disabled",
- "logTranslationFields": "disabled"
- },
- "nat": {
- "endInboundSession": "disabled",
- "endOutboundSession": {
- "action": "disabled"
- },
- "errors": "disabled",
- "lsnLegacyMode": "disabled",
- "quotaExceeded": "disabled",
- "startInboundSession": "disabled",
- "startOutboundSession": {
- "action": "disabled"
- }
- },
- "portMisuse": {
- "aggregateRate": 4294967295
- },
- "trafficStatistics": {
- "activeFlows": "disabled",
- "missedFlows": "disabled",
- "reapedFlows": "disabled",
- "syncookies": "disabled",
- "syncookiesWhitelist": "disabled"
- },
- "networkReference": {
- "link": "https://localhost/mgmt/tm/security/log/profile/~Common~global-network/network?ver=12.1.4",
- "isSubcollection": true
- },
- "protocolDnsReference": {
- "link": "https://localhost/mgmt/tm/security/log/profile/~Common~global-network/protocol-dns?ver=12.1.4",
- "isSubcollection": true
- },
- "protocolSipReference": {
- "link": "https://localhost/mgmt/tm/security/log/profile/~Common~global-network/protocol-sip?ver=12.1.4",
- "isSubcollection": true
- }
-}
diff --git a/test/units/modules/network/f5/fixtures/load_afm_schedule.json b/test/units/modules/network/f5/fixtures/load_afm_schedule.json
deleted file mode 100644
index c9d51ebffc..0000000000
--- a/test/units/modules/network/f5/fixtures/load_afm_schedule.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "kind": "tm:security:firewall:schedule:schedulestate",
- "name": "foobar",
- "partition": "Common",
- "fullPath": "/Common/foobar",
- "generation": 1835,
- "selfLink": "https://localhost/mgmt/tm/security/firewall/schedule/~Common~foobar?ver=12.1.4",
- "dailyHourEnd": "12:00",
- "dailyHourStart": "6:00",
- "dateValidEnd": "2019-06-13T16:00:00Z",
- "dateValidStart": "2019-05-31T07:00:00Z",
- "daysOfWeek": [
- "sunday",
- "monday",
- "friday",
- "saturday"
- ],
- "description": "some description"
-}
diff --git a/test/units/modules/network/f5/fixtures/load_apm_acl.json b/test/units/modules/network/f5/fixtures/load_apm_acl.json
deleted file mode 100644
index 564784dbf2..0000000000
--- a/test/units/modules/network/f5/fixtures/load_apm_acl.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "kind": "tm:apm:acl:aclstate",
- "name": "lastone",
- "partition": "Common",
- "fullPath": "/Common/lastone",
- "generation": 495,
- "selfLink": "https://localhost/mgmt/tm/apm/acl/~Common~lastone?ver=12.1.4",
- "aclOrder": 2,
- "description": "foobar",
- "locationSpecific": "true",
- "pathMatchCase": "false",
- "type": "static",
- "entries": [
- {
- "action": "discard",
- "dstEndPort": 0,
- "dstStartPort": 0,
- "dstSubnet": "0.0.0.0/0",
- "log": "none",
- "protocol": 1,
- "scheme": "any",
- "srcEndPort": 0,
- "srcStartPort": 0,
- "srcSubnet": "0.0.0.0/0"
- }
- ]
-}
diff --git a/test/units/modules/network/f5/fixtures/load_apm_network_access.json b/test/units/modules/network/f5/fixtures/load_apm_network_access.json
deleted file mode 100644
index 9c8b897f73..0000000000
--- a/test/units/modules/network/f5/fixtures/load_apm_network_access.json
+++ /dev/null
@@ -1,98 +0,0 @@
-{
- "kind": "tm:apm:resource:network-access:network-accessstate",
- "name": "test",
- "partition": "Common",
- "fullPath": "/Common/test",
- "generation": 1140,
- "selfLink": "https://localhost/mgmt/tm/apm/resource/network-access/~Common~test?ver=12.1.4",
- "addressSpaceDhcpRequestsExcluded": "true",
- "addressSpaceExcludeDnsName": [
- "baz.com",
- "bazfoo.com"
- ],
- "addressSpaceIncludeDnsName": [
- "foo.com",
- "bar.com"
- ],
- "addressSpaceLocDnsServersExcluded": "true",
- "addressSpaceLocalSubnetsExcluded": "true",
- "addressSpaceProtect": "false",
- "applicationLaunchWarning": "true",
- "autoLaunch": "false",
- "clientInterfaceSpeed": 100000000,
- "clientIpFilterEngine": "false",
- "clientPowerManagement": "ignore",
- "clientProxy": "false",
- "clientProxyAddress": "any6",
- "clientProxyEnforceSubnets": "true",
- "clientProxyIgnoreAutoConfigError": "false",
- "clientProxyLocalBypass": "false",
- "clientProxyPort": 0,
- "clientProxyUseHttpPac": "false",
- "clientProxyUseLocalProxy": "false",
- "clientTrayIcon": "true",
- "compression": "none",
- "customizationGroup": "/Common/test_resource_network_access_customization",
- "customizationGroupReference": {
- "link": "https://localhost/mgmt/tm/apm/policy/customization-group/~Common~test_resource_network_access_customization?ver=12.1.4"
- },
- "dnsEnforceSearchOrder": "true",
- "dnsPrimary": "any6",
- "dnsRegisterConnection": "false",
- "dnsSecondary": "any6",
- "dnsUseDnsSuffixForRegistration": "false",
- "dtls": "false",
- "dtlsPort": 4433,
- "executeLogoffScripts": "false",
- "idleTimeoutThreshold": 0,
- "idleTimeoutWindow": 0,
- "ipv6DnsPrimary": "any6",
- "ipv6DnsSecondary": "any6",
- "ipv6LeasepoolName": "/Common/ipv6lease",
- "ipv6LeasepoolNameReference": {
- "link": "https://localhost/mgmt/tm/apm/resource/ipv6-leasepool/~Common~ipv6lease?ver=12.1.4"
- },
- "leasepoolName": "/Common/ipv4lease",
- "leasepoolNameReference": {
- "link": "https://localhost/mgmt/tm/apm/resource/leasepool/~Common~ipv4lease?ver=12.1.4"
- },
- "locationSpecific": "true",
- "microsoftNetworkClient": "true",
- "microsoftNetworkServer": "false",
- "networkTunnel": "enabled",
- "preserveSourcePortStrict": "none",
- "provideClientCert": "true",
- "proxyArp": "false",
- "snat": "automap",
- "splitTunneling": "true",
- "supportedIpVersion": "ipv4-ipv6",
- "syncWithActiveDirectory": "false",
- "type": "network-access",
- "winsPrimary": "any6",
- "winsSecondary": "any6",
- "addressSpaceExcludeSubnet": [
- {
- "subnet": "192.168.1.0/24"
- },
- {
- "subnet": "192.168.2.1/32"
- }
- ],
- "addressSpaceIncludeSubnet": [
- {
- "subnet": "10.10.10.1/32"
- },
- {
- "subnet": "10.11.11.0/24"
- }
- ],
- "ipv6AddressSpaceIncludeSubnet": [
- {
- "subnet": "2607:f0d0:1002:51::4/128"
- }
- ],
- "optimizedAppReference": {
- "link": "https://localhost/mgmt/tm/apm/resource/network-access/~Common~test/optimized-app?ver=12.1.4",
- "isSubcollection": true
- }
-}
diff --git a/test/units/modules/network/f5/fixtures/load_asm_dos.json b/test/units/modules/network/f5/fixtures/load_asm_dos.json
deleted file mode 100644
index cab7b71ff2..0000000000
--- a/test/units/modules/network/f5/fixtures/load_asm_dos.json
+++ /dev/null
@@ -1,276 +0,0 @@
-{
- "kind": "tm:security:dos:profile:application:applicationstate",
- "name": "test",
- "fullPath": "test",
- "generation": 1442,
- "selfLink": "https://localhost/mgmt/tm/security/dos/profile/~Common~test/application/test?ver=13.1.1.4",
- "botDefense": {
- "browserLegitCaptcha": "enabled",
- "browserLegitEnabled": "enabled",
- "crossDomainRequests": "allow-all",
- "gracePeriod": 300,
- "mode": "disabled"
- },
- "botSignatures": {
- "check": "disabled",
- "categories": [
- {
- "name": "DOS Tool",
- "partition": "Common",
- "action": "block",
- "nameReference": {
- "link": "https://localhost/mgmt/tm/security/dos/bot-signature-category/~Common~DOS%20Tool?ver=13.1.1.4"
- }
- },
- {
- "name": "E-Mail Collector",
- "partition": "Common",
- "action": "block",
- "nameReference": {
- "link": "https://localhost/mgmt/tm/security/dos/bot-signature-category/~Common~E-Mail%20Collector?ver=13.1.1.4"
- }
- },
- {
- "name": "Exploit Tool",
- "partition": "Common",
- "action": "block",
- "nameReference": {
- "link": "https://localhost/mgmt/tm/security/dos/bot-signature-category/~Common~Exploit%20Tool?ver=13.1.1.4"
- }
- },
- {
- "name": "Network Scanner",
- "partition": "Common",
- "action": "block",
- "nameReference": {
- "link": "https://localhost/mgmt/tm/security/dos/bot-signature-category/~Common~Network%20Scanner?ver=13.1.1.4"
- }
- },
- {
- "name": "Search Engine",
- "partition": "Common",
- "action": "report",
- "nameReference": {
- "link": "https://localhost/mgmt/tm/security/dos/bot-signature-category/~Common~Search%20Engine?ver=13.1.1.4"
- }
- },
- {
- "name": "Spam Bot",
- "partition": "Common",
- "action": "block",
- "nameReference": {
- "link": "https://localhost/mgmt/tm/security/dos/bot-signature-category/~Common~Spam%20Bot?ver=13.1.1.4"
- }
- },
- {
- "name": "Spyware",
- "partition": "Common",
- "action": "block",
- "nameReference": {
- "link": "https://localhost/mgmt/tm/security/dos/bot-signature-category/~Common~Spyware?ver=13.1.1.4"
- }
- },
- {
- "name": "Vulnerability Scanner",
- "partition": "Common",
- "action": "block",
- "nameReference": {
- "link": "https://localhost/mgmt/tm/security/dos/bot-signature-category/~Common~Vulnerability%20Scanner?ver=13.1.1.4"
- }
- },
- {
- "name": "Web Spider",
- "partition": "Common",
- "action": "block",
- "nameReference": {
- "link": "https://localhost/mgmt/tm/security/dos/bot-signature-category/~Common~Web%20Spider?ver=13.1.1.4"
- }
- },
- {
- "name": "Webserver Stress Tool",
- "partition": "Common",
- "action": "block",
- "nameReference": {
- "link": "https://localhost/mgmt/tm/security/dos/bot-signature-category/~Common~Webserver%20Stress%20Tool?ver=13.1.1.4"
- }
- }
- ]
- },
- "captchaResponse": {
- "failure": {
- "body": "You have entered an invalid answer for the question. Please, try again.\n<br>\n%DOSL7.captcha.image% %DOSL7.captcha.change%\n<br>\n<b>What code is in the image\\?</b>\n%DOSL7.captcha.solution%\n<br>\n%DOSL7.captcha.submit%\n<br>\n<br>\nYour support ID is: %DOSL7.captcha.support_id%.",
- "type": "default"
- },
- "first": {
- "body": "This question is for testing whether you are a human visitor and to prevent automated spam submission.\n<br>\n%DOSL7.captcha.image% %DOSL7.captcha.change%\n<br>\n<b>What code is in the image\\?</b>\n%DOSL7.captcha.solution%\n<br>\n%DOSL7.captcha.submit%\n<br>\n<br>\nYour support ID is: %DOSL7.captcha.support_id%.",
- "type": "default"
- }
- },
- "heavyUrls": {
- "automaticDetection": "enabled",
- "exclude": [
- "/exclude.html"
- ],
- "latencyThreshold": 1000,
- "protection": "disabled",
- "includeList": [
- {
- "name": "URL/test.htm",
- "threshold": "auto",
- "url": "/test.htm"
- },
- {
- "name": "URL/testy.htm",
- "threshold": "auto",
- "url": "/testy.htm"
- }
- ]
- },
- "mobileDetection": {
- "allowAndroidRootedDevice": "false",
- "allowAnyAndroidPackage": "false",
- "allowAnyIosPackage": "false",
- "allowEmulators": "true",
- "allowJailbrokenDevices": "true",
- "clientSideChallengeMode": "pass",
- "enabled": "disabled",
- "iosAllowedPackageNames": [
- "foobarapp"
- ],
- "androidPublishers": [
- {
- "name": "ca-bundle.crt",
- "partition": "Common",
- "nameReference": {
- "link": "https://localhost/mgmt/tm/sys/file/ssl-cert/~Common~ca-bundle.crt?ver=13.1.1.4"
- }
- }
- ]
- },
- "rtbhDurationSec": 300,
- "rtbhEnable": "enabled",
- "scrubbingDurationSec": 60,
- "scrubbingEnable": "enabled",
- "singlePageApplication": "enabled",
- "stressBased": {
- "behavioral": {
- "dosDetection": "disabled",
- "mitigationMode": "none",
- "signatures": "disabled",
- "signaturesApprovedOnly": "disabled"
- },
- "deEscalationPeriod": 7200,
- "deviceCaptchaChallenge": "disabled",
- "deviceClientSideDefense": "disabled",
- "deviceMaximumAutoTps": 5000,
- "deviceMaximumTps": 200,
- "deviceMinimumAutoTps": 5,
- "deviceMinimumTps": 40,
- "deviceRateLimiting": "disabled",
- "deviceRequestBlockingMode": "rate-limit",
- "deviceTpsIncreaseRate": 500,
- "escalationPeriod": 120,
- "geoCaptchaChallenge": "disabled",
- "geoClientSideDefense": "disabled",
- "geoMaximumAutoTps": 20000,
- "geoMinimumAutoTps": 50,
- "geoMinimumShare": 10,
- "geoRateLimiting": "disabled",
- "geoRequestBlockingMode": "rate-limit",
- "geoShareIncreaseRate": 500,
- "ipCaptchaChallenge": "disabled",
- "ipClientSideDefense": "disabled",
- "ipMaximumAutoTps": 5000,
- "ipMaximumTps": 200,
- "ipMinimumAutoTps": 5,
- "ipMinimumTps": 40,
- "ipRateLimiting": "enabled",
- "ipRequestBlockingMode": "rate-limit",
- "ipTpsIncreaseRate": 500,
- "mode": "off",
- "siteCaptchaChallenge": "disabled",
- "siteClientSideDefense": "disabled",
- "siteMaximumAutoTps": 20000,
- "siteMaximumTps": 10000,
- "siteMinimumAutoTps": 50,
- "siteMinimumTps": 2000,
- "siteRateLimiting": "disabled",
- "siteTpsIncreaseRate": 500,
- "thresholdsMode": "manual",
- "urlCaptchaChallenge": "disabled",
- "urlClientSideDefense": "disabled",
- "urlEnableHeavy": "enabled",
- "urlMaximumAutoTps": 5000,
- "urlMaximumTps": 1000,
- "urlMinimumAutoTps": 50,
- "urlMinimumTps": 200,
- "urlRateLimiting": "enabled",
- "urlTpsIncreaseRate": 500
- },
- "tcpDump": {
- "maximumDuration": 30,
- "maximumSize": 10,
- "recordTraffic": "disabled",
- "repetitionInterval": "120"
- },
- "tpsBased": {
- "deEscalationPeriod": 7200,
- "deviceCaptchaChallenge": "disabled",
- "deviceClientSideDefense": "disabled",
- "deviceMaximumAutoTps": 5000,
- "deviceMaximumTps": 200,
- "deviceMinimumAutoTps": 5,
- "deviceMinimumTps": 40,
- "deviceRateLimiting": "disabled",
- "deviceRequestBlockingMode": "rate-limit",
- "deviceTpsIncreaseRate": 500,
- "escalationPeriod": 120,
- "geoCaptchaChallenge": "disabled",
- "geoClientSideDefense": "disabled",
- "geoMaximumAutoTps": 20000,
- "geoMinimumAutoTps": 50,
- "geoMinimumShare": 10,
- "geoRateLimiting": "disabled",
- "geoRequestBlockingMode": "rate-limit",
- "geoShareIncreaseRate": 500,
- "ipCaptchaChallenge": "disabled",
- "ipClientSideDefense": "disabled",
- "ipMaximumAutoTps": 5000,
- "ipMaximumTps": 200,
- "ipMinimumAutoTps": 5,
- "ipMinimumTps": 40,
- "ipRateLimiting": "enabled",
- "ipRequestBlockingMode": "rate-limit",
- "ipTpsIncreaseRate": 500,
- "mode": "off",
- "siteCaptchaChallenge": "disabled",
- "siteClientSideDefense": "disabled",
- "siteMaximumAutoTps": 20000,
- "siteMaximumTps": 10000,
- "siteMinimumAutoTps": 50,
- "siteMinimumTps": 2000,
- "siteRateLimiting": "disabled",
- "siteTpsIncreaseRate": 500,
- "thresholdsMode": "manual",
- "urlCaptchaChallenge": "disabled",
- "urlClientSideDefense": "disabled",
- "urlEnableHeavy": "enabled",
- "urlMaximumAutoTps": 5000,
- "urlMaximumTps": 1000,
- "urlMinimumAutoTps": 50,
- "urlMinimumTps": 200,
- "urlRateLimiting": "enabled",
- "urlTpsIncreaseRate": 500
- },
- "triggerIrule": "enabled",
- "geolocations": [
- {
- "name": "Afghanistan",
- "blackListed": true
- },
- {
- "name": "Aland Islands",
- "whiteListed": true
- }
- ]
-}
diff --git a/test/units/modules/network/f5/fixtures/load_asm_policy_active.json b/test/units/modules/network/f5/fixtures/load_asm_policy_active.json
deleted file mode 100644
index 001daa757a..0000000000
--- a/test/units/modules/network/f5/fixtures/load_asm_policy_active.json
+++ /dev/null
@@ -1,197 +0,0 @@
-{
- "plainTextProfileReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/plain-text-profiles?ver=12.1.2",
- "isSubCollection": true
- },
- "learningMode": "manual",
- "dataGuardReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/data-guard?ver=12.1.2"
- },
- "stagingSettings": {
- "signatureStaging": true,
- "placeSignaturesInStaging": false,
- "enforcementReadinessPeriod": 7
- },
- "createdDatetime": "2017-09-21T11:52:24Z",
- "geolocationEnforcementReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/geolocation-enforcement?ver=12.1.2"
- },
- "versionLastChange": "Allowed Response Code 503 [add]: Response Code was set to 503.",
- "name": "fake_policy",
- "caseInsensitive": false,
- "loginPageReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/login-pages?ver=12.1.2",
- "isSubCollection": true
- },
- "fullPath": "/Common/fake_policy",
- "description": "",
- "attributes": {
- "pathParameterHandling": "as-parameters",
- "triggerAsmIruleEvent": "disabled",
- "inspectHttpUploads": false,
- "maskCreditCardNumbersInRequest": true,
- "maximumHttpHeaderLength": "8192",
- "useDynamicSessionIdInUrl": false,
- "maximumCookieHeaderLength": "8192"
- },
- "partition": "Common",
- "webScrapingReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/web-scraping?ver=12.1.2"
- },
- "csrfProtectionReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/csrf-protection?ver=12.1.2"
- },
- "customXffHeaders": [],
- "kind": "tm:asm:policies:policystate",
- "virtualServers": [],
- "ipIntelligenceReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/ip-intelligence?ver=12.1.2"
- },
- "protocolIndependent": false,
- "sessionAwarenessSettingsReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/session-tracking?ver=12.1.2"
- },
- "signatureSetReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/signature-sets?ver=12.1.2",
- "isSubCollection": true
- },
- "parameterReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/parameters?ver=12.1.2",
- "isSubCollection": true
- },
- "allowedResponseCodes": [
- 400,
- 401,
- 404,
- 407,
- 417,
- 503
- ],
- "applicationLanguage": "utf-8",
- "enforcementMode": "transparent",
- "loginEnforcementReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/login-enforcement?ver=12.1.2"
- },
- "navigationParameterReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/navigation-parameters?ver=12.1.2",
- "isSubCollection": true
- },
- "gwtProfileReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/gwt-profiles?ver=12.1.2",
- "isSubCollection": true
- },
- "whitelistIpReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/whitelist-ips?ver=12.1.2",
- "isSubCollection": true
- },
- "historyRevisionReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/history-revisions?ver=12.1.2",
- "isSubCollection": true
- },
- "policyBuilderReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/policy-builder?ver=12.1.2"
- },
- "responsePageReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/response-pages?ver=12.1.2",
- "isSubCollection": true
- },
- "vulnerabilityAssessmentReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/vulnerability-assessment?ver=12.1.2"
- },
- "blockingSettingReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/blocking-settings?ver=12.1.2",
- "isSubCollection": true
- },
- "cookieReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/cookies?ver=12.1.2",
- "isSubCollection": true
- },
- "hostNameReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/host-names?ver=12.1.2",
- "isSubCollection": true
- },
- "versionDeviceName": "ltm4restlab.lab.local",
- "selfLink": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw?ver=12.1.2",
- "signatureReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/signatures?ver=12.1.2",
- "isSubCollection": true
- },
- "filetypeReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/filetypes?ver=12.1.2",
- "isSubCollection": true
- },
- "id": "0EHlYeS5noAOZLY3YsJjEw",
- "manualVirtualServers": [],
- "modifierName": "admin",
- "versionDatetime": "2017-04-11T08:05:22Z",
- "subPath": "/Common",
- "sessionTrackingStatusReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/session-tracking-statuses?ver=12.1.2",
- "isSubCollection": true
- },
- "active": true,
- "auditLogReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/audit-logs?ver=12.1.2",
- "isSubCollection": true
- },
- "trustXff": false,
- "websocketUrlReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/websocket-urls?ver=12.1.2",
- "isSubCollection": true
- },
- "xmlProfileReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/xml-profiles?ver=12.1.2",
- "isSubCollection": true
- },
- "methodReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/methods?ver=12.1.2",
- "isSubCollection": true
- },
- "redirectionProtectionReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/redirection-protection?ver=12.1.2"
- },
- "vulnerabilityReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/vulnerabilities?ver=12.1.2",
- "isSubCollection": true
- },
- "creatorName": "SYSTEM",
- "urlReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/urls?ver=12.1.2",
- "isSubCollection": true
- },
- "headerReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/headers?ver=12.1.2",
- "isSubCollection": true
- },
- "xmlValidationFileReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/xml-validation-files?ver=12.1.2",
- "isSubCollection": true
- },
- "lastUpdateMicros": 1.506250903e+15,
- "jsonProfileReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/json-profiles?ver=12.1.2",
- "isSubCollection": true
- },
- "bruteForceAttackPreventionReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/brute-force-attack-preventions?ver=12.1.2",
- "isSubCollection": true
- },
- "extractionReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/extractions?ver=12.1.2",
- "isSubCollection": true
- },
- "characterSetReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/character-sets?ver=12.1.2",
- "isSubCollection": true
- },
- "isModified": false,
- "suggestionReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/suggestions?ver=12.1.2",
- "isSubCollection": true
- },
- "sensitiveParameterReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/sensitive-parameters?ver=12.1.2",
- "isSubCollection": true
- },
- "versionPolicyName": "/Common/fake_policy"
-}
diff --git a/test/units/modules/network/f5/fixtures/load_asm_policy_inactive.json b/test/units/modules/network/f5/fixtures/load_asm_policy_inactive.json
deleted file mode 100644
index 5198888142..0000000000
--- a/test/units/modules/network/f5/fixtures/load_asm_policy_inactive.json
+++ /dev/null
@@ -1,197 +0,0 @@
-{
- "plainTextProfileReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/plain-text-profiles?ver=12.1.2",
- "isSubCollection": true
- },
- "learningMode": "manual",
- "dataGuardReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/data-guard?ver=12.1.2"
- },
- "stagingSettings": {
- "signatureStaging": true,
- "placeSignaturesInStaging": false,
- "enforcementReadinessPeriod": 7
- },
- "createdDatetime": "2017-09-21T11:52:24Z",
- "geolocationEnforcementReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/geolocation-enforcement?ver=12.1.2"
- },
- "versionLastChange": "Allowed Response Code 503 [add]: Response Code was set to 503.",
- "name": "fake_policy",
- "caseInsensitive": false,
- "loginPageReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/login-pages?ver=12.1.2",
- "isSubCollection": true
- },
- "fullPath": "/Common/fake_policy",
- "description": "",
- "attributes": {
- "pathParameterHandling": "as-parameters",
- "triggerAsmIruleEvent": "disabled",
- "inspectHttpUploads": false,
- "maskCreditCardNumbersInRequest": true,
- "maximumHttpHeaderLength": "8192",
- "useDynamicSessionIdInUrl": false,
- "maximumCookieHeaderLength": "8192"
- },
- "partition": "Common",
- "webScrapingReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/web-scraping?ver=12.1.2"
- },
- "csrfProtectionReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/csrf-protection?ver=12.1.2"
- },
- "customXffHeaders": [],
- "kind": "tm:asm:policies:policystate",
- "virtualServers": [],
- "ipIntelligenceReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/ip-intelligence?ver=12.1.2"
- },
- "protocolIndependent": false,
- "sessionAwarenessSettingsReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/session-tracking?ver=12.1.2"
- },
- "signatureSetReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/signature-sets?ver=12.1.2",
- "isSubCollection": true
- },
- "parameterReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/parameters?ver=12.1.2",
- "isSubCollection": true
- },
- "allowedResponseCodes": [
- 400,
- 401,
- 404,
- 407,
- 417,
- 503
- ],
- "applicationLanguage": "utf-8",
- "enforcementMode": "transparent",
- "loginEnforcementReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/login-enforcement?ver=12.1.2"
- },
- "navigationParameterReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/navigation-parameters?ver=12.1.2",
- "isSubCollection": true
- },
- "gwtProfileReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/gwt-profiles?ver=12.1.2",
- "isSubCollection": true
- },
- "whitelistIpReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/whitelist-ips?ver=12.1.2",
- "isSubCollection": true
- },
- "historyRevisionReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/history-revisions?ver=12.1.2",
- "isSubCollection": true
- },
- "policyBuilderReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/policy-builder?ver=12.1.2"
- },
- "responsePageReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/response-pages?ver=12.1.2",
- "isSubCollection": true
- },
- "vulnerabilityAssessmentReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/vulnerability-assessment?ver=12.1.2"
- },
- "blockingSettingReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/blocking-settings?ver=12.1.2",
- "isSubCollection": true
- },
- "cookieReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/cookies?ver=12.1.2",
- "isSubCollection": true
- },
- "hostNameReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/host-names?ver=12.1.2",
- "isSubCollection": true
- },
- "versionDeviceName": "ltm4restlab.lab.local",
- "selfLink": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw?ver=12.1.2",
- "signatureReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/signatures?ver=12.1.2",
- "isSubCollection": true
- },
- "filetypeReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/filetypes?ver=12.1.2",
- "isSubCollection": true
- },
- "id": "0EHlYeS5noAOZLY3YsJjEw",
- "manualVirtualServers": [],
- "modifierName": "",
- "versionDatetime": "2017-04-11T08:05:22Z",
- "subPath": "/Common",
- "sessionTrackingStatusReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/session-tracking-statuses?ver=12.1.2",
- "isSubCollection": true
- },
- "active": false,
- "auditLogReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/audit-logs?ver=12.1.2",
- "isSubCollection": true
- },
- "trustXff": false,
- "websocketUrlReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/websocket-urls?ver=12.1.2",
- "isSubCollection": true
- },
- "xmlProfileReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/xml-profiles?ver=12.1.2",
- "isSubCollection": true
- },
- "methodReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/methods?ver=12.1.2",
- "isSubCollection": true
- },
- "redirectionProtectionReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/redirection-protection?ver=12.1.2"
- },
- "vulnerabilityReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/vulnerabilities?ver=12.1.2",
- "isSubCollection": true
- },
- "creatorName": "SYSTEM",
- "urlReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/urls?ver=12.1.2",
- "isSubCollection": true
- },
- "headerReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/headers?ver=12.1.2",
- "isSubCollection": true
- },
- "xmlValidationFileReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/xml-validation-files?ver=12.1.2",
- "isSubCollection": true
- },
- "lastUpdateMicros": 0,
- "jsonProfileReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/json-profiles?ver=12.1.2",
- "isSubCollection": true
- },
- "bruteForceAttackPreventionReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/brute-force-attack-preventions?ver=12.1.2",
- "isSubCollection": true
- },
- "extractionReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/extractions?ver=12.1.2",
- "isSubCollection": true
- },
- "characterSetReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/character-sets?ver=12.1.2",
- "isSubCollection": true
- },
- "isModified": false,
- "suggestionReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/suggestions?ver=12.1.2",
- "isSubCollection": true
- },
- "sensitiveParameterReference": {
- "link": "https://localhost/mgmt/tm/asm/policies/0EHlYeS5noAOZLY3YsJjEw/sensitive-parameters?ver=12.1.2",
- "isSubCollection": true
- },
- "versionPolicyName": "/Common/fake_policy"
-}
diff --git a/test/units/modules/network/f5/fixtures/load_auth_remote_role_role_info_1.json b/test/units/modules/network/f5/fixtures/load_auth_remote_role_role_info_1.json
deleted file mode 100644
index b4d6038ef8..0000000000
--- a/test/units/modules/network/f5/fixtures/load_auth_remote_role_role_info_1.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "kind": "tm:auth:remote-role:role-info:role-infostate",
- "name": "/Common/ldap_group",
- "fullPath": "/Common/ldap_group",
- "generation": 0,
- "selfLink": "https://localhost/mgmt/tm/auth/remote-role/role-info/~Common~ldap_group?ver=13.1.0.7",
- "attribute": "memberOf=cn=ldap_group,cn=ldap.group,ou=ldap",
- "console": "disable",
- "deny": "enabled",
- "lineOrder": 1,
- "role": "firewallmanager",
- "userPartition": "All",
- "userPartitionReference": {
- "link": "https://localhost/mgmt/tm/auth/partition/All?ver=13.1.0.7"
- }
-}
diff --git a/test/units/modules/network/f5/fixtures/load_auth_user_no_pass.json b/test/units/modules/network/f5/fixtures/load_auth_user_no_pass.json
deleted file mode 100644
index 79a51a79dd..0000000000
--- a/test/units/modules/network/f5/fixtures/load_auth_user_no_pass.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "kind": "tm:auth:user:userstate",
- "name": "someuser",
- "fullPath": "someuser",
- "generation": 76,
- "selfLink": "https://localhost/mgmt/tm/auth/user/someuser?ver=13.0.0",
- "description": "someuser",
- "encryptedPassword": "!!",
- "partitionAccess": [
- {
- "name": "Common",
- "role": "guest",
- "nameReference": {
- "link": "https://localhost/mgmt/tm/auth/partition/Common?ver=13.0.0"
- }
- }
- ]
-}
diff --git a/test/units/modules/network/f5/fixtures/load_auth_user_with_pass.json b/test/units/modules/network/f5/fixtures/load_auth_user_with_pass.json
deleted file mode 100644
index 8c8256c2ea..0000000000
--- a/test/units/modules/network/f5/fixtures/load_auth_user_with_pass.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "kind": "tm:auth:user:userstate",
- "name": "someuser",
- "fullPath": "someuser",
- "generation": 1,
- "selfLink": "https://localhost/mgmt/tm/auth/user/someuser?ver=13.0.0",
- "description": "someuser",
- "encryptedPassword": "$6$PiA0g2.L$M02nqo3eVvj22PbEUONdzFQq4tXp930FsBB0sZ94OJTDruobY/BhyEN1rHfw2udVKKlGtom1rNiCP/3nIVfde1",
- "shell": "bash",
- "partitionAccess": [
- {
- "name": "all-partitions",
- "role": "admin",
- "nameReference": {
- "link": "https://localhost/mgmt/tm/auth/partition/all-partitions?ver=13.0.0"
- }
- }
- ]
-}
diff --git a/test/units/modules/network/f5/fixtures/load_generic_parser.json b/test/units/modules/network/f5/fixtures/load_generic_parser.json
deleted file mode 100644
index c7bdc5fba9..0000000000
--- a/test/units/modules/network/f5/fixtures/load_generic_parser.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "kind": "tm:ltm:message-routing:generic:protocol:protocolstate",
- "name": "foobar",
- "partition": "Common",
- "fullPath": "/Common/foobar",
- "generation": 534,
- "selfLink": "https://localhost/mgmt/tm/ltm/message-routing/generic/protocol/~Common~foobar?ver=14.1.0.3",
- "defaultsFrom": "/Common/genericmsg",
- "defaultsFromReference": {
- "link": "https://localhost/mgmt/tm/ltm/message-routing/generic/protocol/~Common~genericmsg?ver=14.1.0.3"
- },
- "disableParser": "no",
- "maxEgressBuffer": 32768,
- "maxMessageSize": 32768,
- "noResponse": "no"
-}
diff --git a/test/units/modules/network/f5/fixtures/load_generic_peer.json b/test/units/modules/network/f5/fixtures/load_generic_peer.json
deleted file mode 100644
index bda5b8e587..0000000000
--- a/test/units/modules/network/f5/fixtures/load_generic_peer.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "kind": "tm:ltm:message-routing:generic:peer:peerstate",
- "name": "test",
- "partition": "Common",
- "fullPath": "/Common/test",
- "generation": 177,
- "selfLink": "https://localhost/mgmt/tm/ltm/message-routing/generic/peer/~Common~test?ver=14.1.0.3",
- "autoInitialization": "disabled",
- "autoInitializationInterval": 5000,
- "connectionMode": "per-peer",
- "description": "foobar",
- "numberConnections": 1,
- "pool": "/Common/example",
- "poolReference": {
- "link": "https://localhost/mgmt/tm/ltm/pool/~Common~example?ver=14.1.0.3"
- },
- "ratio": 1,
- "transportConfig": "/Common/test_tranport",
- "transportConfigReference": {
- "link": "https://localhost/mgmt/tm/ltm/message-routing/generic/transport-config/~Common~test_tranport?ver=14.1.0.3"
- }
-}
diff --git a/test/units/modules/network/f5/fixtures/load_generic_route.json b/test/units/modules/network/f5/fixtures/load_generic_route.json
deleted file mode 100644
index f8299f0294..0000000000
--- a/test/units/modules/network/f5/fixtures/load_generic_route.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "kind": "tm:ltm:message-routing:generic:route:routestate",
- "name": "some",
- "partition": "Common",
- "fullPath": "/Common/some",
- "generation": 228,
- "selfLink": "https://localhost/mgmt/tm/ltm/message-routing/generic/route/~Common~some?ver=14.1.0.3",
- "destinationAddress": "annoying_user",
- "peerSelectionMode": "sequential",
- "sourceAddress": "99.99.99.99",
- "peers": [
- "/Common/testy"
- ],
- "peersReference": [
- {
- "link": "https://localhost/mgmt/tm/ltm/message-routing/generic/peer/~Common~testy?ver=14.1.0.3"
- }
- ]
- }
diff --git a/test/units/modules/network/f5/fixtures/load_generic_router.json b/test/units/modules/network/f5/fixtures/load_generic_router.json
deleted file mode 100644
index 45c6722244..0000000000
--- a/test/units/modules/network/f5/fixtures/load_generic_router.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "kind": "tm:ltm:message-routing:generic:router:routerstate",
- "name": "messagerouter",
- "partition": "Common",
- "fullPath": "/Common/messagerouter",
- "generation": 1,
- "selfLink": "https://localhost/mgmt/tm/ltm/message-routing/generic/router/~Common~messagerouter?ver=14.1.0.3",
- "ignoreClientPort": "no",
- "inheritedTrafficGroup": "true",
- "iruleScopeMessage": "no",
- "maxPayloadPendingBytes": 32768,
- "maxPendingBytes": 23768,
- "maxPendingMessages": 64,
- "maxRetries": 1,
- "mirror": "disabled",
- "mirroredMessageSweeperInterval": 1000,
- "trafficGroup": "/Common/traffic-group-1",
- "trafficGroupReference": {
- "link": "https://localhost/mgmt/tm/cm/traffic-group/~Common~traffic-group-1?ver=14.1.0.3"
- },
- "useLocalConnection": "yes"
-}
diff --git a/test/units/modules/network/f5/fixtures/load_generic_transport_config.json b/test/units/modules/network/f5/fixtures/load_generic_transport_config.json
deleted file mode 100644
index 15121910cc..0000000000
--- a/test/units/modules/network/f5/fixtures/load_generic_transport_config.json
+++ /dev/null
@@ -1,53 +0,0 @@
-{
- "kind": "tm:ltm:message-routing:generic:transport-config:transport-configstate",
- "name": "gen1",
- "partition": "Common",
- "fullPath": "/Common/gen1",
- "generation": 643,
- "selfLink": "https://localhost/mgmt/tm/ltm/message-routing/generic/transport-config/~Common~gen1?expandSubcollections=true&ver=14.1.0.3",
- "ipProtocol": "tcp",
- "sourceAddressTranslation": {
- "pool": "/Common/test_snat",
- "poolReference": {
- "link": "https://localhost/mgmt/tm/ltm/snatpool/~Common~test_snat?ver=14.1.0.3"
- },
- "type": "snat"
- },
- "sourcePort": 0,
- "rules": [
- "/Common/test"
- ],
- "rulesReference": [
- {
- "link": "https://localhost/mgmt/tm/ltm/rule/~Common~test?ver=14.1.0.3"
- }
- ],
- "profilesReference": {
- "link": "https://localhost/mgmt/tm/ltm/message-routing/generic/transport-config/~Common~gen1/profiles?ver=14.1.0.3",
- "isSubcollection": true,
- "items": [
- {
- "kind": "tm:ltm:message-routing:generic:transport-config:profiles:profilesstate",
- "name": "diametersession",
- "partition": "Common",
- "fullPath": "/Common/diametersession",
- "generation": 626,
- "selfLink": "https://localhost/mgmt/tm/ltm/message-routing/generic/transport-config/~Common~gen1/profiles/~Common~diametersession?ver=14.1.0.3",
- "nameReference": {
- "link": "https://localhost/mgmt/tm/ltm/message-routing/diameter/profile/session/~Common~diametersession?ver=14.1.0.3"
- }
- },
- {
- "kind": "tm:ltm:message-routing:generic:transport-config:profiles:profilesstate",
- "name": "tcp",
- "partition": "Common",
- "fullPath": "/Common/tcp",
- "generation": 626,
- "selfLink": "https://localhost/mgmt/tm/ltm/message-routing/generic/transport-config/~Common~gen1/profiles/~Common~tcp?ver=14.1.0.3",
- "nameReference": {
- "link": "https://localhost/mgmt/tm/ltm/profile/tcp/~Common~tcp?ver=14.1.0.3"
- }
- }
- ]
- }
-}
diff --git a/test/units/modules/network/f5/fixtures/load_gtm_datacenter_default.json b/test/units/modules/network/f5/fixtures/load_gtm_datacenter_default.json
deleted file mode 100644
index 9e1f3b8d03..0000000000
--- a/test/units/modules/network/f5/fixtures/load_gtm_datacenter_default.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "kind": "tm:gtm:datacenter:datacenterstate",
- "name": "asd",
- "partition": "Common",
- "fullPath": "/Common/asd",
- "generation": 278,
- "selfLink": "https://localhost/mgmt/tm/gtm/datacenter/~Common~asd?ver=12.1.2",
- "enabled": true
-}
diff --git a/test/units/modules/network/f5/fixtures/load_gtm_datacenter_disabled.json b/test/units/modules/network/f5/fixtures/load_gtm_datacenter_disabled.json
deleted file mode 100644
index 8373ac8239..0000000000
--- a/test/units/modules/network/f5/fixtures/load_gtm_datacenter_disabled.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "kind": "tm:gtm:datacenter:datacenterstate",
- "name": "foo",
- "partition": "Common",
- "fullPath": "/Common/foo",
- "generation": 303,
- "selfLink": "https://localhost/mgmt/tm/gtm/datacenter/~Common~foo?ver=12.1.2",
- "contact": "admin@root.local",
- "description": "This is a foo description",
- "disabled": true,
- "location": "New York"
-}
diff --git a/test/units/modules/network/f5/fixtures/load_gtm_global_settings_general_1.json b/test/units/modules/network/f5/fixtures/load_gtm_global_settings_general_1.json
deleted file mode 100644
index 6803287627..0000000000
--- a/test/units/modules/network/f5/fixtures/load_gtm_global_settings_general_1.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "kind": "tm:gtm:global-settings:general:generalstate",
- "selfLink": "https://localhost/mgmt/tm/gtm/global-settings/general?ver=13.1.0.4",
- "autoDiscovery": "yes",
- "autoDiscoveryInterval": 30,
- "automaticConfigurationSaveTimeout": 15,
- "cacheLdnsServers": "yes",
- "domainNameCheck": "allow-underscore",
- "drainPersistentRequests": "yes",
- "forwardStatus": "disabled",
- "gtmSetsRecursion": "no",
- "heartbeatInterval": 10,
- "monitorDisabledObjects": "no",
- "nethsmTimeout": 20,
- "sendWildcardRrs": "disabled",
- "staticPersistCidrIpv4": 32,
- "staticPersistCidrIpv6": 128,
- "synchronization": "no",
- "synchronizationGroupName": "default",
- "synchronizationTimeTolerance": 10,
- "synchronizationTimeout": 180,
- "synchronizeZoneFiles": "no",
- "synchronizeZoneFilesTimeout": 300,
- "virtualsDependOnServerState": "yes"
-}
diff --git a/test/units/modules/network/f5/fixtures/load_gtm_irules.json b/test/units/modules/network/f5/fixtures/load_gtm_irules.json
deleted file mode 100644
index 7ca9da1bf7..0000000000
--- a/test/units/modules/network/f5/fixtures/load_gtm_irules.json
+++ /dev/null
@@ -1,20 +0,0 @@
-[
- {
- "kind": "tm:gtm:rule:rulestate",
- "name": "asdf",
- "partition": "Common",
- "fullPath": "/Common/asdf",
- "generation": 92,
- "selfLink": "https://localhost/mgmt/tm/gtm/rule/~Common~asdf?ver=12.1.2",
- "apiAnonymous": "when DNS_REQUEST {\n if { [IP::addr [IP::remote_addr] equals 10.254.254.0/24] } {\n cname test.affilate.example.com\n\n } elseif { [IP::addr [IP::remote_addr] equals 10.0.0.0/8] } {\n cname test.internal.example.com\n\n }\n #everything else will be handled by the default pools in the main WIP\n}"
- },
- {
- "kind": "tm:gtm:rule:rulestate",
- "name": "foo",
- "partition": "Common",
- "fullPath": "/Common/foo",
- "generation": 93,
- "selfLink": "https://localhost/mgmt/tm/gtm/rule/~Common~foo?ver=12.1.2",
- "apiAnonymous": "when LB_SELECTED {\n # Capture IP address chosen by WIP load balancing\n set wipHost [LB::server addr]\n}\n\nwhen LB_FAILED {\n set wipHost [LB::server addr]\n}"
- }
- ]
diff --git a/test/units/modules/network/f5/fixtures/load_gtm_monitor_firepass_1.json b/test/units/modules/network/f5/fixtures/load_gtm_monitor_firepass_1.json
deleted file mode 100644
index 4b0f8f7205..0000000000
--- a/test/units/modules/network/f5/fixtures/load_gtm_monitor_firepass_1.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "kind": "tm:gtm:monitor:firepass:firepassstate",
- "name": "foo",
- "partition": "Common",
- "fullPath": "/Common/foo",
- "generation": 0,
- "selfLink": "https://localhost/mgmt/tm/gtm/monitor/firepass/~Common~foo?ver=13.1.0.4",
- "cipherlist": "HIGH:!ADH",
- "concurrencyLimit": 95,
- "defaultsFrom": "/Common/firepass_gtm",
- "destination": "1.1.1.1:80",
- "ignoreDownResponse": "enabled",
- "interval": 30,
- "maxLoadAverage": 12,
- "password": "secret",
- "probeTimeout": 5,
- "timeout": 90,
- "username": "gtmuser"
-}
diff --git a/test/units/modules/network/f5/fixtures/load_gtm_monitor_http_1.json b/test/units/modules/network/f5/fixtures/load_gtm_monitor_http_1.json
deleted file mode 100644
index 98151e51fe..0000000000
--- a/test/units/modules/network/f5/fixtures/load_gtm_monitor_http_1.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "kind": "tm:gtm:monitor:http:httpstate",
- "name": "foo",
- "partition": "Common",
- "fullPath": "/Common/foo",
- "generation": 0,
- "selfLink": "https://localhost/mgmt/tm/gtm/monitor/http/~Common~foo?ver=13.1.0.4",
- "defaultsFrom": "/Common/http",
- "description": "my description",
- "destination": "3.3.3.3:8080",
- "ignoreDownResponse": "disabled",
- "interval": 30,
- "password": "secret",
- "probeTimeout": 5,
- "recv": "the receive string",
- "reverse": "enabled",
- "send": "GET /",
- "timeout": 120,
- "transparent": "enabled",
- "username": "user1"
-}
diff --git a/test/units/modules/network/f5/fixtures/load_gtm_monitor_tcp_1.json b/test/units/modules/network/f5/fixtures/load_gtm_monitor_tcp_1.json
deleted file mode 100644
index d0d90152c1..0000000000
--- a/test/units/modules/network/f5/fixtures/load_gtm_monitor_tcp_1.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "kind": "tm:gtm:monitor:tcp:tcpstate",
- "name": "foo",
- "partition": "Common",
- "fullPath": "/Common/foo",
- "generation": 0,
- "selfLink": "https://localhost/mgmt/tm/gtm/monitor/tcp/~Common~foo?ver=13.1.0.4",
- "defaultsFrom": "/Common/tcp",
- "destination": "1.1.1.1:80",
- "ignoreDownResponse": "disabled",
- "interval": 30,
- "probeTimeout": 5,
- "recv": "the receive string",
- "reverse": "enabled",
- "send": "the send string",
- "timeout": 120,
- "transparent": "enabled"
-}
diff --git a/test/units/modules/network/f5/fixtures/load_gtm_pool_a_collection.json b/test/units/modules/network/f5/fixtures/load_gtm_pool_a_collection.json
deleted file mode 100644
index 7ed5344503..0000000000
--- a/test/units/modules/network/f5/fixtures/load_gtm_pool_a_collection.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
- "kind": "tm:gtm:pool:a:acollectionstate",
- "selfLink": "https://localhost/mgmt/tm/gtm/pool/a?expandSubcollections=true&ver=13.0.0",
- "items": [
- {
- "kind": "tm:gtm:pool:a:astate",
- "name": "foo.pool",
- "partition": "Common",
- "fullPath": "/Common/foo.pool",
- "generation": 216,
- "selfLink": "https://localhost/mgmt/tm/gtm/pool/a/~Common~foo.pool?ver=13.0.0",
- "alternateMode": "round-robin",
- "dynamicRatio": "disabled",
- "enabled": true,
- "fallbackIp": "any",
- "fallbackMode": "return-to-dns",
- "limitMaxBps": 0,
- "limitMaxBpsStatus": "disabled",
- "limitMaxConnections": 0,
- "limitMaxConnectionsStatus": "disabled",
- "limitMaxPps": 0,
- "limitMaxPpsStatus": "disabled",
- "loadBalancingMode": "round-robin",
- "manualResume": "disabled",
- "maxAnswersReturned": 1,
- "monitor": "default",
- "qosHitRatio": 5,
- "qosHops": 0,
- "qosKilobytesSecond": 3,
- "qosLcs": 30,
- "qosPacketRate": 1,
- "qosRtt": 50,
- "qosTopology": 0,
- "qosVsCapacity": 0,
- "qosVsScore": 0,
- "ttl": 30,
- "verifyMemberAvailability": "enabled",
- "membersReference": {
- "link": "https://localhost/mgmt/tm/gtm/pool/a/~Common~foo.pool/members?ver=13.0.0",
- "isSubcollection": true
- }
- }
- ]
-}
diff --git a/test/units/modules/network/f5/fixtures/load_gtm_pool_a_default.json b/test/units/modules/network/f5/fixtures/load_gtm_pool_a_default.json
deleted file mode 100644
index f90a84b213..0000000000
--- a/test/units/modules/network/f5/fixtures/load_gtm_pool_a_default.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "kind": "tm:gtm:pool:a:astate",
- "name": "asdf",
- "partition": "Common",
- "fullPath": "/Common/asdf",
- "generation": 94,
- "selfLink": "https://localhost/mgmt/tm/gtm/pool/a/~Common~asdf?ver=12.1.2",
- "alternateMode": "round-robin",
- "dynamicRatio": "disabled",
- "enabled": true,
- "fallbackIp": "any",
- "fallbackMode": "return-to-dns",
- "limitMaxBps": 0,
- "limitMaxBpsStatus": "disabled",
- "limitMaxConnections": 0,
- "limitMaxConnectionsStatus": "disabled",
- "limitMaxPps": 0,
- "limitMaxPpsStatus": "disabled",
- "loadBalancingMode": "round-robin",
- "manualResume": "disabled",
- "maxAnswersReturned": 1,
- "monitor": "default",
- "qosHitRatio": 5,
- "qosHops": 0,
- "qosKilobytesSecond": 3,
- "qosLcs": 30,
- "qosPacketRate": 1,
- "qosRtt": 50,
- "qosTopology": 0,
- "qosVsCapacity": 0,
- "qosVsScore": 0,
- "ttl": 30,
- "verifyMemberAvailability": "enabled",
- "membersReference": {
- "link": "https://localhost/mgmt/tm/gtm/pool/a/~Common~asdf/members?ver=12.1.2",
- "isSubcollection": true
- }
-}
diff --git a/test/units/modules/network/f5/fixtures/load_gtm_pool_a_example_stats.json b/test/units/modules/network/f5/fixtures/load_gtm_pool_a_example_stats.json
deleted file mode 100644
index 70388c9144..0000000000
--- a/test/units/modules/network/f5/fixtures/load_gtm_pool_a_example_stats.json
+++ /dev/null
@@ -1,48 +0,0 @@
-{
- "kind": "tm:gtm:pool:a:astats",
- "generation": 216,
- "selfLink": "https://localhost/mgmt/tm/gtm/pool/a/~Common~foo.pool/stats?ver=13.0.0",
- "entries": {
- "https://localhost/mgmt/tm/gtm/pool/a/~Common~foo.pool/~Common~foo.pool:A/stats": {
- "nestedStats": {
- "kind": "tm:gtm:pool:a:astats",
- "selfLink": "https://localhost/mgmt/tm/gtm/pool/a/~Common~foo.pool/~Common~foo.pool:A/stats?ver=13.0.0",
- "entries": {
- "alternate": {
- "value": 0
- },
- "dropped": {
- "value": 0
- },
- "fallback": {
- "value": 0
- },
- "tmName": {
- "description": "/Common/foo.pool"
- },
- "poolType": {
- "description": "A"
- },
- "preferred": {
- "value": 0
- },
- "returnFromDns": {
- "value": 0
- },
- "returnToDns": {
- "value": 0
- },
- "status.availabilityState": {
- "description": "offline"
- },
- "status.enabledState": {
- "description": "enabled"
- },
- "status.statusReason": {
- "description": "No enabled pool members available"
- }
- }
- }
- }
- }
-}
diff --git a/test/units/modules/network/f5/fixtures/load_gtm_pool_a_member_1.json b/test/units/modules/network/f5/fixtures/load_gtm_pool_a_member_1.json
deleted file mode 100644
index 44ae64a665..0000000000
--- a/test/units/modules/network/f5/fixtures/load_gtm_pool_a_member_1.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "kind": "tm:gtm:pool:a:members:membersstate",
- "name": "foo_gtm_server:bar",
- "partition": "Common",
- "fullPath": "/Common/foo_gtm_server:bar",
- "generation": 398,
- "selfLink": "https://localhost/mgmt/tm/gtm/pool/a/~Common~foo-pool/members/~Common~foo_gtm_server:bar?ver=13.0.0",
- "enabled": true,
- "limitMaxBps": 0,
- "limitMaxBpsStatus": "disabled",
- "limitMaxConnections": 0,
- "limitMaxConnectionsStatus": "disabled",
- "limitMaxPps": 0,
- "limitMaxPpsStatus": "disabled",
- "memberOrder": 1,
- "monitor": "default",
- "ratio": 1
-}
diff --git a/test/units/modules/network/f5/fixtures/load_gtm_pool_a_with_members_1.json b/test/units/modules/network/f5/fixtures/load_gtm_pool_a_with_members_1.json
deleted file mode 100644
index ba2ac716f0..0000000000
--- a/test/units/modules/network/f5/fixtures/load_gtm_pool_a_with_members_1.json
+++ /dev/null
@@ -1,94 +0,0 @@
-{
- "kind": "tm:gtm:pool:a:astate",
- "name": "foo",
- "partition": "Common",
- "fullPath": "/Common/foo",
- "generation": 142,
- "selfLink": "https://localhost/mgmt/tm/gtm/pool/a/~Common~foo?expandSubcollections=true&ver=12.0.0",
- "alternateMode": "round-robin",
- "dynamicRatio": "disabled",
- "enabled": true,
- "fallbackIp": "any",
- "fallbackMode": "return-to-dns",
- "limitMaxBps": 0,
- "limitMaxBpsStatus": "disabled",
- "limitMaxConnections": 0,
- "limitMaxConnectionsStatus": "disabled",
- "limitMaxPps": 0,
- "limitMaxPpsStatus": "disabled",
- "loadBalancingMode": "round-robin",
- "manualResume": "disabled",
- "maxAnswersReturned": 1,
- "monitor": "default",
- "qosHitRatio": 5,
- "qosHops": 0,
- "qosKilobytesSecond": 3,
- "qosLcs": 30,
- "qosPacketRate": 1,
- "qosRtt": 50,
- "qosTopology": 0,
- "qosVsCapacity": 0,
- "qosVsScore": 0,
- "ttl": 30,
- "verifyMemberAvailability": "enabled",
- "membersReference": {
- "link": "https://localhost/mgmt/tm/gtm/pool/a/~Common~foo/members?ver=12.0.0",
- "isSubcollection": true,
- "items": [
- {
- "kind": "tm:gtm:pool:a:members:membersstate",
- "name": "server1:vs1",
- "partition": "Common",
- "fullPath": "/Common/server1:vs1",
- "generation": 141,
- "selfLink": "https://localhost/mgmt/tm/gtm/pool/a/~Common~foo/members/~Common~server1:vs1?ver=12.0.0",
- "enabled": true,
- "limitMaxBps": 0,
- "limitMaxBpsStatus": "disabled",
- "limitMaxConnections": 0,
- "limitMaxConnectionsStatus": "disabled",
- "limitMaxPps": 0,
- "limitMaxPpsStatus": "disabled",
- "memberOrder": 0,
- "monitor": "default",
- "ratio": 1
- },
- {
- "kind": "tm:gtm:pool:a:members:membersstate",
- "name": "server1:vs2",
- "partition": "Common",
- "fullPath": "/Common/server1:vs2",
- "generation": 142,
- "selfLink": "https://localhost/mgmt/tm/gtm/pool/a/~Common~foo/members/~Common~server1:vs1?ver=12.0.0",
- "enabled": true,
- "limitMaxBps": 0,
- "limitMaxBpsStatus": "disabled",
- "limitMaxConnections": 0,
- "limitMaxConnectionsStatus": "disabled",
- "limitMaxPps": 0,
- "limitMaxPpsStatus": "disabled",
- "memberOrder": 1,
- "monitor": "/Common/tcp ",
- "ratio": 1
- },
- {
- "kind": "tm:gtm:pool:a:members:membersstate",
- "name": "server1:vs3",
- "partition": "Common",
- "fullPath": "/Common/server1:vs3",
- "generation": 141,
- "selfLink": "https://localhost/mgmt/tm/gtm/pool/a/~Common~foo/members/~Common~server1:vs3?ver=12.0.0",
- "enabled": true,
- "limitMaxBps": 0,
- "limitMaxBpsStatus": "disabled",
- "limitMaxConnections": 0,
- "limitMaxConnectionsStatus": "disabled",
- "limitMaxPps": 0,
- "limitMaxPpsStatus": "disabled",
- "memberOrder": 2,
- "monitor": "default",
- "ratio": 1
- }
- ]
- }
-}
diff --git a/test/units/modules/network/f5/fixtures/load_gtm_pool_untyped_default.json b/test/units/modules/network/f5/fixtures/load_gtm_pool_untyped_default.json
deleted file mode 100644
index c4ecb1dd13..0000000000
--- a/test/units/modules/network/f5/fixtures/load_gtm_pool_untyped_default.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- "kind": "tm:gtm:pool:poolstate",
- "name": "asdf",
- "partition": "Common",
- "fullPath": "/Common/asdf",
- "generation": 92,
- "selfLink": "https://localhost/mgmt/tm/gtm/pool/~Common~asdf?ver=11.6.1",
- "alternateMode": "round-robin",
- "dynamicRatio": "disabled",
- "enabled": true,
- "fallbackIpv4": "any",
- "fallbackIpv6": "any6",
- "fallbackMode": "return-to-dns",
- "limitMaxBps": 0,
- "limitMaxBpsStatus": "disabled",
- "limitMaxConnections": 0,
- "limitMaxConnectionsStatus": "disabled",
- "limitMaxPps": 0,
- "limitMaxPpsStatus": "disabled",
- "loadBalancingMode": "round-robin",
- "manualResume": "disabled",
- "maxAddressReturned": 1,
- "monitor": "default",
- "qosHitRatio": 5,
- "qosHops": 0,
- "qosKilobytesSecond": 3,
- "qosLcs": 30,
- "qosPacketRate": 1,
- "qosRtt": 50,
- "qosTopology": 0,
- "qosVsCapacity": 0,
- "qosVsScore": 0,
- "ttl": 30,
- "verifyMemberAvailability": "enabled",
- "membersReference": {
- "link": "https://localhost/mgmt/tm/gtm/pool/~Common~asdf/members?ver=11.6.1",
- "isSubcollection": true
- }
-}
diff --git a/test/units/modules/network/f5/fixtures/load_gtm_server_1.json b/test/units/modules/network/f5/fixtures/load_gtm_server_1.json
deleted file mode 100644
index 4a14d9f27e..0000000000
--- a/test/units/modules/network/f5/fixtures/load_gtm_server_1.json
+++ /dev/null
@@ -1,68 +0,0 @@
-{
- "kind": "tm:gtm:server:serverstate",
- "name": "baz",
- "partition": "Common",
- "fullPath": "/Common/baz",
- "generation": 270,
- "selfLink": "https://localhost/mgmt/tm/gtm/server/~Common~baz?ver=13.0.0",
- "datacenter": "/Common/foo",
- "datacenterReference": {
- "link": "https://localhost/mgmt/tm/gtm/datacenter/~Common~foo?ver=13.0.0"
- },
- "enabled": true,
- "exposeRouteDomains": "no",
- "iqAllowPath": "yes",
- "iqAllowServiceCheck": "yes",
- "iqAllowSnmp": "yes",
- "limitCpuUsage": 0,
- "limitCpuUsageStatus": "disabled",
- "limitMaxBps": 0,
- "limitMaxBpsStatus": "disabled",
- "limitMaxConnections": 0,
- "limitMaxConnectionsStatus": "disabled",
- "limitMaxPps": 0,
- "limitMaxPpsStatus": "disabled",
- "limitMemAvail": 0,
- "limitMemAvailStatus": "disabled",
- "linkDiscovery": "disabled",
- "monitor": "/Common/bigip ",
- "proberFallback": "inherit",
- "proberPreference": "inherit",
- "product": "bigip",
- "virtualServerDiscovery": "disabled",
- "addresses": [
- {
- "name": "1.1.1.1",
- "deviceName": "bigip1",
- "translation": "10.10.10.10"
- },
- {
- "name": "2.2.2.2",
- "deviceName": "bigip2",
- "translation": "20.20.20.20"
- },
- {
- "name": "3.3.3.3",
- "deviceName": "bigip2",
- "translation": "20.20.20.20"
- },
- {
- "name": "4.4.4.4",
- "deviceName": "bigip3",
- "translation": "none"
- },
- {
- "name": "5.5.5.5",
- "deviceName": "bigip3",
- "translation": "none"
- }
- ],
- "devicesReference": {
- "link": "https://localhost/mgmt/tm/gtm/server/~Common~baz/devices?ver=13.0.0",
- "isSubcollection": true
- },
- "virtualServersReference": {
- "link": "https://localhost/mgmt/tm/gtm/server/~Common~baz/virtual-servers?ver=13.0.0",
- "isSubcollection": true
- }
-}
diff --git a/test/units/modules/network/f5/fixtures/load_gtm_server_virtual_2.json b/test/units/modules/network/f5/fixtures/load_gtm_server_virtual_2.json
deleted file mode 100644
index 336c391b1b..0000000000
--- a/test/units/modules/network/f5/fixtures/load_gtm_server_virtual_2.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "kind": "tm:gtm:server:virtual-servers:virtual-serversstate",
- "name": "vs2",
- "fullPath": "vs2",
- "generation": 129,
- "selfLink": "https://localhost/mgmt/tm/gtm/server/~Common~server1/virtual-servers/vs2?ver=13.0.0",
- "destination": "6.6.6.6:8080",
- "enabled": true,
- "limitMaxBps": 100,
- "limitMaxBpsStatus": "enabled",
- "limitMaxConnections": 300,
- "limitMaxConnectionsStatus": "enabled",
- "limitMaxPps": 200,
- "limitMaxPpsStatus": "enabled",
- "monitor": "/Common/gtp ",
- "translationAddress": "none",
- "translationPort": 0
-}
diff --git a/test/units/modules/network/f5/fixtures/load_gtm_wide_ip_with_pools.json b/test/units/modules/network/f5/fixtures/load_gtm_wide_ip_with_pools.json
deleted file mode 100644
index a7be079cdd..0000000000
--- a/test/units/modules/network/f5/fixtures/load_gtm_wide_ip_with_pools.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "kind": "tm:gtm:wideip:a:astate",
- "name": "foo.bar.com",
- "partition": "Common",
- "fullPath": "/Common/foo.bar.com",
- "generation": 135,
- "selfLink": "https://localhost/mgmt/tm/gtm/wideip/a/~Common~foo.bar.com?ver=13.0.0",
- "enabled": true,
- "failureRcode": "noerror",
- "failureRcodeResponse": "disabled",
- "failureRcodeTtl": 0,
- "lastResortPool": "",
- "minimalResponse": "enabled",
- "persistCidrIpv4": 32,
- "persistCidrIpv6": 128,
- "persistence": "disabled",
- "poolLbMode": "round-robin",
- "ttlPersistence": 3600,
- "pools": [
- {
- "name": "baz",
- "partition": "Common",
- "order": 0,
- "ratio": 10,
- "nameReference": {
- "link": "https://localhost/mgmt/tm/gtm/pool/a/~Common~baz?ver=13.0.0"
- }
- }
- ]
-}
diff --git a/test/units/modules/network/f5/fixtures/load_imish_output_1.json b/test/units/modules/network/f5/fixtures/load_imish_output_1.json
deleted file mode 100644
index a2b72a2a7a..0000000000
--- a/test/units/modules/network/f5/fixtures/load_imish_output_1.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "kind": "tm:util:bash:runstate",
- "command": "run",
- "utilCmdArgs": "-c 'imish -r 0 -e \"show running-config\"'",
- "commandResult": "!\nno service password-encryption\n!\nline con 0\n login\nline vty 0 39\n login\n!\nend\n\n"
-}
diff --git a/test/units/modules/network/f5/fixtures/load_ltm_dns_cache_resolver_1.json b/test/units/modules/network/f5/fixtures/load_ltm_dns_cache_resolver_1.json
deleted file mode 100644
index 5a0e9b75c4..0000000000
--- a/test/units/modules/network/f5/fixtures/load_ltm_dns_cache_resolver_1.json
+++ /dev/null
@@ -1,43 +0,0 @@
-{
- "kind": "tm:ltm:dns:cache:resolver:resolverstate",
- "name": "foo",
- "partition": "Common",
- "fullPath": "/Common/foo",
- "generation": 666,
- "selfLink": "https://localhost/mgmt/tm/ltm/dns/cache/resolver/~Common~foo?ver=13.1.0.7",
- "allowedQueryTime": 200,
- "answerDefaultZones": "no",
- "maxConcurrentQueries": 1024,
- "maxConcurrentTcp": 20,
- "maxConcurrentUdp": 8192,
- "msgCacheSize": 1048576,
- "nameserverCacheCount": 16536,
- "randomizeQueryNameCase": "yes",
- "routeDomain": "/Common/0",
- "routeDomainReference": {
- "link": "https://localhost/mgmt/tm/net/route-domain/~Common~0?ver=13.1.0.7"
- },
- "rrsetCacheSize": 10485760,
- "rrsetRotate": "none",
- "unwantedQueryReplyThreshold": 0,
- "useIpv4": "yes",
- "useIpv6": "yes",
- "useTcp": "yes",
- "useUdp": "yes",
- "forwardZones": [
- {
- "name": "foo1",
- "nameservers": [
- {
- "name": "1.1.1.1:53"
- },
- {
- "name": "2.2.2.2:53"
- }
- ]
- },
- {
- "name": "foo2"
- }
- ]
-}
diff --git a/test/units/modules/network/f5/fixtures/load_ltm_dns_nameserver_1.json b/test/units/modules/network/f5/fixtures/load_ltm_dns_nameserver_1.json
deleted file mode 100644
index e012103b00..0000000000
--- a/test/units/modules/network/f5/fixtures/load_ltm_dns_nameserver_1.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "kind": "tm:ltm:dns:nameserver:nameserverstate",
- "name": "foo",
- "partition": "Common",
- "fullPath": "/Common/foo",
- "generation": 8076,
- "selfLink": "https://localhost/mgmt/tm/ltm/dns/nameserver/~Common~foo?ver=13.1.0.7",
- "address": "127.0.0.1",
- "port": 53,
- "routeDomain": "/Common/0",
- "routeDomainReference": {
- "link": "https://localhost/mgmt/tm/net/route-domain/~Common~0?ver=13.1.0.7"
- },
- "tsigKey": "/Common/key1",
- "tsigKeyReference": {
- "link": "https://localhost/mgmt/tm/ltm/dns/tsig-key/~Common~key1?ver=13.1.0.7"
- }
-}
diff --git a/test/units/modules/network/f5/fixtures/load_ltm_dns_zone_1.json b/test/units/modules/network/f5/fixtures/load_ltm_dns_zone_1.json
deleted file mode 100644
index 686de99bc1..0000000000
--- a/test/units/modules/network/f5/fixtures/load_ltm_dns_zone_1.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "kind": "tm:ltm:dns:zone:zonestate",
- "name": "foo",
- "partition": "Common",
- "fullPath": "/Common/foo",
- "generation": 812,
- "selfLink": "https://localhost/mgmt/tm/ltm/dns/zone/~Common~foo?ver=13.1.0.8",
- "dnsExpressAllowNotify": [
- "1.1.1.1"
- ],
- "dnsExpressEnabled": "yes",
- "dnsExpressNotifyAction": "consume",
- "dnsExpressNotifyTsigVerify": "yes",
- "dnsExpressServer": "/Common/asd",
- "dnsExpressServerReference": {
- "link": "https://localhost/mgmt/tm/ltm/dns/nameserver/~Common~asd?ver=13.1.0.8"
- },
- "responsePolicy": "no",
- "serverTsigKey": "/Common/asd",
- "serverTsigKeyReference": {
- "link": "https://localhost/mgmt/tm/ltm/dns/tsig-key/~Common~asd?ver=13.1.0.8"
- },
- "transferClients": [
- "/Common/asd"
- ],
- "transferClientsReference": [
- {
- "link": "https://localhost/mgmt/tm/ltm/dns/nameserver/~Common~asd?ver=13.1.0.8"
- }
- ]
-}
diff --git a/test/units/modules/network/f5/fixtures/load_ltm_fastl4_profile_1.json b/test/units/modules/network/f5/fixtures/load_ltm_fastl4_profile_1.json
deleted file mode 100644
index 2667968c55..0000000000
--- a/test/units/modules/network/f5/fixtures/load_ltm_fastl4_profile_1.json
+++ /dev/null
@@ -1,56 +0,0 @@
-{
- "kind": "tm:ltm:profile:fastl4:fastl4state",
- "name": "fastL4",
- "partition": "Common",
- "fullPath": "/Common/fastL4",
- "generation": 1,
- "selfLink": "https://localhost/mgmt/tm/ltm/profile/fastl4/~Common~fastL4?ver=13.1.0.8",
- "appService": "none",
- "clientTimeout": 30,
- "defaultsFrom": "none",
- "description": "none",
- "explicitFlowMigration": "disabled",
- "hardwareSynCookie": "disabled",
- "idleTimeout": "300",
- "ipDfMode": "preserve",
- "ipTosToClient": "pass-through",
- "ipTosToServer": "pass-through",
- "ipTtlMode": "decrement",
- "ipTtlV4": 255,
- "ipTtlV6": 64,
- "keepAliveInterval": "disabled",
- "lateBinding": "disabled",
- "linkQosToClient": "pass-through",
- "linkQosToServer": "pass-through",
- "looseClose": "disabled",
- "looseInitialization": "disabled",
- "mssOverride": 0,
- "priorityToClient": "pass-through",
- "priorityToServer": "pass-through",
- "pvaAcceleration": "full",
- "pvaDynamicClientPackets": 1,
- "pvaDynamicServerPackets": 0,
- "pvaFlowAging": "enabled",
- "pvaFlowEvict": "enabled",
- "pvaOffloadDynamic": "enabled",
- "pvaOffloadState": "embryonic",
- "reassembleFragments": "disabled",
- "receiveWindowSize": 0,
- "resetOnTimeout": "enabled",
- "rttFromClient": "disabled",
- "rttFromServer": "disabled",
- "serverSack": "disabled",
- "serverTimestamp": "disabled",
- "softwareSynCookie": "disabled",
- "synCookieEnable": "enabled",
- "synCookieMss": 0,
- "synCookieWhitelist": "disabled",
- "tcpCloseTimeout": "5",
- "tcpGenerateIsn": "disabled",
- "tcpHandshakeTimeout": "5",
- "tcpStripSack": "disabled",
- "tcpTimeWaitTimeout": 0,
- "tcpTimestampMode": "preserve",
- "tcpWscaleMode": "preserve",
- "timeoutRecovery": "disconnect"
-}
diff --git a/test/units/modules/network/f5/fixtures/load_ltm_http2_profile.json b/test/units/modules/network/f5/fixtures/load_ltm_http2_profile.json
deleted file mode 100644
index 3d8c9bce3c..0000000000
--- a/test/units/modules/network/f5/fixtures/load_ltm_http2_profile.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "kind": "tm:ltm:profile:http2:http2state",
- "name": "test",
- "partition": "Common",
- "fullPath": "/Common/test",
- "generation": 5852,
- "selfLink": "https://localhost/mgmt/tm/ltm/profile/http2/~Common~test?ver=13.1.0.8",
- "activationModes": [
- "always"
- ],
- "appService": "none",
- "concurrentStreamsPerConnection": 10,
- "connectionIdleTimeout": 300,
- "defaultsFrom": "/Common/http2",
- "defaultsFromReference": {
- "link": "https://localhost/mgmt/tm/ltm/profile/http2/~Common~http2?ver=13.1.0.8"
- },
- "description": "this is awful documentation",
- "enforceTlsRequirements": "enabled",
- "frameSize": 2048,
- "headerTableSize": 4096,
- "includeContentLength": "disabled",
- "insertHeader": "disabled",
- "insertHeaderName": "X-HTTP2",
- "receiveWindow": 32,
- "writeSize": 16384
-}
diff --git a/test/units/modules/network/f5/fixtures/load_ltm_http_profile_1.json b/test/units/modules/network/f5/fixtures/load_ltm_http_profile_1.json
deleted file mode 100644
index 0d8f83c706..0000000000
--- a/test/units/modules/network/f5/fixtures/load_ltm_http_profile_1.json
+++ /dev/null
@@ -1,81 +0,0 @@
-{
- "kind": "tm:ltm:profile:http:httpstate",
- "name": "http",
- "partition": "Common",
- "fullPath": "/Common/http",
- "generation": 1405,
- "selfLink": "https://localhost/mgmt/tm/ltm/profile/http/~Common~http?ver=13.1.0.6",
- "acceptXff": "disabled",
- "appService": "none",
- "basicAuthRealm": "none",
- "defaultsFrom": "none",
- "description": "none",
- "encryptCookies": [],
- "enforcement": {
- "excessClientHeaders": "reject",
- "excessServerHeaders": "reject",
- "knownMethods": [
- "CONNECT",
- "DELETE",
- "GET",
- "HEAD",
- "LOCK",
- "OPTIONS",
- "POST",
- "PROPFIND",
- "PUT",
- "TRACE",
- "UNLOCK"
- ],
- "maxHeaderCount": 64,
- "maxHeaderSize": 32768,
- "maxRequests": 0,
- "oversizeClientHeaders": "reject",
- "oversizeServerHeaders": "reject",
- "pipeline": "allow",
- "truncatedRedirects": "disabled",
- "unknownMethod": "allow"
- },
- "explicitProxy": {
- "badRequestMessage": "none",
- "badResponseMessage": "none",
- "connectErrorMessage": "none",
- "defaultConnectHandling": "deny",
- "dnsErrorMessage": "none",
- "dnsResolver": "none",
- "hostNames": [],
- "ipv6": "no",
- "routeDomain": "none",
- "tunnelName": "none"
- },
- "fallbackHost": "none",
- "fallbackStatusCodes": [],
- "headerErase": "none",
- "headerInsert": "none",
- "hsts": {
- "includeSubdomains": "enabled",
- "maximumAge": 16070400,
- "mode": "disabled",
- "preload": "disabled"
- },
- "insertXforwardedFor": "disabled",
- "lwsSeparator": "none",
- "lwsWidth": 80,
- "oneconnectTransformations": "enabled",
- "proxyType": "reverse",
- "redirectRewrite": "none",
- "requestChunking": "preserve",
- "responseChunking": "selective",
- "responseHeadersPermitted": [],
- "serverAgentName": "BigIP",
- "sflow": {
- "pollInterval": 0,
- "pollIntervalGlobal": "yes",
- "samplingRate": 0,
- "samplingRateGlobal": "yes"
- },
- "viaHostName": "none",
- "viaRequest": "preserve",
- "viaResponse": "preserve",
- "xffAlternativeNames": []
-}
diff --git a/test/units/modules/network/f5/fixtures/load_ltm_irules.json b/test/units/modules/network/f5/fixtures/load_ltm_irules.json
deleted file mode 100644
index b3e026a120..0000000000
--- a/test/units/modules/network/f5/fixtures/load_ltm_irules.json
+++ /dev/null
@@ -1,179 +0,0 @@
-[
- {
- "kind": "tm:ltm:rule:rulestate",
- "name": "_sys_APM_ExchangeSupport_OA_BasicAuth",
- "partition": "Common",
- "fullPath": "/Common/_sys_APM_ExchangeSupport_OA_BasicAuth",
- "generation": 1,
- "selfLink": "https://localhost/mgmt/tm/ltm/rule/~Common~_sys_APM_ExchangeSupport_OA_BasicAuth?ver=12.1.2",
- "apiAnonymous": "nodelete nowrite \n # Global variables\n # static::POLICY_RESULT_CACHE_AUTHFAILED\n # Administrator can set this into 1, when there is a necessity to cache failed policy result.\n # This may be needed to avoid account locked caused by the Active Sync device when it uses wrong passwords.\n # One possible scenario, is that when the user changes the password in Active Directory, but missed to changed in their devices.\n # Responses\n # On denied result\n # Administrator can customize the responses to the device depends on more complex conditions when necessary.\n # In those cases, please use ACCESS::respond command.\n # The following is the syntax of ACCESS::respond\n # ACCESS::respond <status code> [ content <body> ] [ <Additional Header> <Additional Header value>* ]\n # e.g. ACCESS::respond 401 content \"Error: Denied\" WWW-Authenticate \"basic realm=\\\"f5.com\\\"\" Connection close\n when RULE_INIT {\n # Please set the following global variables for customized responses.\n set static::actsync_401_http_body \"<html><title>Authentication Failured</title><body>Error: Authentication Failure</body></html>\"\n set static::actsync_503_http_body \"<html><title>Service is not available</title><body>Error: Service is not available</body></html>\"\n set static::ACCESS_LOG_PREFIX \"01490000:7:\"\n\n # Second Virtual Server name for 401 NTLM responder\n set static::ACCESS_SECOND_VIRTUAL_NAME \"_ACCESS_401_NTLM_responder_HTTPS\"\n\n set static::POLICY_INPROGRESS \"policy_inprogress\"\n set static::POLICY_AUTHFAILED \"policy_authfailed\"\n # The request with huge content length can not be used for starting ACCESS session.\n # This kind of request will be put on hold, and this iRule will try to use another\n # request to start the session. The following value is used for Outlook Anywhere.\n set static::OA_MAGIC_CONTENT_LEN 1073741824\n\n # Similar with OutlookAnywhere case, ACCESS can not use the request which is\n # larger then following size. This becomes an issue with application that using\n # Exchange Web Service as its main protocol such as Mac OS X applications\n # (e.g. Mail app, Microsoft Entourage, etc)\n # This kind of request will be put on hold, and this iRule will try to use another\n # request to start the session.\n set static::FIRST_BIG_POST_CONTENT_LEN 640000\n\n # Set it into 1 if the backend EWS handler accepts HTTP Basic Authentication.\n set static::EWS_BKEND_BASIC_AUTH 0\n # The following variable controls the polling mechanism.\n set static::POLICY_RESULT_POLL_INTERVAL 250\n set static::POLICY_RESULT_POLL_MAXRETRYCYCLE 600\n\n # Set this global variable to 1 for caching authentication failure\n # Useful for avoiding account locked out.\n set static::POLICY_RESULT_CACHE_AUTHFAILED 0\n\n # set this global variable to set alternative timeout for particular session\n set static::POLICY_ALT_INACTIVITY_TIMEOUT 120\n\n set static::ACCESS_USERKEY_TBLNAME \"_access_userkey\"\n\n\n set static::ACCESS_DEL_COOKIE_HDR_VAL \"MRHSession=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/\"\n\n log -noname accesscontrol.local1.debug \"01490000:7: EWS_BKEND_BASIC_AUTH = $static::EWS_BKEND_BASIC_AUTH\"\n }\n when ACCESS_ACL_ALLOWED {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX [HTTP::method] [HTTP::uri] [HTTP::header Content-Length]\"\n\n # MSFT Exchange's EWS request handler always requesting NTLM even the connection has been\n # already authenticated if there is a HTTP Basic Auth in the request.\n if { [ info exists f_exchange_web_service ] && $f_exchange_web_service == 1 } {\n if { $static::EWS_BKEND_BASIC_AUTH == 0 } {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Removing HTTP Basic Authorization header\"\n HTTP::header remove Authorization\n }\n }\n }\n\n when HTTP_REQUEST {\n set http_path [ string tolower [HTTP::path] ]\n set f_clientless_mode 0\n set f_alt_inactivity_timeout 0\n set f_rpc_over_http 0\n set f_exchange_web_service 0\n set f_auto_discover 0\n set f_activesync 0\n set f_offline_address_book 0\n set f_availability_service 0\n\n # Here put appropriate pool when necessary.\n switch -glob $http_path {\n \"/rpc/rpcproxy.dll\" {\n # Supports for RPC over HTTP. (Outlook Anywhere)\n set f_rpc_over_http 1\n }\n \"/autodiscover/autodiscover.xml\" {\n # Supports for Auto Discover protocol.\n set f_auto_discover 1\n # This request does not require long inactivity timeout.\n # Don't use this for now\n set f_alt_inactivity_timeout 0\n }\n \"/microsoft-server-activesync\" {\n # Supports for ActiveSync\n set f_activesync 1\n }\n \"/oab/*\" {\n # Supports for Offline Address Book\n set f_offline_address_book 1\n # Don't use this for now\n set f_alt_inactivity_timeout 0\n }\n \"/ews/*\" {\n # Support for Exchange Web Service\n # Outlook's Availability Service borrows this protocol.\n set f_exchange_web_service 1\n }\n \"/as/*\" {\n # Support for Availability Service.\n # do nothing for now. (Untested)\n set f_availability_service 1\n }\n default {\n return\n }\n }\n\n set f_reqside_set_sess_id 0\n set http_method [HTTP::method]\n set http_hdr_host [HTTP::host]\n set http_hdr_uagent [HTTP::header User-Agent]\n set http_uri [HTTP::uri]\n set http_content_len [HTTP::header Content-Length]\n set MRHSession_cookie [HTTP::cookie value MRHSession]\n set auth_info_b64enc \"\"\n\n if { ! [ info exists src_ip ] } {\n set src_ip [IP::remote_addr]\n }\n if { ! [ info exists PROFILE_POLICY_TIMEOUT ] } {\n set PROFILE_POLICY_TIMEOUT [PROFILE::access access_policy_timeout]\n }\n if { ! [ info exists PROFILE_MAX_SESS_TIMEOUT ] } {\n set PROFILE_MAX_SESS_TIMEOUT [PROFILE::access max_session_timeout]\n }\n if { ! [ info exists PROFILE_RESTRICT_SINGLE_IP ] } {\n set PROFILE_RESTRICT_SINGLE_IP 1\n }\n\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX method: $http_method\"\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Src IP: $src_ip\"\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX User-Agent: $http_hdr_uagent\"\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX HTTP uri: $http_uri\"\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX HTTP len: $http_content_len\"\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Restrict-to-single-client-ip: $PROFILE_RESTRICT_SINGLE_IP\"\n\n # First, do we have valid MRHSession cookie.\n if { $MRHSession_cookie != \"\" } {\n if { [ACCESS::session exists -state_allow -sid $MRHSession_cookie] } {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX HTTP *VALID* MRHSession cookie: $MRHSession_cookie\"\n } else {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX HTTP *INVALID* MRHSession cookie: $MRHSession_cookie\"\n set MRHSession_cookie \"\"\n HTTP::cookie remove MRHSession\n }\n }\n\n set http_hdr_auth [HTTP::header Authorization]\n if { [ string match -nocase {basic *} $http_hdr_auth ] != 1 } {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Not basic authentication. Ignore received auth header\"\n set http_hdr_auth \"\"\n }\n\n if { $http_hdr_auth == \"\" } {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX No/Empty Auth header\"\n # clean up the cookie\n if { $MRHSession_cookie == \"\" } {\n HTTP::respond 401 content $static::actsync_401_http_body WWW-Authenticate \"Basic realm=\\\"[HTTP::header Host]\\\"\" Set-Cookie $static::ACCESS_DEL_COOKIE_HDR_VAL Connection Close\n return\n }\n # Do nothing if we have a valid MRHSession cookie.\n }\n\n set f_release_request 0\n # Optimization for clients which support cookie\n if { $MRHSession_cookie != \"\" } {\n # Default profile access setting is false\n if { $PROFILE_RESTRICT_SINGLE_IP == 0 } {\n set f_release_request 1\n }\n elseif { [ IP::addr $src_ip equals [ ACCESS::session data get -sid $MRHSession_cookie \"session.user.clientip\" ] ] } {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX source IP matched\"\n set f_release_request 1\n }\n else {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX source IP does not matched\"\n set MRHSession_cookie \"\"\n HTTP::cookie remove MRHSession\n }\n }\n\n if { $f_release_request == 0 } {\n set apm_username [string tolower [HTTP::username]]\n set apm_password [HTTP::password]\n if { $PROFILE_RESTRICT_SINGLE_IP == 0 } {\n binary scan [md5 \"$apm_password\"] H* user_hash\n }\n else {\n binary scan [md5 \"$apm_password$src_ip\"] H* user_hash\n }\n set user_key \"$apm_username.$user_hash\"\n unset user_hash\n\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX HTTP Hdr Auth: $http_hdr_auth\"\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX apm_username: $apm_username\"\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX user_key = $user_key\"\n set apm_cookie_list [ ACCESS::user getsid $user_key ]\n if { [ llength $apm_cookie_list ] != 0 } {\n set apm_cookie [ ACCESS::user getkey [ lindex $apm_cookie_list 0 ] ]\n if { $apm_cookie != \"\" } {\n HTTP::cookie insert name MRHSession value $apm_cookie\n set f_release_request 1\n }\n }\n }\n\n if { $http_content_len == $static::OA_MAGIC_CONTENT_LEN } {\n set f_oa_magic_content_len 1\n }\n\n set f_sleep_here 0\n set retry 1\n\n while { $f_release_request == 0 && $retry <= $static::POLICY_RESULT_POLL_MAXRETRYCYCLE } {\n\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Trying #$retry for $http_method $http_uri $http_content_len\"\n\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Reading $user_key from table $static::ACCESS_USERKEY_TBLNAME\"\n\n set apm_cookie [table lookup -subtable $static::ACCESS_USERKEY_TBLNAME -notouch $user_key]\n if { $apm_cookie != \"\" } {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Verifying table cookie = $apm_cookie\"\n\n # Accessing SessionDB is not that cheap. Here we are trying to check known value.\n if { $apm_cookie == \"policy_authfailed\" || $apm_cookie == \"policy_inprogress\"} {\n # Do nothing\n } elseif { ! [ ACCESS::session exists $apm_cookie ] } {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX table cookie = $apm_cookie is out-of-sync\"\n # Table value is out of sync. Ignores it.\n set apm_cookie \"\"\n }\n }\n\n switch $apm_cookie {\n \"\" {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX NO APM Cookie found\"\n\n if { [ info exists f_oa_magic_content_len ] && $f_oa_magic_content_len == 1 } {\n # Outlook Anywhere request comes in pair. The one with 1G payload is not usable\n # for creating new session since 1G content-length is intended for client to upload\n # the data when needed.\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Start to wait $static::POLICY_RESULT_POLL_INTERVAL ms for request with magic content-len\"\n set f_sleep_here 1\n } elseif { [ info exists f_exchange_web_service ] && $f_exchange_web_service == 1 && $http_content_len > $static::FIRST_BIG_POST_CONTENT_LEN } {\n # Here we are getting large EWS request, which can't be used for starting new session\n # in clientless-mode. Have it here waiting for next smaller one.\n # We are holding the request here in HTTP filter, and HTTP filter automatically\n # clamping down the TCP window when necessary.\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Start to wait $static::POLICY_RESULT_POLL_INTERVAL ms for big EWS request\"\n set f_sleep_here 1\n } else {\n set apm_cookie \"policy_inprogress\"\n set f_reqside_set_sess_id 1\n set f_release_request 1\n }\n }\n \"policy_authfailed\" {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Found $user_key with AUTH_FAILED\"\n HTTP::respond 401 content $static::actsync_401_http_body\n set f_release_request 1\n }\n \"policy_inprogress\" {\n if { [ info exists f_activesync ] && ($f_activesync == 1) } {\n # For ActiveSync requests, aggressively starts new session.\n set f_reqside_set_sess_id 1\n set f_release_request 1\n } else {\n set f_sleep_here 1\n }\n }\n default {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Using MRHSession = $apm_cookie\"\n HTTP::header insert Cookie \"MRHSession=$apm_cookie\"\n set f_release_request 1\n }\n }\n\n if { $f_reqside_set_sess_id == 1 } {\n set f_reqside_set_sess_id 0\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Setting $user_key=$apm_cookie $PROFILE_POLICY_TIMEOUT $PROFILE_POLICY_TIMEOUT\"\n set f_clientless_mode 1\n HTTP::cookie remove MRHSession\n HTTP::header insert \"clientless-mode\" 1\n HTTP::header insert \"username\" $apm_username\n HTTP::header insert \"password\" $apm_password\n table set -subtable $static::ACCESS_USERKEY_TBLNAME $user_key $apm_cookie $PROFILE_POLICY_TIMEOUT $PROFILE_POLICY_TIMEOUT\n }\n\n if { $f_sleep_here == 1 } {\n set f_sleep_here 0\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Waiting $static::POLICY_RESULT_POLL_INTERVAL ms for $http_method $http_uri\"\n after $static::POLICY_RESULT_POLL_INTERVAL\n }\n\n incr retry\n }\n\n if { ($f_release_request == 0) && ($retry >= $static::POLICY_RESULT_POLL_MAXRETRYCYCLE) } {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Policy did not finish in [expr { $static::POLICY_RESULT_POLL_MAXRETRYCYCLE * $static::POLICY_RESULT_POLL_INTERVAL } ] ms. Close connection for $http_method $http_uri\"\n\n table delete -subtable $static::ACCESS_USERKEY_TBLNAME $user_key\n ACCESS::disable\n TCP::close\n return\n }\n\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Releasing request $http_method $http_uri\"\n }\n\n when ACCESS_SESSION_STARTED {\n if { [ info exists user_key ] } {\n\n ACCESS::session data set \"session.user.uuid\" $user_key\n ACCESS::session data set \"session.user.microsoft-exchange-client\" 1\n\n if { [ info exists f_activesync ] && $f_activesync == 1 } {\n ACCESS::session data set \"session.user.microsoft-activesync\" 1\n }\n elseif { [ info exists f_auto_discover ] && $f_auto_discover == 1 } {\n ACCESS::session data set \"session.user.microsoft-autodiscover\" 1\n }\n elseif { [ info exists f_availability_service ] && $f_availability_service == 1 } {\n ACCESS::session data set \"session.user.microsoft-availabilityservice\" 1\n }\n elseif { [ info exists f_rpc_over_http ] && $f_rpc_over_http == 1 } {\n ACCESS::session data set \"session.user.microsoft-rpcoverhttp\" 1\n }\n elseif { [ info exists f_offline_address_book ] && $f_offline_address_book == 1 } {\n ACCESS::session data set \"session.user.microsoft-offlineaddressbook\" 1\n }\n elseif { [ info exists f_exchange_web_service ] && $f_exchange_web_service == 1 } {\n ACCESS::session data set \"session.user.microsoft-exchangewebservice\" 1\n }\n }\n if { [ info exists f_alt_inactivity_timeout ] && $f_alt_inactivity_timeout == 1 } {\n ACCESS::session data set \"session.inactivity_timeout\" $static::POLICY_ALT_INACTIVITY_TIMEOUT\n }\n }\n\n when ACCESS_POLICY_COMPLETED {\n if { ! [ info exists user_key ] } {\n return\n }\n\n set user_key_value \"\"\n set f_delete_session 0\n set policy_result [ACCESS::policy result]\n set sid [ ACCESS::session sid ]\n\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX ACCESS_POLICY_COMPLETED: policy_result = \\\"$policy_result\\\" user_key = \\\"$user_key\\\" sid = \\\"$sid\\\"\"\n\n set inactivity_timeout [ACCESS::session data get \"session.inactivity_timeout\"]\n set max_sess_timeout [ACCESS::session data get \"session.max_session_timeout\"]\n if { $max_sess_timeout == \"\" } {\n set max_sess_timeout $PROFILE_MAX_SESS_TIMEOUT\n }\n\n switch $policy_result {\n \"allow\" {\n # We depends on this table record self-cleanup capability in order to\n # indirectly sync with session DB.\n set user_key_value $sid\n\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Result: Allow: $user_key => $sid $inactivity_timeout $max_sess_timeout\"\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX user_key_value = $user_key_value\"\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX sid = $sid\"\n }\n \"deny\" {\n # When necessary the admin here can check appropriate session variable\n # and decide what response more appropriate then this default response.\n ACCESS::respond 401 content $static::actsync_401_http_body Set-Cookie $static::ACCESS_DEL_COOKIE_HDR_VAL Connection Close\n if { $static::POLICY_RESULT_CACHE_AUTHFAILED == 1 } {\n set user_key_value $static::POLICY_AUTHFAILED\n } else {\n set f_delete_session 1\n }\n }\n default {\n ACCESS::respond 503 content $static::actsync_503_http_body Connection Close\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Got unsupported policy result for $user_key ($sid)\"\n set f_delete_session 1\n }\n }\n if { $user_key_value != \"\" } {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Setting $user_key => $user_key_value $inactivity_timeout $max_sess_timeout in table $static::ACCESS_USERKEY_TBLNAME\"\n\n table set -subtable $static::ACCESS_USERKEY_TBLNAME $user_key $user_key_value $inactivity_timeout $max_sess_timeout\n } else {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Deleting $user_key in table $static::ACCESS_USERKEY_TBLNAME\"\n\n table delete -subtable $static::ACCESS_USERKEY_TBLNAME $user_key\n }\n\n if { $f_delete_session == 1 } {\n ACCESS::session remove\n set f_delete_session 0\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Removing the session for $user_key.\"\n }\n }\ndefinition-signature CZnUb3niz9wZPWvOmjDB0Dy4ixqjBEhIZrAVGt8VYe7+wZkhcBUFTADz3S1y5uomVwhRkGL20PLH7tfanDlpr3+IppgAGQlp98sPUl5ndEoWA4Rr90QiRGNRl/V7jWK58SOdJCQOirnutVMoeYjBWLwuprXGts08PO0WML5s0xJNOY7WPuGNeG+7Ht2pIB0vu80CgnCNGZJGZH0QR3kMVOx3yUN0ro5bAOmQ/XWel4qkj0F5DN9ufvsmKtTvb+Lc3y+5PHGbbFAQIrZ7lntZUJl/F8e/d26HE3spmZzQpPzi16qYWaMOxbvT6oedxpyhwbmJLiRNGyZmnT6kHj93FA==",
- "apiRawValues": {
- "verificationStatus": "signature-verified"
- }
- },
- {
- "kind": "tm:ltm:rule:rulestate",
- "name": "_sys_APM_ExchangeSupport_OA_NtlmAuth",
- "partition": "Common",
- "fullPath": "/Common/_sys_APM_ExchangeSupport_OA_NtlmAuth",
- "generation": 1,
- "selfLink": "https://localhost/mgmt/tm/ltm/rule/~Common~_sys_APM_ExchangeSupport_OA_NtlmAuth?ver=12.1.2",
- "apiAnonymous": "nodelete nowrite \nwhen RULE_INIT {\n set static::POLICY_INPROGRESS \"policy_inprogress\"\n set static::POLICY_FAILED \"policy_failed\"\n set static::POLICY_SUCCEED \"policy_succeed\"\n set static::POLICY_DONE_WAIT_SEC 5\n\n set static::FIRST_BIG_POST_CONTENT_LEN 640000\n set static::POLICY_RESULT_POLL_INTERVAL 100\n set static::POLICY_RESULT_POLL_MAXRETRYCYCLE 100\n set static::ACCESS_USERKEY_TBLNAME \"_access_userkey\"\n set static::ACCESS_LOG_PREFIX \"01490000:7:\"\n\n set static::USE_NTLM_AUTH 0\n set static::USE_BASIC_AUTH 1\n set static::USE_NTLM_BASIC_AUTH 2\n\n set static::URL_DEFAULT 0\n set static::URL_RPC_OVER_HTTP 1\n set static::URL_AUTODISCOVER 2\n set static::URL_ACTIVE_SYNC 3\n set static::URL_OFFLINEADDRESSBOOK 4\n set static::URL_EXCHANGEWEBSERVICE 5\n\n set static::RECVD_AUTH_NONE 0\n set static::RECVD_AUTH_NTLM 1\n set static::RECVD_AUTH_BASIC 2\n\n set static::ACCESS_DEL_COOKIE_HDR_VAL \"MRHSession=deleted; \\\n expires=Thu, 01-Jan-1970 00:00:01 GMT;\\\n path=/\"\n\n }\n\n when HTTP_REQUEST {\n set http_path [string tolower [HTTP::path]]\n set url_path $static::URL_DEFAULT\n set use_auth $static::USE_NTLM_AUTH\n set f_disable_sso 0\n\n switch -glob $http_path {\n \"/rpc/rpcproxy.dll\" {\n set url_path $static::URL_RPC_OVER_HTTP\n }\n \"/autodiscover/autodiscover.xml\" {\n set url_path $static::URL_ACTIVE_SYNC\n # Need to support both NTLM and Basic authentication for this URL\n set use_auth $static::USE_NTLM_BASIC_AUTH\n }\n \"/microsoft-server-activesync*\" {\n set url_path $static::URL_ACTIVE_SYNC\n # Use only Basic authentication for this URL\n set use_auth $static::USE_BASIC_AUTH\n set f_disable_sso 1\n }\n \"/oab*\" {\n set url_path $static::URL_OFFLINEADDRESSBOOK\n }\n \"/ews*\" {\n set url_path $static::URL_EXCHANGEWEBSERVICE\n }\n default {\n ECA::disable\n return\n }\n }\n\n if { ! [ info exists f_ntlm_auth_succeed ] } {\n set f_ntlm_auth_succeed 0\n }\n if { ! [ info exists sid_cache ] } {\n set sid_cache \"\"\n }\n if { ! [ info exists PROFILE_POLICY_TIMEOUT ] } { \n set PROFILE_POLICY_TIMEOUT [PROFILE::access access_policy_timeout]\n }\n if { ! [ info exists PROFILE_MAX_SESS_TIMEOUT ] } {\n set PROFILE_MAX_SESS_TIMEOUT [PROFILE::access max_session_timeout]\n }\n if { ! [ info exists src_ip ] } {\n set src_ip [IP::remote_addr]\n }\n if { ! [ info exists PROFILE_RESTRICT_SINGLE_IP ] } {\n set PROFILE_RESTRICT_SINGLE_IP 1\n }\n\n set http_method [HTTP::method]\n set http_hdr_host [HTTP::host]\n set http_hdr_uagent [HTTP::header User-Agent]\n set http_uri [HTTP::uri]\n set http_content_len [HTTP::header Content-Length]\n set MRHSession_cookie [HTTP::cookie value MRHSession]\n\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX method: $http_method\"\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Src IP: $src_ip\"\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX User-Agent: $http_hdr_uagent\"\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX HTTP uri: $http_uri\"\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX HTTP len: $http_content_len\"\n\n if { ! [ info exists ECA_METADATA_ARG ] } {\n # Generating argument for ECA::metadata\n # The NTLM configuration name is derived from assigned virtual name with the algorithm as follows:\n # <virtual-fullpath> ::= <folder-path>\"/\"<virtual-basename> as \"/\" is the last \"/\" char.\n # <config-fullpath> ::= <folder-path>\"/\" \"exch_ntlm\" \"_\" <virtual-basename>\n # e.g. Let us say the virtual name is \"/prod/exch/vs1\", The folder path is \"/prod/exch/\",\n # then object name will be \"/prod/exch/exch_ntlm_vs1\".\n set vs_name [virtual name]\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX virtual: $vs_name\"\n set slash_index [ string last / $vs_name ]\n if { $slash_index == -1 } {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Error: the virtual name does not contain folder information\"\n ACCESS::disable\n TCP::close\n return\n }\n set ECA_METADATA_ARG \"select_ntlm:\"\n append ECA_METADATA_ARG [ string range $vs_name 0 $slash_index ]\n append ECA_METADATA_ARG \"exch_ntlm_\"\n append ECA_METADATA_ARG [ string range $vs_name [ expr { $slash_index + 1 } ] end ]\n unset slash_index\n unset vs_name\n }\n\n if { $use_auth == $static::USE_NTLM_AUTH } {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Enable ECA: $ECA_METADATA_ARG\"\n ECA::enable\n ECA::select $ECA_METADATA_ARG\n return\n } else {\n set recvd_auth $static::RECVD_AUTH_NONE\n set http_hdr_auth [HTTP::header Authorization]\n set auth_data [split $http_hdr_auth \" \"]\n if { $http_hdr_auth != \"\" } {\n if { [ llength $auth_data ] == 2 } {\n set auth_scheme [ lindex $auth_data 0]\n if { [string equal -nocase $auth_scheme \"ntlm\" ] == 1 } {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Recv'd HTTP NTLM Authentication\"\n set recvd_auth $static::RECVD_AUTH_NTLM\n } elseif { [ string equal -nocase [ lindex $auth_data 0] \"basic\" ] == 1 } {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Recv'd HTTP Basic Authentication\"\n set recvd_auth $static::RECVD_AUTH_BASIC\n set user [string tolower [HTTP::username]]\n set password [HTTP::password]\n }\n }\n }\n if { $use_auth == $static::USE_BASIC_AUTH } {\n if { $recvd_auth == $static::RECVD_AUTH_BASIC } {\n # Defer the process until later\n } else {\n HTTP::respond 401 -version 1.1 noserver WWW-Authenticate \"Basic realm=\\\"$http_hdr_host\\\"\" \\\n Set-Cookie $static::ACCESS_DEL_COOKIE_HDR_VAL Connection Close\n return\n }\n } elseif { $use_auth == $static::USE_NTLM_BASIC_AUTH } {\n if { ($recvd_auth == $static::RECVD_AUTH_NTLM) || ($f_ntlm_auth_succeed == 1) } {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Enable ECA: $ECA_METADATA_ARG\"\n ECA::enable\n ECA::select $ECA_METADATA_ARG\n return\n } elseif { $recvd_auth == $static::RECVD_AUTH_BASIC } {\n # Defer the process until later\n } else {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Request Authorization: NTLM + Basic\"\n HTTP::respond 401 -version 1.1 noserver WWW-Authenticate \"Basic realm=\\\"$http_hdr_host\\\"\" \\\n WWW-Authenticate \"NTLM\" Set-Cookie $static::ACCESS_DEL_COOKIE_HDR_VAL Connection Close\n return\n }\n }\n\n # Disable NTLM auth\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Disable ECA\"\n ECA::disable\n # Disable KCD sso\n set f_disable_sso 1\n\n if { $MRHSession_cookie != \"\" } {\n if { [ACCESS::session exists -state_allow -sid $MRHSession_cookie] } {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX HTTP *VALID* MRHSession cookie: $MRHSession_cookie\"\n # Default profile access setting is false\n if { $PROFILE_RESTRICT_SINGLE_IP == 0 } {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Release the request\"\n return\n }\n elseif { [ IP::addr $src_ip equals [ ACCESS::session data get -sid $MRHSession_cookie \"session.user.clientip\" ] ] } {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX source IP matched. Release the request\"\n return\n }\n else {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX source IP does not matched\"\n }\n }\n else {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX HTTP *INVALID* MRHSession cookie: $MRHSession_cookie\"\n }\n\n set MRHSession_cookie \"\"\n HTTP::cookie remove MRHSession\n }\n\n set user_key {}\n if { $PROFILE_RESTRICT_SINGLE_IP == 1 } {\n append user_key $src_ip\n }\n append user_key $password\n binary scan [md5 $user_key ] H* user_key\n set user_key \"$user.$user_key\"\n\n set apm_cookie_list [ ACCESS::user getsid $user_key ]\n if { [ llength $apm_cookie_list ] != 0 } {\n set MRHSession_cookie [ ACCESS::user getkey [ lindex $apm_cookie_list 0 ] ]\n if { $MRHSession_cookie != \"\" } {\n HTTP::cookie remove MRHSession \n HTTP::cookie insert name MRHSession value $MRHSession_cookie\n return\n }\n }\n\n HTTP::cookie remove MRHSession\n HTTP::header insert \"clientless-mode\" 1\n HTTP::header insert \"username\" $user\n HTTP::header insert \"password\" $password\n return\n }\n }\n\n when ECA_REQUEST_ALLOWED {\n set f_ntlm_auth_succeed 1\n\n if { $MRHSession_cookie == \"\" } {\n # Retrieve from SID cache\n set MRHSession_cookie $sid_cache\n HTTP::cookie insert name MRHSession value $sid_cache\n }\n\n if { $MRHSession_cookie != \"\" } {\n # Destroy session ID cache. This client should not need session ID cache \n if { ($sid_cache != \"\") && ($sid_cache != $MRHSession_cookie) } {\n set sid_cache \"\"\n }\n if { [ ACCESS::session exists -state_allow $MRHSession_cookie ] } {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX HTTP *VALID* MRHSession cookie: $MRHSession_cookie\"\n # Default profile access setting is false\n if { $PROFILE_RESTRICT_SINGLE_IP == 0 } {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Release the request\"\n return\n }\n elseif { [ IP::addr $src_ip equals [ ACCESS::session data get -sid $MRHSession_cookie \"session.user.clientip\" ] ] } {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX source IP matched. Release the request\"\n return\n }\n else {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX source IP does not matched\"\n }\n } else {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX HTTP *INVALID* MRHSession cookie: $MRHSession_cookie\"\n }\n }\n\n set MRHSession \"\"\n set sid_cache \"\"\n HTTP::cookie remove MRHSession\n\n # Build user_key\n set user_key {}\n append user_key [string tolower [ECA::username]] \"@\" [ string tolower [ECA::domainname] ]\n if { $PROFILE_RESTRICT_SINGLE_IP == 0 } {\n append user_key \":\" $src_ip\n }\n append user_key \":\" [ECA::client_machine_name]\n\n set apm_cookie_list [ ACCESS::user getsid $user_key ]\n if { [ llength $apm_cookie_list ] != 0 } {\n set MRHSession_cookie [ ACCESS::user getkey [ lindex $apm_cookie_list 0 ] ]\n if { $MRHSession_cookie != \"\" } {\n set sid_cache $MRHSession_cookie\n HTTP::cookie insert name MRHSession value $MRHSession_cookie\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX APM Cookie found: $sid_cache\"\n return\n }\n }\n unset apm_cookie_list\n\n set try 1\n set start_policy_str $src_ip\n append start_policy_str [TCP::client_port]\n\n while { $try <= $static::POLICY_RESULT_POLL_MAXRETRYCYCLE } {\n\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX NO APM Cookie found\"\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Trying #$try for $http_method $http_uri $http_content_len\"\n\n if { $http_content_len > $static::FIRST_BIG_POST_CONTENT_LEN } {\n # Wait at below\n } else {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX EXEC: table set -notouch -subtable $static::ACCESS_USERKEY_TBLNAME -excl $user_key $start_policy_str $PROFILE_POLICY_TIMEOUT $PROFILE_MAX_SESS_TIMEOUT\"\n set policy_status [table set -notouch -subtable $static::ACCESS_USERKEY_TBLNAME -excl $user_key $start_policy_str $PROFILE_POLICY_TIMEOUT $PROFILE_MAX_SESS_TIMEOUT]\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX DONE: table set -notouch -subtable $static::ACCESS_USERKEY_TBLNAME -excl $user_key $start_policy_str $PROFILE_POLICY_TIMEOUT $PROFILE_MAX_SESS_TIMEOUT\"\n if { $policy_status == $start_policy_str } {\n # ACCESS Policy has not started. Start one\n HTTP::header insert \"clientless-mode\" 1\n break\n } elseif { $policy_status == $static::POLICY_SUCCEED } {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX table is out-of-sync retry\"\n table delete -subtable $static::ACCESS_USERKEY_TBLNAME $user_key\n continue\n } elseif { $policy_status == $static::POLICY_FAILED } {\n ACCESS::disable\n TCP::close\n return\n }\n # Wait at below\n }\n\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Waiting $static::POLICY_RESULT_POLL_INTERVAL ms for $http_method $http_uri\"\n # Touch the entry table\n table lookup -subtable $static::ACCESS_USERKEY_TBLNAME $user_key\n after $static::POLICY_RESULT_POLL_INTERVAL\n\n set apm_cookie_list [ ACCESS::user getsid $user_key ]\n if { [ llength $apm_cookie_list ] != 0 } {\n set MRHSession_cookie [ ACCESS::user getkey [ lindex $apm_cookie_list 0 ] ]\n if { $MRHSession_cookie != \"\" } {\n set sid_cache $MRHSession_cookie\n HTTP::cookie insert name MRHSession value $MRHSession_cookie\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX APM Cookie found: $sid_cache\"\n return\n }\n }\n\n incr try\n }\n\n if { $try > $static::POLICY_RESULT_POLL_MAXRETRYCYCLE } {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Policy did not finish in [ expr { $static::POLICY_RESULT_POLL_MAXRETRYCYCLE * $static::POLICY_RESULT_POLL_INTERVAL } ] ms. Close connection for $http_method $http_uri\"\n table delete -subtable $static::ACCESS_USERKEY_TBLNAME $user_key\n ACCESS::disable\n TCP::close\n return\n }\n\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Releasing request $http_method $http_uri\"\n\n unset try\n unset start_policy_str\n }\n\n when ECA_REQUEST_DENIED {\n set f_ntlm_auth_succeed 0\n }\n\n when HTTP_RESPONSE_RELEASE {\n if { ! [info exists user_key] } {\n return\n }\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX HTTP response: status: [HTTP::status]\"\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX HTTP response: Server: [HTTP::header Server]\"\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX HTTP response: Content-Length: [HTTP::header Content-Length]\"\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX HTTP response: WWW-Authenticate: [HTTP::header WWW-Authenticate]\"\n }\n\n when ACCESS_SESSION_STARTED {\n if { [ info exists user_key ] } {\n ACCESS::session data set \"session.user.uuid\" $user_key\n ACCESS::session data set \"session.user.microsoft-exchange-client\" 1\n }\n }\n\n when ACCESS_ACL_ALLOWED {\n if { [ info exists f_disable_sso ] && $f_disable_sso == 1 } {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Disable WEBSSO\"\n WEBSSO::disable\n }\n }\n\n when ACCESS_POLICY_COMPLETED {\n if { ! [ info exists user_key ] } {\n return\n }\n\n set user_key_value \"\"\n set f_delete_session 0\n set policy_result [ACCESS::policy result]\n set sid [ ACCESS::session sid ]\n\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX ACCESS_POLICY_COMPLETED: policy_result = \\\"$policy_result\\\" user_key = \\\"$user_key\\\" sid = \\\"$sid\\\"\"\n\n switch $policy_result {\n \"allow\" {\n set user_key_value $sid\n set sid_cache $user_key_value\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Result: Allow: $user_key\"\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX sid = $sid\"\n\n }\n \"deny\" {\n ACCESS::respond 401 content $static::actsync_401_http_body Set-Cookie $static::ACCESS_DEL_COOKIE_HDR_VAL Connection Close\n set f_delete_session 1\n }\n default {\n ACCESS::respond 503 content $static::actsync_503_http_body Connection Close\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Got unsupported policy result for $user_key ($sid)\"\n set f_delete_session 1\n }\n }\n\n if { $f_ntlm_auth_succeed == 1 } {\n if { $user_key_value != \"\" } {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Setting $user_key => $static::POLICY_SUCCEED\"\n table set -subtable $static::ACCESS_USERKEY_TBLNAME $user_key $static::POLICY_SUCCEED\n } else {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Setting $user_key => $static::POLICY_FAILED $static::POLICY_DONE_WAIT_SEC $static::POLICY_DONE_WAIT_SEC_in table $static::ACCESS_USERKEY_TBLNAME\"\n table set -subtable $static::ACCESS_USERKEY_TBLNAME $user_key $static::POLICY_FAILED $static::POLICY_DONE_WAIT_SEC $static::POLICY_DONE_WAIT_SEC\n }\n }\n\n if { $f_delete_session == 1 } {\n ACCESS::session remove\n set f_delete_session 0\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Removing the session for $user_key.\"\n }\n }\ndefinition-signature d/SlmwsO4YeDlh3eJpLqam9ytq0/EkWnAce1XTQ5bxOyla0x/VHjkr9dvoo3awaxp7lEjAenIgwGpS2jL5R1hq48WGZN2nu9LDKVjTosrq7j1MHbeKiIW8yXc3IEUtbbkhkAGNnMmfDYMD8Vg7l+iBx6B/WvRTZLr+tmppFf0BIr2Z7FWWU6c9OVl8YH1VuqqFX/lKICn2EXDhebRDRVvuXobLvbjZQxj+tqdUU2vuLzXYot/RUgClXHrg6Z2ZC6/WuAq4pp/XA2kvzWotQiY9gEceQdMC7/BxPSR8xo4VPNqkFkEPjh5hehZP0tFONTZaMaH1klVg4QbvHH5MRiBQ==",
- "apiRawValues": {
- "verificationStatus": "signature-verified"
- }
- },
- {
- "kind": "tm:ltm:rule:rulestate",
- "name": "_sys_APM_ExchangeSupport_helper",
- "partition": "Common",
- "fullPath": "/Common/_sys_APM_ExchangeSupport_helper",
- "generation": 1,
- "selfLink": "https://localhost/mgmt/tm/ltm/rule/~Common~_sys_APM_ExchangeSupport_helper?ver=12.1.2",
- "apiAnonymous": "nodelete nowrite \n # The purpose of this iRule is for help the main virtual for the timing of the HTTP request retry\n # during the SSO process for OutlookAnywhere protocol request which has a Content-Length value of 1GB.\n\n when HTTP_REQUEST {\n # Waiting for the first chunk of data.\n HTTP::collect 1\n }\n\n when HTTP_REQUEST_DATA {\n # Respond 401 and close the connection once we received the data.\n HTTP::respond 401 WWW-Authenticate NTLM Connection close\n }\ndefinition-signature fnJWcC75FIDV4savxGjyZ5sTdRTen+3mItejhseH06qn+qBXjOl/j7wYRSLDv1IcFezF8BunbDftMHXrW7QRuPuxhjMIc4vaALE2CCGkO0xcs258F+nkPeeJKoR5mTHY/E5BWpOAISinUBUSA3/nUm8blXkMwVg/Q95360jcCOoi6csgJa97OSKIF9h9OQCylh1qGBsDRHEXCR3ycw5Eb4T2QQSdBn09vr8Hgdpi/9fUER97nzJe8T/RuoG+nQ7bc8F9yzG6nFa/CQtRYDybDrcNgllCfVloXZAHZS3dCpq6FnS/FaEWfSIujmV+lXkxY23Xz9Wf6i1h/feW9fEUiQ==",
- "apiRawValues": {
- "verificationStatus": "signature-verified"
- }
- },
- {
- "kind": "tm:ltm:rule:rulestate",
- "name": "_sys_APM_ExchangeSupport_main",
- "partition": "Common",
- "fullPath": "/Common/_sys_APM_ExchangeSupport_main",
- "generation": 1,
- "selfLink": "https://localhost/mgmt/tm/ltm/rule/~Common~_sys_APM_ExchangeSupport_main?ver=12.1.2",
- "apiAnonymous": "nodelete nowrite \n # Global variables\n # static::POLICY_RESULT_CACHE_AUTHFAILED\n # Administrator can set this into 1, when there is a necessity to cache failed policy result.\n # This may be needed to avoid account locked caused by the Active Sync device when it uses wrong passwords.\n # One possible scenario, is that when the user changes the password in Active Directory, but missed to changed in their devices.\n # Responses\n # On denied result\n # Administrator can customize the responses to the device depends on more complex conditions when necessary.\n # In those cases, please use ACCESS::respond command.\n # The following is the syntax of ACCESS::respond\n # ACCESS::respond <status code> [ content <body> ] [ <Additional Header> <Additional Header value>* ]\n # e.g. ACCESS::respond 401 content \"Error: Denied\" WWW-Authenticate \"basic realm=\\\"f5.com\\\"\" Connection close\n when RULE_INIT {\n # Please set the following global variables for customized responses.\n set static::actsync_401_http_body \"<html><title>Authentication Failured</title><body>Error: Authentication Failure</body></html>\"\n set static::actsync_503_http_body \"<html><title>Service is not available</title><body>Error: Service is not available</body></html>\"\n set static::ACCESS_LOG_PREFIX \"01490000:7:\"\n\n # Second Virtual Server name for 401 NTLM responder\n set static::ACCESS_SECOND_VIRTUAL_NAME \"_ACCESS_401_NTLM_responder_HTTPS\"\n\n set static::POLICY_INPROGRESS \"policy_inprogress\"\n set static::POLICY_AUTHFAILED \"policy_authfailed\"\n # The request with huge content length can not be used for starting ACCESS session.\n # This kind of request will be put on hold, and this iRule will try to use another\n # request to start the session. The following value is used for Outlook Anywhere.\n set static::OA_MAGIC_CONTENT_LEN 1073741824\n\n # Similar with OutlookAnywhere case, ACCESS can not use the request which is\n # larger then following size. This becomes an issue with application that using\n # Exchange Web Service as its main protocol such as Mac OS X applications\n # (e.g. Mail app, Microsoft Entourage, etc)\n # This kind of request will be put on hold, and this iRule will try to use another\n # request to start the session.\n set static::FIRST_BIG_POST_CONTENT_LEN 640000\n\n # Set it into 1 if the backend EWS handler accepts HTTP Basic Authentication.\n set static::EWS_BKEND_BASIC_AUTH 0\n # Set it into 1 if the backend RPC-over-HTTP handler accepts HTTP Basic Authentication.\n set static::RPC_OVER_HTTP_BKEND_BASIC_AUTH 0\n # The following variable controls the polling mechanism.\n set static::POLICY_RESULT_POLL_INTERVAL 250\n set static::POLICY_RESULT_POLL_MAXRETRYCYCLE 600\n\n # Set this global variable to 1 for caching authentication failure\n # Useful for avoiding account locked out.\n set static::POLICY_RESULT_CACHE_AUTHFAILED 0\n\n # set this global variable to set alternative timeout for particular session\n set static::POLICY_ALT_INACTIVITY_TIMEOUT 120\n\n set static::ACCESS_USERKEY_TBLNAME \"_access_userkey\"\n\n\n set static::ACCESS_DEL_COOKIE_HDR_VAL \"MRHSession=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/\"\n\n log -noname accesscontrol.local1.debug \"01490000:7: RPC_OVER_HTTP_BKEND_BASIC_AUTH = $static::RPC_OVER_HTTP_BKEND_BASIC_AUTH\"\n log -noname accesscontrol.local1.debug \"01490000:7: EWS_BKEND_BASIC_AUTH = $static::EWS_BKEND_BASIC_AUTH\"\n }\n when ACCESS_ACL_ALLOWED {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX [HTTP::method] [HTTP::uri] [HTTP::header Content-Length]\"\n\n if { [ info exists f_rpc_over_http ] && $f_rpc_over_http == 1 } {\n if { $static::RPC_OVER_HTTP_BKEND_BASIC_AUTH == 0 } {\n if { [ info exists f_oa_magic_content_len ] && $f_oa_magic_content_len == 1 } {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Use this virtual $static::ACCESS_SECOND_VIRTUAL_NAME just once. Will be reset back after disconnection.\"\n use virtual $static::ACCESS_SECOND_VIRTUAL_NAME\n }\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Remove HTTP Auth header\"\n HTTP::header remove Authorization\n }\n }\n # MSFT Exchange's EWS request handler always requesting NTLM even the connection has been\n # already authenticated if there is a HTTP Basic Auth in the request.\n if { [ info exists f_exchange_web_service ] && $f_exchange_web_service == 1 } {\n if { $static::EWS_BKEND_BASIC_AUTH == 0 } {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Removing HTTP Basic Authorization header\"\n HTTP::header remove Authorization\n }\n }\n }\n\n when HTTP_REQUEST {\n set http_path [ string tolower [HTTP::path] ]\n set f_clientless_mode 0\n set f_alt_inactivity_timeout 0\n set f_rpc_over_http 0\n set f_exchange_web_service 0\n set f_auto_discover 0\n set f_activesync 0\n set f_offline_address_book 0\n set f_availability_service 0\n\n # Here put appropriate pool when necessary.\n switch -glob $http_path {\n \"/rpc/rpcproxy.dll\" {\n # Supports for RPC over HTTP. (Outlook Anywhere)\n set f_rpc_over_http 1\n }\n \"/autodiscover/autodiscover.xml\" {\n # Supports for Auto Discover protocol.\n set f_auto_discover 1\n # This request does not require long inactivity timeout.\n # Don't use this for now\n set f_alt_inactivity_timeout 0\n }\n \"/microsoft-server-activesync\" {\n # Supports for ActiveSync\n set f_activesync 1\n }\n \"/oab/*\" {\n # Supports for Offline Address Book\n set f_offline_address_book 1\n }\n \"/ews/*\" {\n # Support for Exchange Web Service\n # Outlook's Availability Service borrows this protocol.\n set f_exchange_web_service 1\n }\n \"/as/*\" {\n # Support for Availability Service.\n # do nothing for now. (Untested)\n set f_availability_service 1\n }\n default {\n return\n }\n }\n\n set f_reqside_set_sess_id 0\n set http_method [HTTP::method]\n set http_hdr_host [HTTP::host]\n set http_hdr_uagent [HTTP::header User-Agent]\n set src_ip [IP::remote_addr]\n set http_uri [HTTP::uri]\n set http_content_len [HTTP::header Content-Length]\n set MRHSession_cookie [HTTP::cookie value MRHSession]\n set auth_info_b64enc \"\"\n\n if { ! [ info exists PROFILE_POLICY_TIMEOUT ] } {\n set PROFILE_POLICY_TIMEOUT [PROFILE::access access_policy_timeout]\n }\n if { ! [ info exists PROFILE_MAX_SESS_TIMEOUT ] } {\n set PROFILE_MAX_SESS_TIMEOUT [PROFILE::access max_session_timeout]\n }\n if { ! [ info exists PROFILE_RESTRICT_SINGLE_IP ] } {\n set PROFILE_RESTRICT_SINGLE_IP 1\n }\n\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX method: $http_method\"\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Src IP: $src_ip\"\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX User-Agent: $http_hdr_uagent\"\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX HTTP uri: $http_uri\"\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX HTTP len: $http_content_len\"\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Restrict-to-single-client-ip: $PROFILE_RESTRICT_SINGLE_IP\"\n\n # First, do we have valid MRHSession cookie.\n if { $MRHSession_cookie != \"\" } {\n if { [ACCESS::session exists -state_allow -sid $MRHSession_cookie] } {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX HTTP *VALID* MRHSession cookie: $MRHSession_cookie\"\n } else {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX HTTP *INVALID* MRHSession cookie: $MRHSession_cookie\"\n set MRHSession_cookie \"\"\n HTTP::cookie remove MRHSession\n }\n }\n\n set http_hdr_auth [HTTP::header Authorization]\n if { [ string match -nocase {basic *} $http_hdr_auth ] != 1 } {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Not basic authentication. Ignore received auth header\"\n set http_hdr_auth \"\"\n }\n\n if { $http_hdr_auth == \"\" } {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX No/Empty Auth header\"\n # clean up the cookie\n if { $MRHSession_cookie == \"\" } {\n HTTP::respond 401 content $static::actsync_401_http_body WWW-Authenticate \"Basic realm=\\\"[HTTP::header Host]\\\"\" Set-Cookie $static::ACCESS_DEL_COOKIE_HDR_VAL Connection close\n return\n }\n # Do nothing if we have a valid MRHSession cookie.\n }\n\n set f_release_request 0\n # Optimization for clients which support cookie\n if { $MRHSession_cookie != \"\" } {\n # Default profile access setting is false\n if { $PROFILE_RESTRICT_SINGLE_IP == 0 } {\n set f_release_request 1\n }\n elseif { [ IP::addr $src_ip equals [ ACCESS::session data get -sid $MRHSession_cookie \"session.user.clientip\" ] ] } {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX source IP matched\"\n set f_release_request 1\n }\n else {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX source IP does not matched\"\n set MRHSession_cookie \"\"\n HTTP::cookie remove MRHSession\n }\n }\n\n if { $f_release_request == 0 } {\n set apm_username [ string tolower [HTTP::username]]\n set apm_password [HTTP::password]\n if { $PROFILE_RESTRICT_SINGLE_IP == 0 } {\n binary scan [md5 \"$apm_password\"] H* user_hash\n } else {\n binary scan [md5 \"$apm_password$src_ip\"] H* user_hash\n }\n\n set user_key {}\n append user_key $apm_username \".\" $user_hash\n unset user_hash\n\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX HTTP Hdr Auth: $http_hdr_auth\"\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX apm_username: $apm_username\"\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX user_key = $user_key\"\n set apm_cookie_list [ ACCESS::user getsid $user_key ]\n if { [ llength $apm_cookie_list ] != 0 } {\n set apm_cookie [ ACCESS::user getkey [ lindex $apm_cookie_list 0 ] ]\n if { $apm_cookie != \"\" } {\n HTTP::cookie insert name MRHSession value $apm_cookie\n set f_release_request 1\n }\n }\n }\n\n if { $http_content_len == $static::OA_MAGIC_CONTENT_LEN } {\n set f_oa_magic_content_len 1\n }\n\n set f_sleep_here 0\n set retry 1\n\n while { $f_release_request == 0 && $retry <= $static::POLICY_RESULT_POLL_MAXRETRYCYCLE } {\n\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Trying #$retry for $http_method $http_uri $http_content_len\"\n\n # This is also going to touch the table entry timer.\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Reading $user_key from table $static::ACCESS_USERKEY_TBLNAME\"\n\n set apm_cookie [table lookup -subtable $static::ACCESS_USERKEY_TBLNAME -notouch $user_key]\n if { $apm_cookie != \"\" } {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Verifying table cookie = $apm_cookie\"\n\n # Accessing SessionDB is not that cheap. Here we are trying to check known value.\n if { $apm_cookie == \"policy_authfailed\" || $apm_cookie == \"policy_inprogress\"} {\n # Do nothing\n } elseif { ! [ ACCESS::session exists $apm_cookie ] } {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX table cookie = $apm_cookie is out-of-sync\"\n # Table value is out of sync. Ignores it.\n set apm_cookie \"\"\n }\n }\n\n switch $apm_cookie {\n \"\" {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX NO APM Cookie found\"\n\n if { [ info exists f_oa_magic_content_len ] && $f_oa_magic_content_len == 1 } {\n # Outlook Anywhere request comes in pair. The one with 1G payload is not usable\n # for creating new session since 1G content-length is intended for client to upload\n # the data when needed.\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Start to wait $static::POLICY_RESULT_POLL_INTERVAL ms for request with magic content-len\"\n set f_sleep_here 1\n } elseif { [ info exists f_exchange_web_service ] && $f_exchange_web_service == 1 && $http_content_len > $static::FIRST_BIG_POST_CONTENT_LEN } {\n # Here we are getting large EWS request, which can't be used for starting new session\n # in clientless-mode. Have it here waiting for next smaller one.\n # We are holding the request here in HTTP filter, and HTTP filter automatically\n # clamping down the TCP window when necessary.\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Start to wait $static::POLICY_RESULT_POLL_INTERVAL ms for big EWS request\"\n set f_sleep_here 1\n } else {\n set apm_cookie \"policy_inprogress\"\n set f_reqside_set_sess_id 1\n set f_release_request 1\n }\n }\n \"policy_authfailed\" {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Found $user_key with AUTH_FAILED\"\n HTTP::respond 401 content $static::actsync_401_http_body\n set f_release_request 1\n }\n \"policy_inprogress\" {\n if { [ info exists f_activesync ] && ($f_activesync == 1) } {\n # For ActiveSync requests, aggressively starts new session.\n set f_reqside_set_sess_id 1\n set f_release_request 1\n } else {\n set f_sleep_here 1\n }\n }\n default {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Using MRHSession = $apm_cookie\"\n HTTP::header insert Cookie \"MRHSession=$apm_cookie\"\n set f_release_request 1\n }\n }\n\n if { $f_reqside_set_sess_id == 1 } {\n set f_reqside_set_sess_id 0\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Setting $user_key=$apm_cookie $PROFILE_POLICY_TIMEOUT $PROFILE_MAX_SESS_TIMEOUT\"\n set f_clientless_mode 1\n HTTP::cookie remove MRHSession\n HTTP::header insert \"clientless-mode\" 1\n HTTP::header insert \"username\" $apm_username\n HTTP::header insert \"password\" $apm_password\n table set -subtable $static::ACCESS_USERKEY_TBLNAME $user_key $apm_cookie $PROFILE_POLICY_TIMEOUT $PROFILE_MAX_SESS_TIMEOUT\n }\n\n if { $f_sleep_here == 1 } {\n set f_sleep_here 0\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Waiting $static::POLICY_RESULT_POLL_INTERVAL ms for $http_method $http_uri\"\n after $static::POLICY_RESULT_POLL_INTERVAL\n }\n\n incr retry\n }\n\n if { $f_release_request == 0 && $retry >= $static::POLICY_RESULT_POLL_MAXRETRYCYCLE } {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Policy did not finish in [expr { $static::POLICY_RESULT_POLL_MAXRETRYCYCLE * $static::POLICY_RESULT_POLL_INTERVAL } ] ms. Close connection for $http_method $http_uri\"\n\n table delete -subtable $static::ACCESS_USERKEY_TBLNAME $user_key\n ACCESS::disable\n TCP::close\n return\n }\n\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Releasing request $http_method $http_uri\"\n }\n\n when ACCESS_SESSION_STARTED {\n if { [ info exists user_key ] } {\n ACCESS::session data set \"session.user.uuid\" $user_key\n ACCESS::session data set \"session.user.microsoft-exchange-client\" 1\n\n if { [ info exists f_activesync ] && $f_activesync == 1 } {\n ACCESS::session data set \"session.user.microsoft-activesync\" 1\n }\n elseif { [ info exists f_auto_discover ] && $f_auto_discover == 1 } {\n ACCESS::session data set \"session.user.microsoft-autodiscover\" 1\n }\n elseif { [ info exists f_availability_service ] && $f_availability_service == 1 } {\n ACCESS::session data set \"session.user.microsoft-availabilityservice\" 1\n }\n elseif { [ info exists f_rpc_over_http ] && $f_rpc_over_http == 1 } {\n ACCESS::session data set \"session.user.microsoft-rpcoverhttp\" 1\n }\n elseif { [ info exists f_offline_address_book ] && $f_offline_address_book == 1 } {\n ACCESS::session data set \"session.user.microsoft-offlineaddressbook\" 1\n }\n elseif { [ info exists f_exchange_web_service ] && $f_exchange_web_service == 1 } {\n ACCESS::session data set \"session.user.microsoft-exchangewebservice\" 1\n }\n }\n if { [ info exists f_alt_inactivity_timeout ] && $f_alt_inactivity_timeout == 1 } {\n ACCESS::session data set \"session.inactivity_timeout\" $static::POLICY_ALT_INACTIVITY_TIMEOUT\n }\n }\n\n when HTTP_RESPONSE {\n if { [ info exists f_auto_discover ] && $f_auto_discover == 1 } {\n set content_len [ HTTP::header Content-Length ]\n if { $content_len > 0 } {\n HTTP::collect $content_len\n }\n }\n }\n when HTTP_RESPONSE_DATA {\n if { [ info exists f_auto_discover ] && $f_auto_discover == 1 } {\n if { [ regsub -line {<AuthPackage>Ntlm</AuthPackage>} [ HTTP::payload ] {<AuthPackage>Basic</AuthPackage>} payload ] != 0 } {\n HTTP::payload replace 0 $content_len $payload\n }\n }\n }\n when ACCESS_POLICY_COMPLETED {\n if { ! [ info exists user_key ] } {\n return\n }\n\n set user_key_value \"\"\n set f_delete_session 0\n set policy_result [ACCESS::policy result]\n set sid [ ACCESS::session sid ]\n\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX ACCESS_POLICY_COMPLETED: policy_result = \\\"$policy_result\\\" user_key = \\\"$user_key\\\" sid = \\\"$sid\\\"\"\n\n set inactivity_timeout [ACCESS::session data get \"session.inactivity_timeout\"]\n set max_sess_timeout [ACCESS::session data get \"session.max_session_timeout\"]\n if { $max_sess_timeout == \"\" } {\n set max_sess_timeout $PROFILE_MAX_SESS_TIMEOUT\n }\n\n switch $policy_result {\n \"allow\" {\n # We depends on this table record self-cleanup capability in order to\n # indirectly sync with session DB.\n set user_key_value $sid\n\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Result: Allow: $user_key => $sid $inactivity_timeout $max_sess_timeout\"\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX user_key_value = $user_key_value\"\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX sid = $sid\"\n }\n \"deny\" {\n # When necessary the admin here can check appropriate session variable\n # and decide what response more appropriate then this default response.\n ACCESS::respond 401 content $static::actsync_401_http_body Set-Cookie $static::ACCESS_DEL_COOKIE_HDR_VAL Connection close\n if { $static::POLICY_RESULT_CACHE_AUTHFAILED == 1 } {\n set user_key_value $static::POLICY_AUTHFAILED\n } else {\n set f_delete_session 1\n }\n }\n default {\n ACCESS::respond 503 content $static::actsync_503_http_body Connection close\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Got unsupported policy result for $user_key ($sid)\"\n set f_delete_session 1\n }\n }\n if { $user_key_value != \"\" } {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Setting $user_key => $user_key_value $inactivity_timeout $max_sess_timeout in table $static::ACCESS_USERKEY_TBLNAME\"\n\n table set -subtable $static::ACCESS_USERKEY_TBLNAME $user_key $user_key_value $inactivity_timeout $max_sess_timeout\n } else {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Deleting $user_key in table $static::ACCESS_USERKEY_TBLNAME\"\n\n table delete -subtable $static::ACCESS_USERKEY_TBLNAME $user_key\n }\n\n if { $f_delete_session == 1 } {\n ACCESS::session remove\n set f_delete_session 0\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Removing the session for $user_key.\"\n }\n }\ndefinition-signature feX9LM+vB6YOEdVF+EA1JtNyVkPaB7gwdW0JzaB083MXl4yPP2nZnjm+WAx3YQhsmLttq5UkPl1zHpr5H9cwJX1bu9BNMi/+n0bIqWOipDHhhSYQ+TH+a5jQUSeftISr52BSQxh0cQKZkzM3rFU/qRZn9D9Dbf0kDGiDC1KWwVosrdjp5tVHOiQXWx8zybbGPFfgBcIBE6IvOvGbh5ohebVL2ADZm0URRj2NM4ZvZ2T3C14k2rHGXnDdRsvhmf5USZ+FH1hoKtWRxqtFjkWIaqw8leenXeot1j2bdKy92/AVTC9oZj1HJN1ePuQo5v414zlUhMEtkVy/gaxvj1+vPQ==",
- "apiRawValues": {
- "verificationStatus": "signature-verified"
- }
- },
- {
- "kind": "tm:ltm:rule:rulestate",
- "name": "_sys_APM_Office365_SAML_BasicAuth",
- "partition": "Common",
- "fullPath": "/Common/_sys_APM_Office365_SAML_BasicAuth",
- "generation": 1,
- "selfLink": "https://localhost/mgmt/tm/ltm/rule/~Common~_sys_APM_Office365_SAML_BasicAuth?ver=12.1.2",
- "apiAnonymous": "nodelete nowrite \nwhen RULE_INIT {\n set static::ACCESS_LOG_ECP_PREFIX \"014d0002:7: ECP client\"\n }\n when HTTP_REQUEST {\n set http_path [string tolower [HTTP::path]]\n set http_hdr_auth [HTTP::header Authorization]\n set http_hdr_client_app [HTTP::header X-MS-Client-Application]\n set http_hdr_client_ip [HTTP::header X-MS-Forwarded-Client-IP]\n set MRHSession_cookie [HTTP::cookie value MRHSession]\n\n if { ($http_path == \"/saml/idp/profile/redirectorpost/sso\") &&\n ($http_hdr_client_app != \"\") &&\n ($http_hdr_client_app contains \"Microsoft.Exchange\") } {\n HTTP::uri \"/saml/idp/profile/ecp/sso\"\n } elseif { ($http_path != \"/saml/idp/profile/ecp/sso\") } {\n return\n }\n set f_saml_ecp_request 1\n unset http_path\n\n # If MRHSession cookie from client is present, skip further processing.\n if { $MRHSession_cookie != \"\" } {\n if { [ACCESS::session exists -state_allow -sid $MRHSession_cookie] } {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_ECP_PREFIX HTTP *VALID* MRHSession cookie: $MRHSession_cookie\"\n } else {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_ECP_PREFIX HTTP *INVALID* MRHSession cookie: $MRHSession_cookie\"\n }\n return\n }\n\n if { ($http_hdr_client_app != \"\") &&\n ($http_hdr_client_app contains \"Microsoft.Exchange\") &&\n ($http_hdr_client_ip != \"\") } {\n\t set src_ip $http_hdr_client_ip\n\t}\n unset http_hdr_client_app\n unset http_hdr_client_ip\n\n if { ! [ info exists src_ip ] } {\n set src_ip [IP::remote_addr]\n }\n\n # Only allow HTTP Basic Authentication.\n if { ($http_hdr_auth == \"\") || ([ string match -nocase {basic *} $http_hdr_auth ] != 1 ) } {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_ECP_PREFIX ECP request does not contain HTTP Basic Authorization header.\"\n unset http_hdr_auth\n return\n }\n\n set apm_username [ string tolower [HTTP::username] ]\n set apm_password [HTTP::password]\n\n binary scan [md5 \"$apm_password$src_ip\"] H* user_hash\n set user_key {}\n append user_key $apm_username \".\" $user_hash\n unset user_hash\n\n set apm_cookie_list [ ACCESS::user getsid $user_key ]\n if { [ llength $apm_cookie_list ] != 0 } {\n set apm_cookie [ ACCESS::user getkey [ lindex $apm_cookie_list 0 ] ]\n if { $apm_cookie != \"\" } {\n HTTP::cookie insert name MRHSession value $apm_cookie\n }\n }\n\n HTTP::header insert \"clientless-mode\" 1\n HTTP::header insert \"username\" $apm_username\n HTTP::header insert \"password\" $apm_password\n unset apm_username\n unset apm_password\n unset http_hdr_auth\n }\n\n when ACCESS_SESSION_STARTED {\n if { [ info exists f_saml_ecp_request ] && $f_saml_ecp_request == 1 } {\n if { [ info exists user_key ] } {\n ACCESS::session data set \"session.user.uuid\" $user_key\n }\n if { [ info exists src_ip ] } {\n ACCESS::session data set \"session.user.clientip\" $src_ip\n }\n }\n }\n\n when HTTP_RESPONSE {\n if { [ info exists f_saml_ecp_request ] && $f_saml_ecp_request == 1 } {\n unset f_saml_ecp_request\n unset apm_cookie\n }\n }\ndefinition-signature hbkbqtFWuaW9oegh6SzMveAg8WY7+tJBg32EgZs3djEixBoxjXoktrb/mcfl3FmsQXRgE6LgrZCeIvjqLdk/8/wq/4wnd4naYm2VALVoBPeETuCpWdmiyiwuvFC5G4VlYhqhYhRsx9mQhbRWm8/YvoBpvNnCCSdyx/wL+KcYQGU7Zv4woZrtruq4RiLCm6ohutAWdS2NbeIQHG37NFXT6wV6pR9EIqrkNetbXAdi6OZGuuthSXMSXMz64+CwkzpptxP3bhOsFvM/gq8FfWR8rsRJfxaHg+njkkgKSkH3TL7vhDnL3pXcHhH1/9P6qDU++YAyiXzppOlLHib33Rv0yw==",
- "apiRawValues": {
- "verificationStatus": "signature-verified"
- }
- },
- {
- "kind": "tm:ltm:rule:rulestate",
- "name": "_sys_APM_activesync",
- "partition": "Common",
- "fullPath": "/Common/_sys_APM_activesync",
- "generation": 1,
- "selfLink": "https://localhost/mgmt/tm/ltm/rule/~Common~_sys_APM_activesync?ver=12.1.2",
- "apiAnonymous": "nodelete nowrite \nwhen RULE_INIT {\n set static::actsync_401_http_body \"<html><title>Authentication Failed</title><body>Error: Authentication Failure</body></html>\"\n set static::actsync_503_http_body \"<html><title>Service is not available</title><body>Error: Service is not available</body></html>\"\n set static::ACCESS_LOG_PREFIX \"01490000:7:\"\n }\n when HTTP_REQUEST {\n set http_path [string tolower [HTTP::path]]\n set f_clientless_mode 0\n\n if { $http_path == \"/microsoft-server-activesync\" } {\n }\n elseif { $http_path == \"/autodiscover/autodiscover.xml\" } {\n set f_auto_discover 1\n }\n else return\n\n if { ! [ info exists src_ip ] } {\n set src_ip [IP::remote_addr]\n }\n if { ! [ info exists PROFILE_RESTRICT_SINGLE_IP ] } {\n set PROFILE_RESTRICT_SINGLE_IP \t 1\n }\n # Only allow HTTP Basic Authentication.\n set auth_info_b64enc \"\"\n set http_hdr_auth [HTTP::header Authorization]\n regexp -nocase {Basic (.*)} $http_hdr_auth match auth_info_b64enc\n if { $auth_info_b64enc == \"\" } {\n set http_hdr_auth \"\"\n }\n\n if { $http_hdr_auth == \"\" } {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX Empty/invalid HTTP Basic Authorization header\"\n HTTP::respond 401 content $static::actsync_401_http_body Connection close\n return\n }\n\n set MRHSession_cookie [HTTP::cookie value MRHSession]\n # Do we have valid MRHSession cookie.\n if { $MRHSession_cookie != \"\" } {\n if { [ACCESS::session exists -state_allow -sid $MRHSession_cookie] } {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX HTTP *VALID* MRHSession cookie: $MRHSession_cookie\"\n # Default profile access setting is false\n if { $PROFILE_RESTRICT_SINGLE_IP == 0 } {\n return\n }\n elseif { [ IP::addr $src_ip equals [ ACCESS::session data get -sid $MRHSession_cookie \"session.user.clientip\" ] ] } {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX source IP matched\"\n return\n }\n else {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX source IP does not matched\"\n }\n }\n else {\n log -noname accesscontrol.local1.debug \"$static::ACCESS_LOG_PREFIX HTTP *INVALID* MRHSession cookie: $MRHSession_cookie\"\n }\n set MRHSession_cookie \"\"\n HTTP::cookie remove MRHSession\n }\n\n set apm_username [ string tolower [HTTP::username] ]\n set apm_password [HTTP::password]\n\n if { $PROFILE_RESTRICT_SINGLE_IP == 0 } {\n binary scan [md5 \"$apm_password$\"] H* user_hash\n } else {\n binary scan [md5 \"$apm_password$src_ip\"] H* user_hash\n }\n set user_key {}\n append user_key $apm_username \".\" $user_hash\n unset user_hash\n\n set f_insert_clientless_mode 0\n set apm_cookie_list [ ACCESS::user getsid $user_key ]\n if { [ llength $apm_cookie_list ] != 0 } {\n set apm_cookie [ ACCESS::user getkey [ lindex $apm_cookie_list 0 ] ]\n if { $apm_cookie != \"\" } {\n HTTP::cookie insert name MRHSession value $apm_cookie\n } else {\n set f_insert_clientless_mode 1\n }\n } else {\n set f_insert_clientless_mode 1\n }\n\n if { $f_insert_clientless_mode == 1 } {\n HTTP::header insert \"clientless-mode\" 1\n HTTP::header insert \"username\" $apm_username\n HTTP::header insert \"password\" $apm_password\n }\n unset f_insert_clientless_mode\n }\n when ACCESS_SESSION_STARTED {\n if { [ info exists user_key ] } {\n ACCESS::session data set \"session.user.uuid\" $user_key\n ACCESS::session data set \"session.user.microsoft-exchange-client\" 1\n ACCESS::session data set \"session.user.activesync\" 1\n if { [ info exists f_auto_discover ] && $f_auto_discover == 1 } {\n set f_auto_discover 0\n ACCESS::session data set \"session.user.microsoft-autodiscover\" 1\n }\n }\n }\n when ACCESS_POLICY_COMPLETED {\n if { ! [ info exists user_key ] } {\n return\n }\n\n set policy_result [ACCESS::policy result]\n switch $policy_result {\n \"allow\" {\n }\n \"deny\" {\n ACCESS::respond 401 content $static::actsync_401_http_body Connection close\n ACCESS::session remove\n }\n default {\n ACCESS::respond 503 content $static::actsync_503_http_body Connection close\n ACCESS::session remove\n }\n }\n\n unset user_key\n }\ndefinition-signature jaSGZiyISQHfZu1LLt3cmS5U/vOKRUOkQZ6ZHyc0fdnKtv+VsbRUIgzQwpV1dsN+wzuFhWxEsvSzleGZSrRmlBRbO63jjeBg9jzCqj8/hfOHhPCMSP59w3/opbCnAlqt+TyCFDY1cJ6/b/SWS+irPeAt6gAl0kmw2TIBlJvxm93zTu8aWyBgQV+205oBEPjYVHjaFPGFPk5+5LnZWrBO1fC0jBqpkCT+LWxBGeVHRTC8sGup0SuhXFPfWu3oB1uTTo5SKr8ZxRUFUrLTHNj/W8RKWg2C34958TFngZNQhpxg+XGWEFJXpCkeM2fVJXN3mymRWxuanYLU26ZKXuNNxw==",
- "apiRawValues": {
- "verificationStatus": "signature-verified"
- }
- },
- {
- "kind": "tm:ltm:rule:rulestate",
- "name": "_sys_auth_krbdelegate",
- "partition": "Common",
- "fullPath": "/Common/_sys_auth_krbdelegate",
- "generation": 1,
- "selfLink": "https://localhost/mgmt/tm/ltm/rule/~Common~_sys_auth_krbdelegate?ver=12.1.2",
- "apiAnonymous": "nodelete nowrite \nwhen HTTP_REQUEST {\n set thecert \"\"\n set ckname F5KRBAUTH\n set ckpass abc123\n set authprofiles [PROFILE::list auth]\n # Search the auth profiles for the krbdelegate(7) and grab cookie info\n foreach profname $authprofiles {\n if { [PROFILE::auth $profname type] == 7 } {\n set tmpckname [PROFILE::auth $profname cookie_name]\n set tmpckpass [PROFILE::auth $profname cookie_key]\n if {[PROFILE::auth $profname cookie_name] != \"\" } {\n set ckname $tmpckname\n set ckpass $tmpckpass\n break\n }\n }\n }\n set seecookie 0\n set insertcookie 0\n # check for the cookie\n if {not [info exists tmm_auth_http_sids(krbdelegate)]} {\n set tmm_auth_sid [AUTH::start pam default_krbdelegate]\n set tmm_auth_http_sids(krbdelegate) $tmm_auth_sid\n AUTH::subscribe $tmm_auth_sid\n } else {\n set tmm_auth_sid $tmm_auth_http_sids(krbdelegate)\n }\n if { [PROFILE::exists clientssl] } {\n set certcmd \"SSL::cert 0\"\n set thecert [ eval $certcmd ]\n }\n if { $thecert == \"\" } {\n # if no cert, assume old kerb delegation\n # if there is no Authorization header and no cookie, get one.\n if { ([HTTP::header Authorization] == \"\") and\n (not [HTTP::cookie exists $ckname])} {\n HTTP::respond 401 WWW-Authenticate Negotiate\n return\n }\n }\n if {[HTTP::cookie exists $ckname]} {\n set ckval [HTTP::cookie decrypt $ckname $ckpass]\n AUTH::username_credential $tmm_auth_sid \"cookie\"\n AUTH::password_credential $tmm_auth_sid $ckval\n set seecookie 1\n } else {\n if { $thecert == \"\" } {\n # Kerberos Delegation - set username\n # Strip off the Negotiate before the base64d goodness\n AUTH::username_credential $tmm_auth_sid [lindex [HTTP::header Authorization] 1]\n }\n else {\n # Protocol Transition - set ttm_auth_sid\n AUTH::username_credential $tmm_auth_sid \"krpprottran\"\n AUTH::cert_credential $tmm_auth_sid $thecert\n }\n AUTH::password_credential $tmm_auth_sid \"xxxx\"\n }\n AUTH::authenticate $tmm_auth_sid\n\n if {not [info exists tmm_auth_http_collect_count]} {\n HTTP::collect\n set tmm_auth_http_successes 0\n set tmm_auth_http_collect_count 1\n } else {\n incr tmm_auth_http_collect_count\n }\n }\n when AUTH_RESULT {\n if {not [info exists tmm_auth_http_sids(krbdelegate)] or \\\n ($tmm_auth_http_sids(krbdelegate) != [AUTH::last_event_session_id]) or \\\n (not [info exists tmm_auth_http_collect_count])} {\n return\n }\n if {[AUTH::status] == 0} {\n incr tmm_auth_http_successes\n }\n # If multiple auth sessions are pending and\n # one failure results in termination and this is a failure\n # or enough successes have now occurred\n if {([array size tmm_auth_http_sids] > 1) and \\\n ((not [info exists tmm_auth_http_sufficient_successes] or \\\n ($tmm_auth_http_successes >= $tmm_auth_http_sufficient_successes)))} {\n # Abort the other auth sessions\n foreach {type sid} [array get tmm_auth_http_sids] {\n unset tmm_auth_http_sids($type)\n if {($type ne \"krbdelegate\") and ($sid != -1)} {\n AUTH::abort $sid\n incr tmm_auth_http_collect_count -1\n }\n }\n }\n # If this is the last outstanding auth then either\n # release or respond to this session\n incr tmm_auth_http_collect_count -1\n if {$tmm_auth_http_collect_count == 0} {\n unset tmm_auth_http_collect_count\n if { [AUTH::status] == 0 } {\n array set pamout [AUTH::response_data]\n HTTP::header replace Authorization \"Negotiate $pamout(krbdelegate:attr:SPNEGO)\"\n if {$seecookie == 0} {\n set insertcookie $pamout(krbdelegate:attr:KRB5CCNAME)\n }\n HTTP::release\n } else {\n HTTP::respond 401 WWW-Authenticate Negotiate \"Set-Cookie\" \"$ckname= ; expires=Wed Dec 31 16:00:00 1969\"\n }\n }\n }\n # When the response goes out, if we need to insert a cookie, do it.\n when HTTP_RESPONSE {\n if {$insertcookie != 0} {\n HTTP::cookie insert name $ckname value $insertcookie\n HTTP::cookie encrypt $ckname $ckpass\n }\n }\ndefinition-signature mILi/VF69pqpNg+XJ4nClBl8+zq4v9FsiBYnKjX3zLZOChRWKt5CwkwpsbCRzx5DnvHglp9uXDYrjqcAFvM5aRA2R5LAhKQSq6pVPwHdZUJluYv0t3n6af/vSyc7KYsx6gga1jLuiFZaEzmG8c+r4igxwEee874iQBjYaWhHyKYGhlhly/Ez2FE9DNRpRepz2sq/jaKzEmmMod3CCXurXVGlC/Pk8qnbNid1yC15DGosrAKW1d8lhYbVBaXVQ1ahrr/UPYnDdHB1BiWUzRSS4uOKuUyUmT/xPI14/Nwv8zdFvlu+AnnD543zH6KhdSHhJ3zCVy2HSZ5wPuN3YswcBA==",
- "apiRawValues": {
- "verificationStatus": "signature-verified"
- }
- },
- {
- "kind": "tm:ltm:rule:rulestate",
- "name": "_sys_auth_ldap",
- "partition": "Common",
- "fullPath": "/Common/_sys_auth_ldap",
- "generation": 1,
- "selfLink": "https://localhost/mgmt/tm/ltm/rule/~Common~_sys_auth_ldap?ver=12.1.2",
- "apiAnonymous": "nodelete nowrite \nwhen HTTP_REQUEST {\n if {not [info exists tmm_auth_http_sids(ldap)]} {\n set tmm_auth_sid [AUTH::start pam default_ldap]\n set tmm_auth_http_sids(ldap) $tmm_auth_sid\n if {[info exists tmm_auth_subscription]} {\n AUTH::subscribe $tmm_auth_sid\n }\n } else {\n set tmm_auth_sid $tmm_auth_http_sids(ldap)\n }\n AUTH::username_credential $tmm_auth_sid [HTTP::username]\n AUTH::password_credential $tmm_auth_sid [HTTP::password]\n AUTH::authenticate $tmm_auth_sid\n\n if {not [info exists tmm_auth_http_collect_count]} {\n HTTP::collect\n set tmm_auth_http_successes 0\n set tmm_auth_http_collect_count 1\n } else {\n incr tmm_auth_http_collect_count\n }\n }\n when AUTH_RESULT {\n if {not [info exists tmm_auth_http_sids(ldap)] or \\\n ($tmm_auth_http_sids(ldap) != [AUTH::last_event_session_id]) or \\\n (not [info exists tmm_auth_http_collect_count])} {\n return\n }\n if {[AUTH::status] == 0} {\n incr tmm_auth_http_successes\n }\n # If multiple auth sessions are pending and\n # one failure results in termination and this is a failure\n # or enough successes have now occurred\n if {([array size tmm_auth_http_sids] > 1) and \\\n ((not [info exists tmm_auth_http_sufficient_successes] or \\\n ($tmm_auth_http_successes >= $tmm_auth_http_sufficient_successes)))} {\n # Abort the other auth sessions\n foreach {type sid} [array get tmm_auth_http_sids] {\n unset tmm_auth_http_sids($type)\n if {($type ne \"ldap\") and ($sid != -1)} {\n AUTH::abort $sid\n incr tmm_auth_http_collect_count -1\n }\n }\n }\n\n # If this is the last outstanding auth then either\n # release or respond to this session\n incr tmm_auth_http_collect_count -1\n if {$tmm_auth_http_collect_count == 0} {\n unset tmm_auth_http_collect_count\n if {[AUTH::status] == 0} {\n HTTP::release\n } else {\n HTTP::respond 401\n }\n }\n }\ndefinition-signature d+BwFQlDUIY7Jf5jfpCFuEkwn/jJ+3ZjEQLQej71v7TxzQpxJps4rDaU2YxBNyM9CTAIWT3DRdLqYZAnIHqVpOIRIE/ALk0v0o79IxJIES4nUTE9UTHKM8GN13VBkihf1I8O9DmwOHgB1s0HV+A/dy5mDiyBFpbamyv6rJCASItyPp2Y7iKfcMHEFe+qgvZFA2B131QVAosIn6pFribwU5LSvArIul5pIgX1tcuI+BLPkaJy6xoN9AQcah/ufgUCOmAvkc/K5LteBkxG3ItldFNaxOtAPXDt5IDhrBuMxsvRs7P+vMbfNiGb+QSakipxML2EmwCRiacxQTZn/0DDrw==",
- "apiRawValues": {
- "verificationStatus": "signature-verified"
- }
- },
- {
- "kind": "tm:ltm:rule:rulestate",
- "name": "_sys_auth_radius",
- "partition": "Common",
- "fullPath": "/Common/_sys_auth_radius",
- "generation": 1,
- "selfLink": "https://localhost/mgmt/tm/ltm/rule/~Common~_sys_auth_radius?ver=12.1.2",
- "apiAnonymous": "nodelete nowrite \nwhen HTTP_REQUEST {\n if {not [info exists tmm_auth_http_sids(radius)]} {\n set tmm_auth_sid [AUTH::start pam default_radius]\n set tmm_auth_http_sids(radius) $tmm_auth_sid\n if {[info exists tmm_auth_subscription]} {\n AUTH::subscribe $tmm_auth_sid\n }\n } else {\n set tmm_auth_sid $tmm_auth_http_sids(radius)\n }\n AUTH::username_credential $tmm_auth_sid [HTTP::username]\n AUTH::password_credential $tmm_auth_sid [HTTP::password]\n AUTH::authenticate $tmm_auth_sid\n\n if {not [info exists tmm_auth_http_collect_count]} {\n HTTP::collect\n set tmm_auth_http_successes 0\n set tmm_auth_http_collect_count 1\n } else {\n incr tmm_auth_http_collect_count\n }\n }\n when AUTH_RESULT {\n if {not [info exists tmm_auth_http_sids(radius)] or \\\n ($tmm_auth_http_sids(radius) != [AUTH::last_event_session_id]) or \\\n (not [info exists tmm_auth_http_collect_count])} {\n return\n }\n if {[AUTH::status] == 0} {\n incr tmm_auth_http_successes\n }\n # If multiple auth sessions are pending and\n # one failure results in termination and this is a failure\n # or enough successes have now occurred\n if {([array size tmm_auth_http_sids] > 1) and \\\n ((not [info exists tmm_auth_http_sufficient_successes] or \\\n ($tmm_auth_http_successes >= $tmm_auth_http_sufficient_successes)))} {\n # Abort the other auth sessions\n foreach {type sid} [array get tmm_auth_http_sids] {\n unset tmm_auth_http_sids($type)\n if {($type ne \"radius\") and ($sid != -1)} {\n AUTH::abort $sid\n incr tmm_auth_http_collect_count -1\n }\n }\n }\n # If this is the last outstanding auth then either\n # release or respond to this session\n incr tmm_auth_http_collect_count -1\n if {$tmm_auth_http_collect_count == 0} {\n unset tmm_auth_http_collect_count\n if { [AUTH::status] == 0 } {\n HTTP::release\n } else {\n HTTP::respond 401\n }\n }\n }\ndefinition-signature m0ZhOZjHe7lvErKAbir601WnOlWEPfEh/Qc5wayIKc6B16E4IF4F+Jh8QGdYRgNOrk3Qc3Gid6zQZcCcbIzfR3NKOxfVX+tl0KfiEN1lqBQMLu3/AooE+/YTC5oCPuvV6TK/JHRLiMiexYgRx6G+AFU7xg/w/YzgvV0bjsd9OxdIUB3WO5JOUweCG6q24zhVgN+3QIIiBnuKaMeHtRSw29xVpuQqgNKVG7RaPu15loA0xp8s4fxMF0YHDYPuQuu0PLfvYTqsSP0cI3Kdbsg5JgAIAcdHlFIW3NaUJBPMGRLOAvSGibIMVhFmUfC52LNQ4iORtokInaHyYUtPQ/yHIw==",
- "apiRawValues": {
- "verificationStatus": "signature-verified"
- }
- },
- {
- "kind": "tm:ltm:rule:rulestate",
- "name": "_sys_auth_ssl_cc_ldap",
- "partition": "Common",
- "fullPath": "/Common/_sys_auth_ssl_cc_ldap",
- "generation": 1,
- "selfLink": "https://localhost/mgmt/tm/ltm/rule/~Common~_sys_auth_ssl_cc_ldap?ver=12.1.2",
- "apiAnonymous": "nodelete nowrite \nwhen CLIENT_ACCEPTED {\n set tmm_auth_ssl_cc_ldap_sid 0\n set tmm_auth_ssl_cc_ldap_done 0\n }\n when CLIENTSSL_CLIENTCERT {\n if {[SSL::cert count] == 0} {\n return\n }\n set tmm_auth_ssl_cc_ldap_done 0\n if {$tmm_auth_ssl_cc_ldap_sid == 0} {\n set tmm_auth_ssl_cc_ldap_sid [AUTH::start pam default_ssl_cc_ldap]\n if {[info exists tmm_auth_subscription]} {\n AUTH::subscribe $tmm_auth_ssl_cc_ldap_sid\n }\n }\n AUTH::cert_credential $tmm_auth_ssl_cc_ldap_sid [SSL::cert 0]\n AUTH::authenticate $tmm_auth_ssl_cc_ldap_sid\n SSL::handshake hold\n }\n when CLIENTSSL_HANDSHAKE {\n set tmm_auth_ssl_cc_ldap_done 1\n }\n when AUTH_RESULT {\n if {[info exists tmm_auth_ssl_cc_ldap_sid] and \\\n ($tmm_auth_ssl_cc_ldap_sid == [AUTH::last_event_session_id])} {\n set tmm_auth_status [AUTH::status]\n if {$tmm_auth_status == 0} {\n set tmm_auth_ssl_cc_ldap_done 1\n SSL::handshake resume\n } elseif {$tmm_auth_status != -1 || $tmm_auth_ssl_cc_ldap_done == 0} {\n reject\n }\n }\n }\ndefinition-signature O2ctQteahGXIbb4l9/vERvtwKeyl51hGNNGgccddtwme/6opsgPJu5gaiVGUXYYDkbcjFdfgDTU9oDPkLl5JmZ3VcExnlnvxLpVDuM/fKqxbgoRQZ6nl0mEceHmWxRY9AlhrODtJZxNRbQBu4OOCYS+yWioKgKkrBwQaEoIFBPSSUmeIPZHTXdNnLXwxxkY75O5Sc4sTkYQ3BvTrlu/frnwweed6qw9bWatN865CIzP3Spq0ELY0Q4bvxo+0JdLheFv2BfKUethrjEXcxiD9Ros0fnvQ83qaCHqt18xEyhakdKAf4gKZJt9UApkRn+1ZTPNJFzgQyPPYQGvU/y9JAQ==",
- "apiRawValues": {
- "verificationStatus": "signature-verified"
- }
- },
- {
- "kind": "tm:ltm:rule:rulestate",
- "name": "_sys_auth_ssl_crldp",
- "partition": "Common",
- "fullPath": "/Common/_sys_auth_ssl_crldp",
- "generation": 1,
- "selfLink": "https://localhost/mgmt/tm/ltm/rule/~Common~_sys_auth_ssl_crldp?ver=12.1.2",
- "apiAnonymous": "nodelete nowrite \nwhen CLIENT_ACCEPTED {\n set tmm_auth_ssl_crldp_sid 0\n set tmm_auth_ssl_crldp_done 0\n }\n when CLIENTSSL_CLIENTCERT {\n if {[SSL::cert count] == 0} {\n return\n }\n set tmm_auth_ssl_crldp_done 0\n if {$tmm_auth_ssl_crldp_sid == 0} {\n set tmm_auth_ssl_crldp_sid [AUTH::start pam default_ssl_crldp]\n if {[info exists tmm_auth_subscription]} {\n AUTH::subscribe $tmm_auth_ssl_crldp_sid\n }\n }\n AUTH::cert_credential $tmm_auth_ssl_crldp_sid [SSL::cert 0]\n AUTH::cert_issuer_credential $tmm_auth_ssl_crldp_sid [SSL::cert issuer 0]\n AUTH::authenticate $tmm_auth_ssl_crldp_sid\n SSL::handshake hold\n }\n when CLIENTSSL_HANDSHAKE {\n set tmm_auth_ssl_crldp_done 1\n }\n when AUTH_RESULT {\n if {[info exists tmm_auth_ssl_crldp_sid] and \\\n ($tmm_auth_ssl_crldp_sid == [AUTH::last_event_session_id])} {\n set tmm_auth_status [AUTH::status]\n if {$tmm_auth_status == 0} {\n set tmm_auth_ssl_crldp_done 1\n SSL::handshake resume\n } elseif {$tmm_auth_status != -1 || $tmm_auth_ssl_crldp_done == 0} {\n reject\n }\n }\n }\ndefinition-signature PhTy24ctbtx0d4kFIFO6+Fr9W3a/7OetZ7nlh18mpH6BB9t1dB2LNayATLZ3q4iT4wLLdyyxA+g4jdrNBeuZVpM2JOBlhwcyIcTBFLQN4H/mkWErH4Vz9ZMxVduUxHN6fIh8zDQuJJYoRVlz087/vIVvk6ygbPwS9KqTdYBa3Nn79YmIVn1NXKyVoCg/40EZ3iNklwIfKctwqGU5ELKbhwk8CGCvexDbJcwRqv8nAETC4B/nc61jpGcihpOJchJFb3buTiAKwfxSYkx90UG4EnwsyA4GqUNIfS02Dj5rYSMH403CNNBKG2AA+ZGy9by2O3bb9lq/VNGPDmsnMEff1g==",
- "apiRawValues": {
- "verificationStatus": "signature-verified"
- }
- },
- {
- "kind": "tm:ltm:rule:rulestate",
- "name": "_sys_auth_ssl_ocsp",
- "partition": "Common",
- "fullPath": "/Common/_sys_auth_ssl_ocsp",
- "generation": 1,
- "selfLink": "https://localhost/mgmt/tm/ltm/rule/~Common~_sys_auth_ssl_ocsp?ver=12.1.2",
- "apiAnonymous": "nodelete nowrite \nwhen CLIENT_ACCEPTED {\n set tmm_auth_ssl_ocsp_sid 0\n set tmm_auth_ssl_ocsp_done 0\n }\n when CLIENTSSL_CLIENTCERT {\n if {[SSL::cert count] == 0} {\n return\n }\n set tmm_auth_ssl_ocsp_done 0\n if {$tmm_auth_ssl_ocsp_sid == 0} {\n set tmm_auth_ssl_ocsp_sid [AUTH::start pam default_ssl_ocsp]\n if {[info exists tmm_auth_subscription]} {\n AUTH::subscribe $tmm_auth_ssl_ocsp_sid\n }\n }\n AUTH::cert_credential $tmm_auth_ssl_ocsp_sid [SSL::cert 0]\n AUTH::cert_issuer_credential $tmm_auth_ssl_ocsp_sid [SSL::cert issuer 0]\n AUTH::authenticate $tmm_auth_ssl_ocsp_sid\n SSL::handshake hold\n }\n when CLIENTSSL_HANDSHAKE {\n set tmm_auth_ssl_ocsp_done 1\n }\n when AUTH_RESULT {\n if {[info exists tmm_auth_ssl_ocsp_sid] and \\\n ($tmm_auth_ssl_ocsp_sid == [AUTH::last_event_session_id])} {\n set tmm_auth_status [AUTH::status]\n if {$tmm_auth_status == 0} {\n set tmm_auth_ssl_ocsp_done 1\n SSL::handshake resume\n } elseif {$tmm_auth_status != -1 || $tmm_auth_ssl_ocsp_done == 0} {\n reject\n }\n }\n }\ndefinition-signature mHRNmZiszQh85wPdt5PxM2ASLXyW47LE3CM5tS11M1lTe9ttjlWDc6yBdy5VFjC6H2O2DJ+fyrBmeMen16RVWPhUoq8YOJC9ZiuuLc6T/rW9GsopSHFPBLRjL/EPulNkuGB/DtxYvwXfXOyBuVRw+E/TYkKVi6cIrk4+e9mOnCo9biWycrRfemWwYyDCqouEaDK2huYnQ1rKyYAvIWxfd3rXXw6+jdpuvL/6RFXJjaLTJ/f1pVMHP5kuI2K/dkeojqDDgr1d1GnjIFFX2Azh5qZpaL1urPfn/M6C/7sXzew1PU0ow10MQtKKqAno5IpEpn+cPZlCs3d2Y1khtMqUug==",
- "apiRawValues": {
- "verificationStatus": "signature-verified"
- }
- },
- {
- "kind": "tm:ltm:rule:rulestate",
- "name": "_sys_auth_tacacs",
- "partition": "Common",
- "fullPath": "/Common/_sys_auth_tacacs",
- "generation": 1,
- "selfLink": "https://localhost/mgmt/tm/ltm/rule/~Common~_sys_auth_tacacs?ver=12.1.2",
- "apiAnonymous": "nodelete nowrite \nwhen HTTP_REQUEST {\n if {not [info exists tmm_auth_http_sids(tacacs)]} {\n set tmm_auth_sid [AUTH::start pam default_tacacs]\n set tmm_auth_http_sids(tacacs) $tmm_auth_sid\n if {[info exists tmm_auth_subscription]} {\n AUTH::subscribe $tmm_auth_sid\n }\n } else {\n set tmm_auth_sid $tmm_auth_http_sids(tacacs)\n }\n AUTH::username_credential $tmm_auth_sid [HTTP::username]\n AUTH::password_credential $tmm_auth_sid [HTTP::password]\n AUTH::authenticate $tmm_auth_sid\n\n if {not [info exists tmm_auth_http_collect_count]} {\n HTTP::collect\n set tmm_auth_http_successes 0\n set tmm_auth_http_collect_count 1\n } else {\n incr tmm_auth_http_collect_count\n }\n }\n when AUTH_RESULT {\n if {not [info exists tmm_auth_http_sids(tacacs)] or \\\n ($tmm_auth_http_sids(tacacs) != [AUTH::last_event_session_id]) or \\\n (not [info exists tmm_auth_http_collect_count])} {\n return\n }\n if {[AUTH::status] == 0} {\n incr tmm_auth_http_successes\n }\n # If multiple auth sessions are pending and\n # one failure results in termination and this is a failure\n # or enough successes have now occurred\n if {([array size tmm_auth_http_sids] > 1) and \\\n ((not [info exists tmm_auth_http_sufficient_successes] or \\\n ($tmm_auth_http_successes >= $tmm_auth_http_sufficient_successes)))} {\n # Abort the other auth sessions\n foreach {type sid} [array get tmm_auth_http_sids] {\n unset tmm_auth_http_sids($type)\n if {($type ne \"tacacs\") and ($sid != -1)} {\n AUTH::abort $sid\n incr tmm_auth_http_collect_count -1\n }\n }\n }\n # If this is the last outstanding auth then either\n # release or respond to this session\n incr tmm_auth_http_collect_count -1\n if {$tmm_auth_http_collect_count == 0} {\n unset tmm_auth_http_collect_count\n if { [AUTH::status] == 0 } {\n HTTP::release\n } else {\n HTTP::respond 401\n }\n }\n }\ndefinition-signature GHNO23blFC/AnIkRk9DSySYK2LiesD7h2DliAMIsVIjBk/RFL8XvZ+8WuKMVibuCiAhPWWvUu6nKsTnk9pX5/kc4yV6qRHcaaO+UaqT1/KQZsVXShCf0YCzqjRQIduJhUFFn0MUDhDmo/8ti0Upo6loKBxW3TODx5y8Jf3dTKmX2oRMfrkiMEyVtv38O7MDwJ1H5/xF2z1r2+nWGUJThZq/ILpfzcdnI7X5j/PxnAGuL1zciRIZ/0RIyMvYch0GaoXaKLVaONzDm0nHEJ+hZ7Vp8mQZiRitc8MGs1Ku9yLamxosUFAdRVnNQOLXGrlvEm94oU6XR3mq0oeqx9+dnOQ==",
- "apiRawValues": {
- "verificationStatus": "signature-verified"
- }
- },
- {
- "kind": "tm:ltm:rule:rulestate",
- "name": "_sys_https_redirect",
- "partition": "Common",
- "fullPath": "/Common/_sys_https_redirect",
- "generation": 1,
- "selfLink": "https://localhost/mgmt/tm/ltm/rule/~Common~_sys_https_redirect?ver=12.1.2",
- "apiAnonymous": "nodelete nowrite \nwhen HTTP_REQUEST {\n HTTP::redirect https://[getfield [HTTP::host] \":\" 1][HTTP::uri]\n }\ndefinition-signature mwyl4XlRKRMQc0prWs7RtpgPcNfocOKb+MaFwAnQgAuUZZyG68OaGZsOCN3poUOFdHOc6fk2XAdGRmTRiP/7BCT7thsOX5zLFzA1N1wcr57KWVzEZt3ezxVXn2Z974OmbWm7P5Lclcr7N3adrLJMWfyfPPVF1tUYn0IQPD2QNMmfbcbr1oCuO93n/5dn0s6/EacHZGG53hVibW7xQuJXdMtoQ6ArSZ4U3n4vCDTb6NLYbAj6PirVzKY2pcsWFHFUSVrphSFwERc8+0XGHUE6Cb3ihzygoZc2cQ5jk3frFY70MkDluPTShFRbHd7PlMPRezrfkVZVeUHA/iBPcYcD+w==",
- "apiRawValues": {
- "verificationStatus": "signature-verified"
- }
- },
- {
- "kind": "tm:ltm:rule:rulestate",
- "name": "foo",
- "partition": "Common",
- "fullPath": "/Common/foo",
- "generation": 94,
- "selfLink": "https://localhost/mgmt/tm/ltm/rule/~Common~foo?ver=12.1.2",
- "apiAnonymous": "when RULE_INIT {\n set static::FormBaseURL \"/sp-ofba-form\"\n set static::FormReturnURL \"/sp-ofba-completed\"\n set static::HeadAuthReq \"X-FORMS_BASED_AUTH_REQUIRED\"\n set static::HeadAuthRet \"X-FORMS_BASED_AUTH_RETURN_URL\"\n set static::HeadAuthSize \"X-FORMS_BASED_AUTH_DIALOG_SIZE\"\n set static::HeadAuthSizeVal \"800x600\"\n set static::ckname \"MRHSession_SP\"\n set static::Basic_Realm_Text \"SharePoint Authentication\"\n}\n\nwhen HTTP_REQUEST {\n set apmsessionid [HTTP::cookie value MRHSession]\n}\n\nwhen HTTP_RESPONSE {\n # Insert persistent cookie for html content type and private session\n}"
- }
-]
diff --git a/test/units/modules/network/f5/fixtures/load_ltm_monitor_http.json b/test/units/modules/network/f5/fixtures/load_ltm_monitor_http.json
deleted file mode 100644
index 79121b2b96..0000000000
--- a/test/units/modules/network/f5/fixtures/load_ltm_monitor_http.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
- "kind": "tm:ltm:monitor:http:httpstate",
- "name": "asdf",
- "partition": "Common",
- "fullPath": "/Common/asdf",
- "generation": 0,
- "selfLink": "https://localhost/mgmt/tm/ltm/monitor/http/~Common~asdf?ver=13.0.0",
- "adaptive": "disabled",
- "adaptiveDivergenceType": "relative",
- "adaptiveDivergenceValue": 25,
- "adaptiveLimit": 200,
- "adaptiveSamplingTimespan": 300,
- "defaultsFrom": "/Common/http",
- "description": "this is a description",
- "destination": "1.1.1.1:389",
- "interval": 5,
- "ipDscp": 0,
- "manualResume": "disabled",
- "password": "$M$7T$DpzEUVHt5rKkAfqrBh1PTA==",
- "recv": "hello world",
- "reverse": "enabled",
- "send": "GET /\\r\\n",
- "timeUntilUp": 0,
- "timeout": 16,
- "transparent": "disabled",
- "upInterval": 0,
- "username": "john"
-}
diff --git a/test/units/modules/network/f5/fixtures/load_ltm_monitor_https.json b/test/units/modules/network/f5/fixtures/load_ltm_monitor_https.json
deleted file mode 100644
index ff4f53f277..0000000000
--- a/test/units/modules/network/f5/fixtures/load_ltm_monitor_https.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "kind": "tm:ltm:monitor:https:httpsstate",
- "name": "asdf",
- "partition": "Common",
- "fullPath": "/Common/asdf",
- "generation": 0,
- "selfLink": "https://localhost/mgmt/tm/ltm/monitor/https/~Common~asdf?ver=13.0.0",
- "adaptive": "disabled",
- "adaptiveDivergenceType": "relative",
- "adaptiveDivergenceValue": 25,
- "adaptiveLimit": 200,
- "adaptiveSamplingTimespan": 300,
- "cipherlist": "DEFAULT:+SHA:+3DES:+kEDH",
- "compatibility": "enabled",
- "defaultsFrom": "/Common/https",
- "description": "this is a description",
- "destination": "1.1.1.1:389",
- "interval": 5,
- "ipDscp": 0,
- "manualResume": "disabled",
- "password": "$M$7F$+F0VTCeKM4LbGkpC/u8pwg==",
- "recv": "hello world",
- "reverse": "disabled",
- "send": "GET /\\r\\n",
- "timeUntilUp": 0,
- "timeout": 16,
- "transparent": "disabled",
- "upInterval": 0,
- "username": "john"
-}
diff --git a/test/units/modules/network/f5/fixtures/load_ltm_monitor_tcp.json b/test/units/modules/network/f5/fixtures/load_ltm_monitor_tcp.json
deleted file mode 100644
index fb9572f7e7..0000000000
--- a/test/units/modules/network/f5/fixtures/load_ltm_monitor_tcp.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "kind": "tm:ltm:monitor:tcp:tcpstate",
- "name": "foo",
- "partition": "Common",
- "fullPath": "/Common/foo",
- "generation": 0,
- "selfLink": "https://localhost/mgmt/tm/ltm/monitor/tcp/~Common~foo?ver=12.1.0",
- "adaptive": "disabled",
- "adaptiveDivergenceType": "relative",
- "adaptiveDivergenceValue": 25,
- "adaptiveLimit": 200,
- "adaptiveSamplingTimespan": 300,
- "defaultsFrom": "/Common/tcp",
- "destination": "10.10.10.10:80",
- "interval": 20,
- "ipDscp": 0,
- "manualResume": "disabled",
- "recv": "this is a receive string",
- "reverse": "disabled",
- "send": "this is a send string",
- "timeUntilUp": 60,
- "timeout": 30,
- "transparent": "disabled",
- "upInterval": 0
-}
diff --git a/test/units/modules/network/f5/fixtures/load_ltm_monitor_tcp_echo.json b/test/units/modules/network/f5/fixtures/load_ltm_monitor_tcp_echo.json
deleted file mode 100644
index 1a5183466a..0000000000
--- a/test/units/modules/network/f5/fixtures/load_ltm_monitor_tcp_echo.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "kind": "tm:ltm:monitor:tcp-echo:tcp-echostate",
- "name": "foo",
- "partition": "Common",
- "fullPath": "/Common/foo",
- "generation": 0,
- "selfLink": "https://localhost/mgmt/tm/ltm/monitor/tcp-echo/~Common~foo?ver=13.0.0",
- "adaptive": "disabled",
- "adaptiveDivergenceType": "relative",
- "adaptiveDivergenceValue": 25,
- "adaptiveLimit": 200,
- "adaptiveSamplingTimespan": 300,
- "defaultsFrom": "/Common/tcp_echo",
- "destination": "10.10.10.10",
- "interval": 20,
- "manualResume": "disabled",
- "timeUntilUp": 60,
- "timeout": 30,
- "transparent": "disabled",
- "upInterval": 0
-}
diff --git a/test/units/modules/network/f5/fixtures/load_ltm_monitor_tcp_half_open.json b/test/units/modules/network/f5/fixtures/load_ltm_monitor_tcp_half_open.json
deleted file mode 100644
index ff99c31e69..0000000000
--- a/test/units/modules/network/f5/fixtures/load_ltm_monitor_tcp_half_open.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "kind": "tm:ltm:monitor:tcp-half-open:tcp-half-openstate",
- "name": "foo",
- "partition": "Common",
- "fullPath": "/Common/foo",
- "generation": 0,
- "selfLink": "https://localhost/mgmt/tm/ltm/monitor/tcp-half-open/~Common~foo?ver=13.0.0",
- "defaultsFrom": "/Common/tcp_half_open",
- "destination": "10.10.10.10:80",
- "interval": 20,
- "manualResume": "disabled",
- "timeUntilUp": 60,
- "timeout": 30,
- "transparent": "disabled",
- "upInterval": 0
-}
diff --git a/test/units/modules/network/f5/fixtures/load_ltm_monitor_udp.json b/test/units/modules/network/f5/fixtures/load_ltm_monitor_udp.json
deleted file mode 100644
index 636619a259..0000000000
--- a/test/units/modules/network/f5/fixtures/load_ltm_monitor_udp.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "kind": "tm:ltm:monitor:udp:udpstate",
- "name": "asdf",
- "partition": "Common",
- "fullPath": "/Common/asdf",
- "generation": 0,
- "selfLink": "https://localhost/mgmt/tm/ltm/monitor/udp/~Common~asdf?ver=13.0.0",
- "adaptive": "disabled",
- "adaptiveDivergenceType": "relative",
- "adaptiveDivergenceValue": 25,
- "adaptiveLimit": 200,
- "adaptiveSamplingTimespan": 300,
- "debug": "no",
- "defaultsFrom": "/Common/udp",
- "destination": "1.1.1.1:389",
- "interval": 5,
- "manualResume": "disabled",
- "recv": "hello world",
- "reverse": "disabled",
- "send": "default send string",
- "timeUntilUp": 0,
- "timeout": 16,
- "transparent": "disabled",
- "upInterval": 0
-}
diff --git a/test/units/modules/network/f5/fixtures/load_ltm_node_1.json b/test/units/modules/network/f5/fixtures/load_ltm_node_1.json
deleted file mode 100644
index 96d25b03d1..0000000000
--- a/test/units/modules/network/f5/fixtures/load_ltm_node_1.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "kind": "tm:ltm:node:nodestate",
- "name": "foo",
- "partition": "Common",
- "fullPath": "/Common/foo",
- "generation": 158,
- "selfLink": "https://localhost/mgmt/tm/ltm/node/~Common~foo?ver=13.0.0",
- "address": "1.2.3.4",
- "connectionLimit": 0,
- "description": "my description of node",
- "dynamicRatio": 1,
- "ephemeral": "false",
- "fqdn": {
- "addressFamily": "ipv4",
- "autopopulate": "disabled",
- "downInterval": 5,
- "interval": "3600"
- },
- "logging": "disabled",
- "monitor": "default",
- "rateLimit": "disabled",
- "ratio": 1,
- "session": "user-enabled",
- "state": "unchecked"
-}
diff --git a/test/units/modules/network/f5/fixtures/load_ltm_node_2.json b/test/units/modules/network/f5/fixtures/load_ltm_node_2.json
deleted file mode 100644
index f23f6b5f42..0000000000
--- a/test/units/modules/network/f5/fixtures/load_ltm_node_2.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "kind": "tm:ltm:node:nodestate",
- "name": "fqdn-foo",
- "partition": "Common",
- "fullPath": "/Common/fqdn-foo",
- "generation": 161,
- "selfLink": "https://localhost/mgmt/tm/ltm/node/~Common~fqdn-foo?ver=13.0.0",
- "address": "any6",
- "connectionLimit": 0,
- "description": "another node but with fqdn",
- "dynamicRatio": 1,
- "ephemeral": "false",
- "fqdn": {
- "addressFamily": "ipv4",
- "autopopulate": "disabled",
- "downInterval": 5,
- "interval": "3600",
- "tmName": "google.com"
- },
- "logging": "disabled",
- "monitor": "/Common/icmp and /Common/tcp_echo ",
- "rateLimit": "disabled",
- "ratio": 1,
- "session": "user-enabled",
- "state": "fqdn-up"
-}
diff --git a/test/units/modules/network/f5/fixtures/load_ltm_node_3.json b/test/units/modules/network/f5/fixtures/load_ltm_node_3.json
deleted file mode 100644
index c6e30cf32e..0000000000
--- a/test/units/modules/network/f5/fixtures/load_ltm_node_3.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "kind": "tm:ltm:node:nodestate",
- "name": "mytestserver",
- "partition": "Common",
- "fullPath": "/Common/mytestserver",
- "generation": 2286,
- "selfLink": "https://localhost/mgmt/tm/ltm/node/~Common~mytestserver?ver=13.0.0",
- "address": "10.20.30.40",
- "connectionLimit": 0,
- "dynamicRatio": 1,
- "ephemeral": "false",
- "fqdn": {
- "addressFamily": "ipv4",
- "autopopulate": "disabled",
- "downInterval": 5,
- "interval": "3600"
- },
- "logging": "disabled",
- "monitor": "/Common/icmp ",
- "rateLimit": "disabled",
- "ratio": 1,
- "session": "monitor-enabled",
- "state": "down"
-}
diff --git a/test/units/modules/network/f5/fixtures/load_ltm_policy_draft_rule_http-uri_forward.json b/test/units/modules/network/f5/fixtures/load_ltm_policy_draft_rule_http-uri_forward.json
deleted file mode 100644
index 53aa0c34ec..0000000000
--- a/test/units/modules/network/f5/fixtures/load_ltm_policy_draft_rule_http-uri_forward.json
+++ /dev/null
@@ -1,60 +0,0 @@
-{
- "kind": "tm:ltm:policy:rules:rulesstate",
- "name": "foo",
- "fullPath": "foo",
- "generation": 739,
- "selfLink": "https://localhost/mgmt/tm/ltm/policy/~Common~Drafts~Bondticker-DRN/rules/foo?expandSubcollections=true&ver=13.0.0",
- "ordinal": 0,
- "actionsReference": {
- "link": "https://localhost/mgmt/tm/ltm/policy/~Common~Drafts~Bondticker-DRN/rules/foo/actions?ver=13.0.0",
- "isSubcollection": true,
- "items": [
- {
- "kind": "tm:ltm:policy:rules:actions:actionsstate",
- "name": "0",
- "fullPath": "0",
- "generation": 739,
- "selfLink": "https://localhost/mgmt/tm/ltm/policy/~Common~Drafts~Bondticker-DRN/rules/foo/actions/0?ver=13.0.0",
- "code": 0,
- "expirySecs": 0,
- "forward": true,
- "length": 0,
- "node": "1.1.1.1",
- "offset": 0,
- "port": 0,
- "request": true,
- "select": true,
- "snat": "disable",
- "status": 0,
- "timeout": 0,
- "vlan": "/Common/net1",
- "vlanId": 0
- }
- ]
- },
- "conditionsReference": {
- "link": "https://localhost/mgmt/tm/ltm/policy/~Common~Drafts~Bondticker-DRN/rules/foo/conditions?ver=13.0.0",
- "isSubcollection": true,
- "items": [
- {
- "kind": "tm:ltm:policy:rules:conditions:conditionsstate",
- "name": "0",
- "fullPath": "0",
- "generation": 739,
- "selfLink": "https://localhost/mgmt/tm/ltm/policy/~Common~Drafts~Bondticker-DRN/rules/foo/conditions/0?ver=13.0.0",
- "caseInsensitive": true,
- "external": true,
- "httpUri": true,
- "index": 0,
- "path": true,
- "present": true,
- "remote": true,
- "request": true,
- "startsWith": true,
- "values": [
- "foo"
- ]
- }
- ]
- }
-}
diff --git a/test/units/modules/network/f5/fixtures/load_ltm_pool.json b/test/units/modules/network/f5/fixtures/load_ltm_pool.json
deleted file mode 100644
index cd5be5e1af..0000000000
--- a/test/units/modules/network/f5/fixtures/load_ltm_pool.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "kind": "tm:ltm:pool:poolstate",
- "name": "test_pool",
- "partition": "Common",
- "fullPath": "/Common/test_pool",
- "generation": 1452,
- "selfLink": "https://localhost/mgmt/tm/ltm/pool/~Common~test_pool?ver=11.5.4",
- "allowNat": "yes",
- "allowSnat": "yes",
- "description": "test",
- "ignorePersistedWeight": "disabled",
- "ipTosToClient": "pass-through",
- "ipTosToServer": "pass-through",
- "linkQosToClient": "pass-through",
- "linkQosToServer": "pass-through",
- "loadBalancingMode": "round-robin",
- "minActiveMembers": 0,
- "minUpMembers": 0,
- "minUpMembersAction": "failover",
- "minUpMembersChecking": "disabled",
- "monitor": "min 1 of { /Common/http /Common/inband }",
- "queueDepthLimit": 0,
- "queueOnConnectionLimit": "disabled",
- "queueTimeLimit": 0,
- "reselectTries": 0,
- "serviceDownAction": "reselect",
- "slowRampTime": 10,
- "membersReference": {
- "link": "https://localhost/mgmt/tm/ltm/pool/~Common~test_pool/members?ver=11.5.4",
- "isSubcollection": true
- }
-} \ No newline at end of file
diff --git a/test/units/modules/network/f5/fixtures/load_ltm_profile_analytics_1.json b/test/units/modules/network/f5/fixtures/load_ltm_profile_analytics_1.json
deleted file mode 100644
index 3e3fa2c06e..0000000000
--- a/test/units/modules/network/f5/fixtures/load_ltm_profile_analytics_1.json
+++ /dev/null
@@ -1,52 +0,0 @@
-{
- "kind": "tm:ltm:profile:analytics:analyticsstate",
- "name": "foo",
- "partition": "Common",
- "fullPath": "/Common/foo",
- "generation": 339,
- "selfLink": "https://localhost/mgmt/tm/ltm/profile/analytics/~Common~foo?ver=13.1.1",
- "appService": "none",
- "capturedTrafficExternalLogging": "disabled",
- "capturedTrafficInternalLogging": "disabled",
- "collectGeo": "disabled",
- "collectHttpTimingMetrics": "disabled",
- "collectIp": "disabled",
- "collectMaxTpsAndThroughput": "disabled",
- "collectMethods": "enabled",
- "collectOsAndBrowser": "enabled",
- "collectPageLoadTime": "disabled",
- "collectResponseCodes": "enabled",
- "collectSubnets": "disabled",
- "collectUrl": "disabled",
- "collectUserAgent": "disabled",
- "collectUserSessions": "disabled",
- "collectedStatsExternalLogging": "disabled",
- "collectedStatsInternalLogging": "enabled",
- "countriesForStatCollection": [],
- "defaultsFrom": "/Common/analytics",
- "defaultsFromReference": {
- "link": "https://localhost/mgmt/tm/ltm/profile/analytics/~Common~analytics?ver=13.1.1"
- },
- "description": "none",
- "externalLoggingPublisher": "none",
- "ipsForStatCollection": [],
- "notificationByEmail": "disabled",
- "notificationBySnmp": "disabled",
- "notificationBySyslog": "disabled",
- "notificationEmailAddresses": [],
- "publishIruleStatistics": "disabled",
- "sampling": "enabled",
- "sessionCookieSecurity": "ssl-only",
- "sessionTimeoutMinutes": "5",
- "smtpConfig": "none",
- "subnetsForStatCollection": [],
- "urlsForStatCollection": [],
- "alertsReference": {
- "link": "https://localhost/mgmt/tm/ltm/profile/analytics/~Common~foo/alerts?ver=13.1.1",
- "isSubcollection": true
- },
- "trafficCaptureReference": {
- "link": "https://localhost/mgmt/tm/ltm/profile/analytics/~Common~foo/traffic-capture?ver=13.1.1",
- "isSubcollection": true
- }
-}
diff --git a/test/units/modules/network/f5/fixtures/load_ltm_profile_clientssl.json b/test/units/modules/network/f5/fixtures/load_ltm_profile_clientssl.json
deleted file mode 100644
index 923f6f72bb..0000000000
--- a/test/units/modules/network/f5/fixtures/load_ltm_profile_clientssl.json
+++ /dev/null
@@ -1,103 +0,0 @@
-{
- "kind": "tm:ltm:profile:client-ssl:client-sslstate",
- "name": "foo",
- "partition": "Common",
- "fullPath": "/Common/foo",
- "generation": 351,
- "selfLink": "https://localhost/mgmt/tm/ltm/profile/client-ssl/~Common~foo?ver=13.0.0",
- "alertTimeout": "indefinite",
- "allowDynamicRecordSizing": "disabled",
- "allowExpiredCrl": "disabled",
- "allowNonSsl": "disabled",
- "appService": "none",
- "authenticate": "once",
- "authenticateDepth": 9,
- "bypassOnClientCertFail": "disabled",
- "bypassOnHandshakeAlert": "disabled",
- "caFile": "none",
- "cacheSize": 262144,
- "cacheTimeout": 3600,
- "cert": "/Common/default.crt",
- "certReference": {
- "link": "https://localhost/mgmt/tm/sys/file/ssl-cert/~Common~default.crt?ver=13.0.0"
- },
- "certExtensionIncludes": [
- "basic-constraints",
- "subject-alternative-name"
- ],
- "certLifespan": 30,
- "certLookupByIpaddrPort": "disabled",
- "chain": "none",
- "cipherGroup": "none",
- "ciphers": "DEFAULT",
- "clientCertCa": "none",
- "crlFile": "none",
- "defaultsFrom": "/Common/clientssl",
- "defaultsFromReference": {
- "link": "https://localhost/mgmt/tm/ltm/profile/client-ssl/~Common~clientssl?ver=13.0.0"
- },
- "description": "none",
- "destinationIpBlacklist": "none",
- "destinationIpWhitelist": "none",
- "forwardProxyBypassDefaultAction": "intercept",
- "genericAlert": "enabled",
- "handshakeTimeout": "10",
- "hostnameBlacklist": "none",
- "hostnameWhitelist": "none",
- "inheritCertkeychain": "true",
- "key": "/Common/default.key",
- "keyReference": {
- "link": "https://localhost/mgmt/tm/sys/file/ssl-key/~Common~default.key?ver=13.0.0"
- },
- "maxActiveHandshakes": "indefinite",
- "maxAggregateRenegotiationPerMinute": "indefinite",
- "maxRenegotiationsPerMinute": 5,
- "maximumRecordSize": 16384,
- "modSslMethods": "disabled",
- "mode": "enabled",
- "notifyCertStatusToVirtualServer": "disabled",
- "ocspStapling": "disabled",
- "tmOptions": [
- "dont-insert-empty-fragments"
- ],
- "peerCertMode": "ignore",
- "peerNoRenegotiateTimeout": "10",
- "proxyCaCert": "none",
- "proxyCaKey": "none",
- "proxySsl": "disabled",
- "proxySslPassthrough": "disabled",
- "renegotiateMaxRecordDelay": "indefinite",
- "renegotiatePeriod": "indefinite",
- "renegotiateSize": "indefinite",
- "renegotiation": "enabled",
- "retainCertificate": "true",
- "secureRenegotiation": "require",
- "serverName": "none",
- "sessionMirroring": "disabled",
- "sessionTicket": "disabled",
- "sessionTicketTimeout": 0,
- "sniDefault": "false",
- "sniRequire": "false",
- "sourceIpBlacklist": "none",
- "sourceIpWhitelist": "none",
- "sslForwardProxy": "disabled",
- "sslForwardProxyBypass": "disabled",
- "sslSignHash": "any",
- "strictResume": "disabled",
- "uncleanShutdown": "enabled",
- "certKeyChain": [
- {
- "name": "default",
- "appService": "none",
- "cert": "/Common/default.crt",
- "certReference": {
- "link": "https://localhost/mgmt/tm/sys/file/ssl-cert/~Common~default.crt?ver=13.0.0"
- },
- "chain": "none",
- "key": "/Common/default.key",
- "keyReference": {
- "link": "https://localhost/mgmt/tm/sys/file/ssl-key/~Common~default.key?ver=13.0.0"
- }
- }
- ]
-}
diff --git a/test/units/modules/network/f5/fixtures/load_ltm_profile_dns_1.json b/test/units/modules/network/f5/fixtures/load_ltm_profile_dns_1.json
deleted file mode 100644
index 41736147e8..0000000000
--- a/test/units/modules/network/f5/fixtures/load_ltm_profile_dns_1.json
+++ /dev/null
@@ -1,35 +0,0 @@
-{
- "kind": "tm:ltm:profile:dns:dnsstate",
- "name": "foo",
- "partition": "Common",
- "fullPath": "/Common/foo",
- "generation": 1211,
- "selfLink": "https://localhost/mgmt/tm/ltm/profile/dns/~Common~foo?ver=13.1.0.4",
- "appService": "none",
- "avrDnsstatSampleRate": 0,
- "cache": "none",
- "defaultsFrom": "/Common/dns",
- "defaultsFromReference": {
- "link": "https://localhost/mgmt/tm/ltm/profile/dns/~Common~dns?ver=13.1.0.4"
- },
- "description": "none",
- "dnsSecurity": "none",
- "dns64": "disabled",
- "dns64AdditionalSectionRewrite": "disabled",
- "dns64Prefix": "any6",
- "enableCache": "no",
- "enableDnsExpress": "no",
- "enableDnsFirewall": "yes",
- "enableDnssec": "no",
- "enableGtm": "no",
- "enableHardwareQueryValidation": "no",
- "enableHardwareResponseCache": "no",
- "enableLogging": "no",
- "enableRapidResponse": "no",
- "logProfile": "none",
- "processRd": "yes",
- "processXfr": "yes",
- "rapidResponseLastAction": "drop",
- "unhandledQueryAction": "allow",
- "useLocalBind": "no"
-}
diff --git a/test/units/modules/network/f5/fixtures/load_ltm_profile_http_compression_1.json b/test/units/modules/network/f5/fixtures/load_ltm_profile_http_compression_1.json
deleted file mode 100644
index a9873f20a2..0000000000
--- a/test/units/modules/network/f5/fixtures/load_ltm_profile_http_compression_1.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{
- "kind": "tm:ltm:profile:http-compression:http-compressionstate",
- "name": "profile1",
- "partition": "Common",
- "fullPath": "/Common/profile1",
- "generation": 132,
- "selfLink": "https://localhost/mgmt/tm/ltm/profile/http-compression/~Common~profile1?ver=13.1.0.4",
- "allowHttp_10": "disabled",
- "appService": "none",
- "browserWorkarounds": "disabled",
- "bufferSize": 4096,
- "contentTypeExclude": [],
- "contentTypeInclude": [
- "text/",
- "application/(xml|x-javascript)"
- ],
- "cpuSaver": "enabled",
- "cpuSaverHigh": 90,
- "cpuSaverLow": 75,
- "defaultsFrom": "/Common/httpcompression",
- "defaultsFromReference": {
- "link": "https://localhost/mgmt/tm/ltm/profile/http-compression/~Common~httpcompression?ver=13.1.0.4"
- },
- "description": "my profile",
- "gzipLevel": 1,
- "gzipMemoryLevel": 8192,
- "gzipWindowSize": 16384,
- "keepAcceptEncoding": "disabled",
- "methodPrefer": "gzip",
- "minSize": 1024,
- "selective": "disabled",
- "uriExclude": [],
- "uriInclude": [
- ".*"
- ],
- "varyHeader": "enabled"
-}
diff --git a/test/units/modules/network/f5/fixtures/load_ltm_profile_oneconnect_1.json b/test/units/modules/network/f5/fixtures/load_ltm_profile_oneconnect_1.json
deleted file mode 100644
index d2b05acfe4..0000000000
--- a/test/units/modules/network/f5/fixtures/load_ltm_profile_oneconnect_1.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "kind": "tm:ltm:profile:one-connect:one-connectstate",
- "name": "oneconnect",
- "partition": "Common",
- "fullPath": "/Common/oneconnect",
- "generation": 1,
- "selfLink": "https://localhost/mgmt/tm/ltm/profile/one-connect/~Common~oneconnect?ver=13.1.0.4",
- "appService": "none",
- "defaultsFrom": "none",
- "description": "none",
- "idleTimeoutOverride": "disabled",
- "limitType": "none",
- "maxAge": 86400,
- "maxReuse": 1000,
- "maxSize": 10000,
- "sharePools": "disabled",
- "sourceMask": "any"
-}
diff --git a/test/units/modules/network/f5/fixtures/load_ltm_profile_persistence_cookie_1.json b/test/units/modules/network/f5/fixtures/load_ltm_profile_persistence_cookie_1.json
deleted file mode 100644
index 771a26e919..0000000000
--- a/test/units/modules/network/f5/fixtures/load_ltm_profile_persistence_cookie_1.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "kind": "tm:ltm:persistence:cookie:cookiestate",
- "name": "cookie",
- "partition": "Common",
- "fullPath": "/Common/cookie",
- "generation": 1,
- "selfLink": "https://localhost/mgmt/tm/ltm/persistence/cookie/~Common~cookie?ver=13.1.0.7",
- "alwaysSend": "disabled",
- "appService": "none",
- "cookieEncryption": "disabled",
- "cookieName": "none",
- "defaultsFrom": "none",
- "description": "none",
- "encryptCookiePoolname": "disabled",
- "expiration": "0",
- "hashLength": 0,
- "hashOffset": 0,
- "httponly": "enabled",
- "matchAcrossPools": "disabled",
- "matchAcrossServices": "disabled",
- "matchAcrossVirtuals": "disabled",
- "method": "insert",
- "mirror": "disabled",
- "overrideConnectionLimit": "disabled",
- "secure": "enabled",
- "timeout": "180"
-}
diff --git a/test/units/modules/network/f5/fixtures/load_ltm_profile_persistence_src_addr_1.json b/test/units/modules/network/f5/fixtures/load_ltm_profile_persistence_src_addr_1.json
deleted file mode 100644
index 2ee6df9b33..0000000000
--- a/test/units/modules/network/f5/fixtures/load_ltm_profile_persistence_src_addr_1.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "kind": "tm:ltm:persistence:source-addr:source-addrstate",
- "name": "source_addr",
- "partition": "Common",
- "fullPath": "/Common/source_addr",
- "generation": 1,
- "selfLink": "https://localhost/mgmt/tm/ltm/persistence/source-addr/~Common~source_addr?ver=13.1.0.7",
- "appService": "none",
- "defaultsFrom": "none",
- "description": "none",
- "hashAlgorithm": "default",
- "mapProxies": "enabled",
- "mapProxyAddress": "none",
- "mapProxyClass": "none",
- "mask": "none",
- "matchAcrossPools": "disabled",
- "matchAcrossServices": "disabled",
- "matchAcrossVirtuals": "disabled",
- "mirror": "disabled",
- "overrideConnectionLimit": "disabled",
- "timeout": "180"
-}
diff --git a/test/units/modules/network/f5/fixtures/load_ltm_profile_serverssl_1.json b/test/units/modules/network/f5/fixtures/load_ltm_profile_serverssl_1.json
deleted file mode 100644
index 94e6019fb1..0000000000
--- a/test/units/modules/network/f5/fixtures/load_ltm_profile_serverssl_1.json
+++ /dev/null
@@ -1,73 +0,0 @@
-{
- "kind": "tm:ltm:profile:server-ssl:server-sslstate",
- "name": "asda",
- "partition": "Common",
- "fullPath": "/Common/asda",
- "generation": 160,
- "selfLink": "https://localhost/mgmt/tm/ltm/profile/server-ssl/~Common~asda?ver=13.1.0.8",
- "alertTimeout": "indefinite",
- "allowExpiredCrl": "disabled",
- "appService": "none",
- "authenticate": "once",
- "authenticateDepth": 9,
- "authenticateName": "none",
- "bypassOnClientCertFail": "disabled",
- "bypassOnHandshakeAlert": "disabled",
- "c3dCaCert": "none",
- "c3dCaKey": "none",
- "c3dCertExtensionCustomOids": [],
- "c3dCertExtensionIncludes": [
- "basic-constraints",
- "extended-key-usage",
- "key-usage",
- "subject-alternative-name"
- ],
- "c3dCertLifespan": 24,
- "caFile": "none",
- "cacheSize": 262144,
- "cacheTimeout": 3600,
- "cert": "none",
- "chain": "/Common/default.crt",
- "chainReference": {
- "link": "https://localhost/mgmt/tm/sys/file/ssl-cert/~Common~default.crt?ver=13.1.0.8"
- },
- "cipherGroup": "none",
- "ciphers": "DEFAULT",
- "crlFile": "none",
- "defaultsFrom": "/Common/serverssl",
- "defaultsFromReference": {
- "link": "https://localhost/mgmt/tm/ltm/profile/server-ssl/~Common~serverssl?ver=13.1.0.8"
- },
- "description": "none",
- "expireCertResponseControl": "drop",
- "genericAlert": "enabled",
- "handshakeTimeout": "10",
- "key": "none",
- "maxActiveHandshakes": "indefinite",
- "modSslMethods": "disabled",
- "mode": "enabled",
- "ocsp": "none",
- "tmOptions": [
- "dont-insert-empty-fragments"
- ],
- "peerCertMode": "ignore",
- "proxySsl": "disabled",
- "proxySslPassthrough": "disabled",
- "renegotiatePeriod": "indefinite",
- "renegotiateSize": "indefinite",
- "renegotiation": "enabled",
- "retainCertificate": "true",
- "secureRenegotiation": "require-strict",
- "serverName": "none",
- "sessionMirroring": "disabled",
- "sessionTicket": "disabled",
- "sniDefault": "false",
- "sniRequire": "false",
- "sslC3d": "disabled",
- "sslForwardProxy": "disabled",
- "sslForwardProxyBypass": "disabled",
- "sslSignHash": "any",
- "strictResume": "disabled",
- "uncleanShutdown": "enabled",
- "untrustedCertResponseControl": "drop"
-}
diff --git a/test/units/modules/network/f5/fixtures/load_ltm_profile_tcp_1.json b/test/units/modules/network/f5/fixtures/load_ltm_profile_tcp_1.json
deleted file mode 100644
index 03ada3cbde..0000000000
--- a/test/units/modules/network/f5/fixtures/load_ltm_profile_tcp_1.json
+++ /dev/null
@@ -1,92 +0,0 @@
-{
- "kind": "tm:ltm:profile:tcp:tcpstate",
- "name": "foo",
- "partition": "Common",
- "fullPath": "/Common/foo",
- "generation": 92,
- "selfLink": "https://localhost/mgmt/tm/ltm/profile/tcp/~Common~foo?ver=13.1.0.4",
- "abc": "enabled",
- "ackOnPush": "enabled",
- "appService": "none",
- "autoProxyBufferSize": "disabled",
- "autoReceiveWindowSize": "disabled",
- "autoSendBufferSize": "disabled",
- "closeWaitTimeout": 5,
- "cmetricsCache": "enabled",
- "cmetricsCacheTimeout": 0,
- "congestionControl": "high-speed",
- "defaultsFrom": "/Common/tcp",
- "defaultsFromReference": {
- "link": "https://localhost/mgmt/tm/ltm/profile/tcp/~Common~tcp?ver=13.1.0.4"
- },
- "deferredAccept": "disabled",
- "delayWindowControl": "disabled",
- "delayedAcks": "enabled",
- "description": "none",
- "dsack": "disabled",
- "earlyRetransmit": "enabled",
- "ecn": "enabled",
- "enhancedLossRecovery": "disabled",
- "fastOpen": "disabled",
- "fastOpenCookieExpiration": 21600,
- "finWait_2Timeout": 300,
- "finWaitTimeout": 5,
- "hardwareSynCookie": "enabled",
- "idleTimeout": 300,
- "initCwnd": 3,
- "initRwnd": 3,
- "ipDfMode": "pmtu",
- "ipTosToClient": "0",
- "ipTtlMode": "proxy",
- "ipTtlV4": 255,
- "ipTtlV6": 64,
- "keepAliveInterval": 1800,
- "limitedTransmit": "enabled",
- "linkQosToClient": "0",
- "maxRetrans": 8,
- "maxSegmentSize": 1460,
- "md5Signature": "disabled",
- "minimumRto": 1000,
- "mptcp": "disabled",
- "mptcpCsum": "disabled",
- "mptcpCsumVerify": "disabled",
- "mptcpDebug": "disabled",
- "mptcpFallback": "reset",
- "mptcpFastjoin": "disabled",
- "mptcpIdleTimeout": 300,
- "mptcpJoinMax": 5,
- "mptcpMakeafterbreak": "disabled",
- "mptcpNojoindssack": "disabled",
- "mptcpRtomax": 5,
- "mptcpRxmitmin": 1000,
- "mptcpSubflowmax": 6,
- "mptcpTimeout": 3600,
- "nagle": "disabled",
- "pktLossIgnoreBurst": 0,
- "pktLossIgnoreRate": 0,
- "proxyBufferHigh": 49152,
- "proxyBufferLow": 32768,
- "proxyMss": "enabled",
- "proxyOptions": "disabled",
- "pushFlag": "default",
- "ratePace": "disabled",
- "ratePaceMaxRate": 0,
- "receiveWindowSize": 65535,
- "resetOnTimeout": "enabled",
- "rexmtThresh": 3,
- "selectiveAcks": "enabled",
- "selectiveNack": "disabled",
- "sendBufferSize": 65535,
- "slowStart": "enabled",
- "synCookieEnable": "enabled",
- "synCookieWhitelist": "disabled",
- "synMaxRetrans": 3,
- "synRtoBase": 3000,
- "tailLossProbe": "disabled",
- "tcpOptions": "none",
- "timeWaitRecycle": "enabled",
- "timeWaitTimeout": "2000",
- "timestamps": "enabled",
- "verifiedAccept": "disabled",
- "zeroWindowTimeout": 20000
-}
diff --git a/test/units/modules/network/f5/fixtures/load_ltm_profile_udp_1.json b/test/units/modules/network/f5/fixtures/load_ltm_profile_udp_1.json
deleted file mode 100644
index a07307a0dd..0000000000
--- a/test/units/modules/network/f5/fixtures/load_ltm_profile_udp_1.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "kind": "tm:ltm:profile:udp:udpstate",
- "name": "foo",
- "partition": "Common",
- "fullPath": "/Common/foo",
- "generation": 107,
- "selfLink": "https://localhost/mgmt/tm/ltm/profile/udp/~Common~foo?ver=13.1.0.4",
- "allowNoPayload": "disabled",
- "appService": "none",
- "bufferMaxBytes": 655350,
- "bufferMaxPackets": 0,
- "datagramLoadBalancing": "disabled",
- "defaultsFrom": "/Common/udp",
- "defaultsFromReference": {
- "link": "https://localhost/mgmt/tm/ltm/profile/udp/~Common~udp?ver=13.1.0.4"
- },
- "description": "none",
- "idleTimeout": "60",
- "ipDfMode": "pmtu",
- "ipTosToClient": "0",
- "ipTtlMode": "proxy",
- "ipTtlV4": 255,
- "ipTtlV6": 64,
- "linkQosToClient": "0",
- "noChecksum": "disabled",
- "proxyMss": "disabled"
-}
diff --git a/test/units/modules/network/f5/fixtures/load_ltm_snat_translation_default.json b/test/units/modules/network/f5/fixtures/load_ltm_snat_translation_default.json
deleted file mode 100644
index 836866a17b..0000000000
--- a/test/units/modules/network/f5/fixtures/load_ltm_snat_translation_default.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "address": "1.1.1.1",
- "arp": "no",
- "connectionLimit": 0,
- "description": "My description",
- "ip_idle_timeout":"50",
- "kind": "tm:ltm:snat-translation:snat-translationstate",
- "name": "my-snat-translation",
- "partition": "Common",
- "state":"present",
- "enabled":"true",
- "tcp_idle_timeout":"20",
- "trafficGroup": "/Common/test",
- "udp_idle_timeout":"100"
-} \ No newline at end of file
diff --git a/test/units/modules/network/f5/fixtures/load_ltm_snatpool.json b/test/units/modules/network/f5/fixtures/load_ltm_snatpool.json
deleted file mode 100644
index fcea1dd219..0000000000
--- a/test/units/modules/network/f5/fixtures/load_ltm_snatpool.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "kind": "tm:ltm:snatpool:snatpoolstate",
- "name": "asdasd",
- "partition": "Common",
- "fullPath": "/Common/asdasd",
- "generation": 40,
- "selfLink": "https://localhost/mgmt/tm/ltm/snatpool/~Common~asdasd?ver=12.1.2",
- "members": [
- "/Common/1.1.1.1",
- "/Common/2.2.2.2"
- ],
- "membersReference": [
- {
- "link": "https://localhost/mgmt/tm/ltm/snat-translation/~Common~1.1.1.1?ver=12.1.2"
- },
- {
- "link": "https://localhost/mgmt/tm/ltm/snat-translation/~Common~2.2.2.2?ver=12.1.2"
- }
- ]
-}
diff --git a/test/units/modules/network/f5/fixtures/load_ltm_virtual_1.json b/test/units/modules/network/f5/fixtures/load_ltm_virtual_1.json
deleted file mode 100644
index aaf48ab87b..0000000000
--- a/test/units/modules/network/f5/fixtures/load_ltm_virtual_1.json
+++ /dev/null
@@ -1,43 +0,0 @@
-{
- "kind": "tm:ltm:virtual:virtualstate",
- "name": "my-virtual-server",
- "partition": "Common",
- "fullPath": "/Common/my-virtual-server",
- "generation": 65,
- "selfLink": "https://localhost/mgmt/tm/ltm/virtual/~Common~my-virtual-server?ver=12.1.2",
- "addressStatus": "yes",
- "autoLasthop": "default",
- "cmpEnabled": "yes",
- "connectionLimit": 0,
- "destination": "/Common/10.10.10.10:443",
- "enabled": true,
- "gtmScore": 0,
- "ipProtocol": "any",
- "mask": "255.255.255.255",
- "mirror": "disabled",
- "mobileAppTunnel": "disabled",
- "nat64": "disabled",
- "rateLimit": "disabled",
- "rateLimitDstMask": 0,
- "rateLimitMode": "object",
- "rateLimitSrcMask": 0,
- "serviceDownImmediateAction": "none",
- "source": "0.0.0.0/0",
- "sourceAddressTranslation": {
- "type": "automap"
- },
- "sourcePort": "preserve",
- "synCookieStatus": "not-activated",
- "translateAddress": "enabled",
- "translatePort": "enabled",
- "vlansDisabled": true,
- "vsIndex": 2,
- "policiesReference": {
- "link": "https://localhost/mgmt/tm/ltm/virtual/~Common~my-virtual-server/policies?ver=12.1.2",
- "isSubcollection": true
- },
- "profilesReference": {
- "link": "https://localhost/mgmt/tm/ltm/virtual/~Common~my-virtual-server/profiles?ver=12.1.2",
- "isSubcollection": true
- }
-}
diff --git a/test/units/modules/network/f5/fixtures/load_ltm_virtual_1_address.json b/test/units/modules/network/f5/fixtures/load_ltm_virtual_1_address.json
deleted file mode 100644
index 297afc9187..0000000000
--- a/test/units/modules/network/f5/fixtures/load_ltm_virtual_1_address.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "kind": "tm:ltm:virtual-address:virtual-addressstate",
- "name": "10.10.10.10",
- "partition": "Common",
- "fullPath": "/Common/10.10.10.10",
- "generation": 116,
- "selfLink": "https://localhost/mgmt/tm/ltm/virtual-address/~Common~10.10.10.10?ver=12.1.2",
- "address": "10.10.10.10",
- "arp": "enabled",
- "autoDelete": "true",
- "connectionLimit": 0,
- "enabled": "yes",
- "floating": "enabled",
- "icmpEcho": "enabled",
- "inheritedTrafficGroup": "false",
- "mask": "255.255.255.255",
- "routeAdvertisement": "enabled",
- "serverScope": "any",
- "spanning": "disabled",
- "trafficGroup": "/Common/traffic-group-1",
- "trafficGroupReference": {
- "link": "https://localhost/mgmt/tm/cm/traffic-group/~Common~traffic-group-1?ver=12.1.2"
- },
- "unit": 1
-}
diff --git a/test/units/modules/network/f5/fixtures/load_ltm_virtual_2.json b/test/units/modules/network/f5/fixtures/load_ltm_virtual_2.json
deleted file mode 100644
index 712b19e3d9..0000000000
--- a/test/units/modules/network/f5/fixtures/load_ltm_virtual_2.json
+++ /dev/null
@@ -1,65 +0,0 @@
-{
- "kind": "tm:ltm:virtual:virtualstate",
- "name": "my-virtual-server",
- "partition": "Common",
- "fullPath": "/Common/my-virtual-server",
- "generation": 152,
- "selfLink": "https://localhost/mgmt/tm/ltm/virtual/~Common~my-virtual-server?ver=12.1.2",
- "addressStatus": "yes",
- "autoLasthop": "default",
- "cmpEnabled": "yes",
- "connectionLimit": 0,
- "destination": "/Common/10.10.10.10:443",
- "enabled": true,
- "gtmScore": 0,
- "ipProtocol": "any",
- "mask": "255.255.255.255",
- "mirror": "disabled",
- "mobileAppTunnel": "disabled",
- "nat64": "disabled",
- "rateLimit": "disabled",
- "rateLimitDstMask": 0,
- "rateLimitMode": "object",
- "rateLimitSrcMask": 0,
- "serviceDownImmediateAction": "none",
- "source": "0.0.0.0/0",
- "sourceAddressTranslation": {
- "type": "automap"
- },
- "sourcePort": "preserve",
- "synCookieStatus": "not-activated",
- "translateAddress": "enabled",
- "translatePort": "enabled",
- "vlansDisabled": true,
- "vsIndex": 19,
- "vlans": [
- "/Common/net1"
- ],
- "vlansReference": [
- {
- "link": "https://localhost/mgmt/tm/net/vlan/~Common~net1?ver=12.1.2"
- }
- ],
- "policiesReference": {
- "link": "https://localhost/mgmt/tm/ltm/virtual/~Common~my-virtual-server/policies?ver=12.1.2",
- "isSubcollection": true
- },
- "profilesReference": {
- "link": "https://localhost/mgmt/tm/ltm/virtual/~Common~my-virtual-server/profiles?ver=12.1.2",
- "isSubcollection": true,
- "items": [
- {
- "kind": "tm:ltm:virtual:profiles:profilesstate",
- "name": "fastL4",
- "partition": "Common",
- "fullPath": "/Common/fastL4",
- "generation": 148,
- "selfLink": "https://localhost/mgmt/tm/ltm/virtual/~Common~my-virtual-server/profiles/~Common~fastL4?ver=12.1.2",
- "context": "all",
- "nameReference": {
- "link": "https://localhost/mgmt/tm/ltm/profile/fastl4/~Common~fastL4?ver=12.1.2"
- }
- }
- ]
- }
-}
diff --git a/test/units/modules/network/f5/fixtures/load_ltm_virtual_3.json b/test/units/modules/network/f5/fixtures/load_ltm_virtual_3.json
deleted file mode 100644
index e1b0c7c270..0000000000
--- a/test/units/modules/network/f5/fixtures/load_ltm_virtual_3.json
+++ /dev/null
@@ -1,115 +0,0 @@
-{
- "kind": "tm:ltm:virtual:virtualstate",
- "name": "my-virtual-server",
- "partition": "Common",
- "fullPath": "/Common/my-virtual-server",
- "generation": 340,
- "selfLink": "https://localhost/mgmt/tm/ltm/virtual/~Common~my-virtual-server?expandSubcollections=true&ver=12.0.0",
- "addressStatus": "yes",
- "autoLasthop": "default",
- "cmpEnabled": "yes",
- "connectionLimit": 0,
- "description": "Test Virtual Server",
- "destination": "/Common/10.10.10.10:443",
- "enabled": true,
- "gtmScore": 0,
- "ipProtocol": "tcp",
- "mask": "255.255.255.255",
- "mirror": "disabled",
- "mobileAppTunnel": "disabled",
- "nat64": "disabled",
- "rateLimit": "disabled",
- "rateLimitDstMask": 0,
- "rateLimitMode": "object",
- "rateLimitSrcMask": 0,
- "serviceDownImmediateAction": "none",
- "source": "0.0.0.0/0",
- "sourceAddressTranslation": {
- "type": "automap"
- },
- "sourcePort": "preserve",
- "synCookieStatus": "not-activated",
- "translateAddress": "enabled",
- "translatePort": "enabled",
- "vlansDisabled": true,
- "vsIndex": 38,
- "rules": [
- "/Common/web_logging"
- ],
- "rulesReference": [
- {
- "link": "https://localhost/mgmt/tm/ltm/rule/~Common~web_logging?ver=12.0.0"
- }
- ],
- "policiesReference": {
- "link": "https://localhost/mgmt/tm/ltm/virtual/~Common~my-virtual-server/policies?ver=12.0.0",
- "isSubcollection": true,
- "items": [
- {
- "kind": "tm:ltm:virtual:policies:policiesstate",
- "name": "policy1",
- "partition": "Common",
- "fullPath": "/Common/policy1",
- "generation": 340,
- "selfLink": "https://localhost/mgmt/tm/ltm/virtual/~Common~my-virtual-server/policies/~Common~policy1?ver=12.0.0",
- "nameReference": {
- "link": "https://localhost/mgmt/tm/ltm/policy/~Common~policy1?ver=12.0.0"
- }
- }
- ]
- },
- "profilesReference": {
- "link": "https://localhost/mgmt/tm/ltm/virtual/~Common~my-virtual-server/profiles?ver=12.0.0",
- "isSubcollection": true,
- "items": [
- {
- "kind": "tm:ltm:virtual:profiles:profilesstate",
- "name": "clientssl",
- "partition": "Common",
- "fullPath": "/Common/clientssl",
- "generation": 338,
- "selfLink": "https://localhost/mgmt/tm/ltm/virtual/~Common~my-virtual-server/profiles/~Common~clientssl?ver=12.0.0",
- "context": "clientside",
- "nameReference": {
- "link": "https://localhost/mgmt/tm/ltm/profile/client-ssl/~Common~clientssl?ver=12.0.0"
- }
- },
- {
- "kind": "tm:ltm:virtual:profiles:profilesstate",
- "name": "http",
- "partition": "Common",
- "fullPath": "/Common/http",
- "generation": 338,
- "selfLink": "https://localhost/mgmt/tm/ltm/virtual/~Common~my-virtual-server/profiles/~Common~http?ver=12.0.0",
- "context": "all",
- "nameReference": {
- "link": "https://localhost/mgmt/tm/ltm/profile/http/~Common~http?ver=12.0.0"
- }
- },
- {
- "kind": "tm:ltm:virtual:profiles:profilesstate",
- "name": "tcp",
- "partition": "Common",
- "fullPath": "/Common/tcp",
- "generation": 338,
- "selfLink": "https://localhost/mgmt/tm/ltm/virtual/~Common~my-virtual-server/profiles/~Common~tcp?ver=12.0.0",
- "context": "clientside",
- "nameReference": {
- "link": "https://localhost/mgmt/tm/ltm/profile/tcp/~Common~tcp?ver=12.0.0"
- }
- },
- {
- "kind": "tm:ltm:virtual:profiles:profilesstate",
- "name": "tcp-legacy",
- "partition": "Common",
- "fullPath": "/Common/tcp-legacy",
- "generation": 338,
- "selfLink": "https://localhost/mgmt/tm/ltm/virtual/~Common~my-virtual-server/profiles/~Common~tcp-legacy?ver=12.0.0",
- "context": "serverside",
- "nameReference": {
- "link": "https://localhost/mgmt/tm/ltm/profile/tcp/~Common~tcp-legacy?ver=12.0.0"
- }
- }
- ]
- }
-}
diff --git a/test/units/modules/network/f5/fixtures/load_ltm_virtual_address_collection_1.json b/test/units/modules/network/f5/fixtures/load_ltm_virtual_address_collection_1.json
deleted file mode 100644
index 810e659ff9..0000000000
--- a/test/units/modules/network/f5/fixtures/load_ltm_virtual_address_collection_1.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "kind": "tm:ltm:virtual-address:virtual-addresscollectionstate",
- "selfLink": "https://localhost/mgmt/tm/ltm/virtual-address?ver=13.1.0.4",
- "items": [
- {
- "kind": "tm:ltm:virtual-address:virtual-addressstate",
- "name": "2.3.4.5",
- "partition": "Common",
- "fullPath": "/Common/2.3.4.5",
- "generation": 1074,
- "selfLink": "https://localhost/mgmt/tm/ltm/virtual-address/~Common~2.3.4.5?ver=13.1.0.4",
- "address": "2.3.4.5",
- "arp": "enabled",
- "autoDelete": "true",
- "connectionLimit": 0,
- "enabled": "yes",
- "floating": "enabled",
- "icmpEcho": "enabled",
- "inheritedTrafficGroup": "false",
- "mask": "255.255.255.255",
- "routeAdvertisement": "disabled",
- "serverScope": "any",
- "spanning": "disabled",
- "trafficGroup": "/Common/traffic-group-1",
- "trafficGroupReference": {
- "link": "https://localhost/mgmt/tm/cm/traffic-group/~Common~traffic-group-1?ver=13.1.0.4"
- },
- "unit": 1
- }
- ]
-}
diff --git a/test/units/modules/network/f5/fixtures/load_ltm_virtual_address_default.json b/test/units/modules/network/f5/fixtures/load_ltm_virtual_address_default.json
deleted file mode 100644
index a2b87012a1..0000000000
--- a/test/units/modules/network/f5/fixtures/load_ltm_virtual_address_default.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "kind": "tm:ltm:virtual-address:virtual-addressstate",
- "name": "1.1.1.1",
- "partition": "Common",
- "fullPath": "/Common/1.1.1.1",
- "generation": 116,
- "selfLink": "https://localhost/mgmt/tm/ltm/virtual-address/~Common~1.1.1.1?ver=12.1.2",
- "address": "1.1.1.1",
- "arp": "enabled",
- "autoDelete": "true",
- "connectionLimit": 0,
- "enabled": "yes",
- "floating": "enabled",
- "icmpEcho": "enabled",
- "inheritedTrafficGroup": "false",
- "mask": "255.255.255.255",
- "routeAdvertisement": "disabled",
- "serverScope": "any",
- "spanning": "disabled",
- "trafficGroup": "/Common/traffic-group-1",
- "trafficGroupReference": {
- "link": "https://localhost/mgmt/tm/cm/traffic-group/~Common~traffic-group-1?ver=12.1.2"
- },
- "unit": 1
-}
diff --git a/test/units/modules/network/f5/fixtures/load_machine_resolver.json b/test/units/modules/network/f5/fixtures/load_machine_resolver.json
deleted file mode 100644
index 2422ca6db8..0000000000
--- a/test/units/modules/network/f5/fixtures/load_machine_resolver.json
+++ /dev/null
@@ -1,187 +0,0 @@
- {
- "uuid": "4dd9f559-c1b9-4e05-8d17-2345a6a3d459",
- "deviceUri": "https://10.144.74.229:443",
- "machineId": "4dd9f559-c1b9-4e05-8d17-2345a6a3d459",
- "state": "ACTIVE",
- "address": "10.144.74.229",
- "httpsPort": 443,
- "hostname": "ansible_test_lab12.lab.local",
- "version": "12.1.3",
- "product": "BIG-IP",
- "edition": "Final",
- "build": "0.0.378",
- "restFrameworkVersion": "12.1.3-0.0.378",
- "managementAddress": "10.144.74.229",
- "mcpDeviceName": "/Common/ansible_test_lab12.lab.local",
- "trustDomainGuid": "44135337-f809-480d-ab6ffa163edc9ff6",
- "properties": {
- "cm:gui:module": [
- "asmsecurity",
- "adc",
- "BigIPDevice",
- "sharedsecurity"
- ],
- "modules": [
- "Web Application Security Group",
- "Security"
- ],
- "cm-bigip-allBigIpDevices": {
- "cm:gui:module": [
- "asmsecurity",
- "adc",
- "BigIPDevice",
- "sharedsecurity"
- ],
- "shared:resolver:device-groups:discoverer": "13446925-efb3-47f4-b32c-ed705d29e878",
- "modules": [
- "Web Application Security Group",
- "Security"
- ]
- },
- "cm-asm-allDevices": {
- "cm:gui:module": [],
- "modules": []
- },
- "cm-bigip-allDevices": {
- "shared:resolver:device-groups:discoverer": "13446925-efb3-47f4-b32c-ed705d29e878",
- "cm:gui:module": [],
- "modules": []
- },
- "cm-adccore-allDevices": {
- "cm:gui:module": [],
- "modules": []
- },
- "cm-security-shared-allSharedDevices": {
- "discovered": true,
- "imported": true,
- "supportsAlpineDosDeviceConfig": true,
- "supports_14_0_Enhs": false,
- "supportsRest": true,
- "supportsAlpineDosProfileEnhs": true,
- "requiresDhcpProfileInDhcpVirtualServer": true,
- "supportsAfmSubscribers": false,
- "supportsAlpineEnhs": true,
- "supports_13_0_Enhs": false,
- "supportsFirewallRuleIdentifiers": false,
- "supportsBadgerEnhs": true,
- "supportsAlpineDosDeviceWhitelistIpProcotol": true,
- "supportsSshProfile": true,
- "supportsPortMisusePolicy": true,
- "supportsAlpineLogProfileEnhs": true,
- "supportsCascadeEnhs": true,
- "supportUdpPortList": true,
- "supports_13_1_Enhs": false,
- "supportsIncrementalDiscovery": false,
- "lastDiscoveredDateTime": "2019-02-12T13:53:06.541Z",
- "lastUserDiscoveredDateTime": "2019-02-12T13:53:06.541Z",
- "importedDateTime": "2019-02-12T13:53:24.885Z",
- "discoveryStatus": "FINISHED",
- "importStatus": "FINISHED",
- "cm:gui:module": [
- "sharedsecurity"
- ],
- "modules": [
- "Security"
- ]
- },
- "cm-adccore-allbigipDevices": {
- "discovered": true,
- "imported": true,
- "supportsRest": true,
- "requiresDhcpProfileInDhcpVirtualServer": true,
- "supportsAlpineEnhs": true,
- "supports_13_0_Enhs": false,
- "supportsFirewallRuleIdentifiers": false,
- "supportsBadgerEnhs": true,
- "restrictsPortTranslationStatelessVirtual": true,
- "supportsClassification": true,
- "supports_13_1_Enhs": false,
- "supportsIncrementalDiscovery": false,
- "supports_12_1_2_Enhs": true,
- "lastDiscoveredDateTime": "2019-02-12T13:53:03.963Z",
- "lastUserDiscoveredDateTime": "2019-02-12T13:53:03.963Z",
- "importedDateTime": "2019-02-12T13:53:18.975Z",
- "discoveryStatus": "FINISHED",
- "importStatus": "FINISHED",
- "cm:gui:module": [
- "adc"
- ],
- "modules": []
- },
- "cm-security-shared-allDevices": {
- "cm:gui:module": [],
- "modules": []
- },
- "cm-asm-allAsmDevices": {
- "discovered": true,
- "imported": true,
- "supportsHostNameEnforcementMode": false,
- "supportsRest": true,
- "supportsServerTechnologies": false,
- "supportsCpb": false,
- "supportsUrlCascadeFeatures": true,
- "supportsSessionTrackingAllLoginPagesUsernameSource": true,
- "supportsLoginEnforcementCascadeFeatures": true,
- "suppportsXmlValidationFiles": true,
- "supportsExtractions": true,
- "supportsWebSocketSecurity": true,
- "supportsWhitelistIpBlockRequestAlways": false,
- "supportsSessionTrackingSessionHijackingByDeviceId": true,
- "supportsLoginPagesHeaderOmits": false,
- "supportsBruteForceAttackPreventionsCascadeFeatures": true,
- "supportsPlainTextProfile": true,
- "supportsIncrementalDiscovery": false,
- "supportsRedirectionProtection": true,
- "supportsHeaderSignaturesOverride": false,
- "supportsIpIntelligence": true,
- "supports_13_0_Enhs": false,
- "supportsFirewallRuleIdentifiers": false,
- "supportsSessionTrackingDeviceIdThresholds": true,
- "supportsLoginEnforcement": true,
- "supportsCsrfProtection": true,
- "supportsSessionTracking": true,
- "supportsJsonProfiles": true,
- "supportsBruteForceAttackPreventions": true,
- "supportsWebScraping": true,
- "supportsLoginPagesCascadeFeatures": true,
- "supportsGwtProfiles": true,
- "supportsXmlProfiles": true,
- "supportsAsmDisallowedGeolocation": true,
- "supportsCsrfUrls": false,
- "supportsDataProtection": false,
- "supportsLoginPages": true,
- "supportsBruteForceAttackPreventionsBadgerFeatures": true,
- "supportsUrlSignaturesOverride": false,
- "signatureAutoUpdateState": true,
- "signatureFileVersion": 1.450112674E12,
- "signatureFilename": "Attack Signature Database packaged with version 12.1.3",
- "lastDiscoveredDateTime": "2019-02-12T13:53:09.188Z",
- "lastUserDiscoveredDateTime": "2019-02-12T13:53:09.188Z",
- "importedDateTime": "2019-02-12T13:53:29.730Z",
- "discoveryStatus": "FINISHED",
- "importStatus": "FINISHED",
- "cm:gui:module": [
- "asmsecurity"
- ],
- "modules": [
- "Web Application Security Group"
- ]
- }
- },
- "isClustered": false,
- "isVirtual": true,
- "isLicenseExpired": false,
- "slots": [
- {
- "volume": "HD1.1",
- "product": "BIG-IP",
- "version": "12.1.3",
- "build": "0.0.378",
- "isActive": true
- }
- ],
- "generation": 4,
- "lastUpdateMicros": 1549979318078796,
- "kind": "shared:resolver:device-groups:restdeviceresolverdevicestate",
- "selfLink": "https://localhost/mgmt/cm/system/machineid-resolver/4dd9f559-c1b9-4e05-8d17-2345a6a3d459"
- }
diff --git a/test/units/modules/network/f5/fixtures/load_net_dns_resolver_1.json b/test/units/modules/network/f5/fixtures/load_net_dns_resolver_1.json
deleted file mode 100644
index bdf3f75593..0000000000
--- a/test/units/modules/network/f5/fixtures/load_net_dns_resolver_1.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "kind": "tm:net:dns-resolver:dns-resolverstate",
- "name": "foo",
- "partition": "Common",
- "fullPath": "/Common/foo",
- "generation": 173,
- "selfLink": "https://localhost/mgmt/tm/net/dns-resolver/~Common~foo?ver=13.1.0.8",
- "answerDefaultZones": "no",
- "cacheSize": 5767168,
- "randomizeQueryNameCase": "yes",
- "routeDomain": "/Common/0",
- "routeDomainReference": {
- "link": "https://localhost/mgmt/tm/net/route-domain/~Common~0?ver=13.1.0.8"
- },
- "useIpv4": "no",
- "useIpv6": "yes",
- "useTcp": "yes",
- "useUdp": "yes"
-}
diff --git a/test/units/modules/network/f5/fixtures/load_net_interfaces.json b/test/units/modules/network/f5/fixtures/load_net_interfaces.json
deleted file mode 100644
index 2cc3032fc8..0000000000
--- a/test/units/modules/network/f5/fixtures/load_net_interfaces.json
+++ /dev/null
@@ -1,424 +0,0 @@
-[
- {
- "kind": "tm:net:interface:interfacestate",
- "name": "1.1",
- "fullPath": "1.1",
- "generation": 7767,
- "selfLink": "https://localhost/mgmt/tm/net/interface/1.1?ver=12.1.0",
- "bundle": "not-supported",
- "bundleSpeed": "not-supported",
- "enabled": true,
- "flowControl": "tx-rx",
- "forceGigabitFiber": "disabled",
- "forwardErrorCorrection": "not-supported",
- "ifIndex": 176,
- "lldpAdmin": "txonly",
- "lldpTlvmap": 130943,
- "macAddress": "00:23:e9:f1:e4:02",
- "mediaActive": "none",
- "mediaFixed": "auto",
- "mediaMax": "1000T-FD",
- "mediaSfp": "auto",
- "mtu": 9198,
- "preferPort": "sfp",
- "qinqEthertype": "0x8100",
- "sflow": {
- "pollInterval": 0,
- "pollIntervalGlobal": "yes"
- },
- "stp": "enabled",
- "stpAutoEdgePort": "enabled",
- "stpEdgePort": "true",
- "stpLinkType": "auto"
- },
- {
- "kind": "tm:net:interface:interfacestate",
- "name": "1.2",
- "fullPath": "1.2",
- "generation": 7770,
- "selfLink": "https://localhost/mgmt/tm/net/interface/1.2?ver=12.1.0",
- "bundle": "not-supported",
- "bundleSpeed": "not-supported",
- "enabled": true,
- "flowControl": "tx-rx",
- "forceGigabitFiber": "disabled",
- "forwardErrorCorrection": "not-supported",
- "ifIndex": 192,
- "lldpAdmin": "txonly",
- "lldpTlvmap": 130943,
- "macAddress": "00:23:e9:f1:e4:03",
- "mediaActive": "none",
- "mediaFixed": "auto",
- "mediaMax": "1000T-FD",
- "mediaSfp": "auto",
- "mtu": 9198,
- "preferPort": "sfp",
- "qinqEthertype": "0x8100",
- "sflow": {
- "pollInterval": 0,
- "pollIntervalGlobal": "yes"
- },
- "stp": "enabled",
- "stpAutoEdgePort": "enabled",
- "stpEdgePort": "true",
- "stpLinkType": "auto"
- },
- {
- "kind": "tm:net:interface:interfacestate",
- "name": "1.3",
- "fullPath": "1.3",
- "generation": 7773,
- "selfLink": "https://localhost/mgmt/tm/net/interface/1.3?ver=12.1.0",
- "bundle": "not-supported",
- "bundleSpeed": "not-supported",
- "enabled": true,
- "flowControl": "tx-rx",
- "forceGigabitFiber": "disabled",
- "forwardErrorCorrection": "not-supported",
- "ifIndex": 208,
- "lldpAdmin": "txonly",
- "lldpTlvmap": 130943,
- "macAddress": "00:23:e9:f1:e4:04",
- "mediaActive": "none",
- "mediaFixed": "auto",
- "mediaMax": "1000T-FD",
- "mediaSfp": "auto",
- "mtu": 9198,
- "preferPort": "sfp",
- "qinqEthertype": "0x8100",
- "sflow": {
- "pollInterval": 0,
- "pollIntervalGlobal": "yes"
- },
- "stp": "enabled",
- "stpAutoEdgePort": "enabled",
- "stpEdgePort": "true",
- "stpLinkType": "auto"
- },
- {
- "kind": "tm:net:interface:interfacestate",
- "name": "1.4",
- "fullPath": "1.4",
- "generation": 7776,
- "selfLink": "https://localhost/mgmt/tm/net/interface/1.4?ver=12.1.0",
- "bundle": "not-supported",
- "bundleSpeed": "not-supported",
- "enabled": true,
- "flowControl": "tx-rx",
- "forceGigabitFiber": "disabled",
- "forwardErrorCorrection": "not-supported",
- "ifIndex": 224,
- "lldpAdmin": "txonly",
- "lldpTlvmap": 130943,
- "macAddress": "00:23:e9:f1:e4:05",
- "mediaActive": "none",
- "mediaFixed": "auto",
- "mediaMax": "1000T-FD",
- "mediaSfp": "auto",
- "mtu": 9198,
- "preferPort": "sfp",
- "qinqEthertype": "0x8100",
- "sflow": {
- "pollInterval": 0,
- "pollIntervalGlobal": "yes"
- },
- "stp": "enabled",
- "stpAutoEdgePort": "enabled",
- "stpEdgePort": "true",
- "stpLinkType": "auto"
- },
- {
- "kind": "tm:net:interface:interfacestate",
- "name": "2.1",
- "fullPath": "2.1",
- "generation": 7859,
- "selfLink": "https://localhost/mgmt/tm/net/interface/2.1?ver=12.1.0",
- "bundle": "not-supported",
- "bundleSpeed": "not-supported",
- "enabled": true,
- "flowControl": "tx-rx",
- "forceGigabitFiber": "disabled",
- "forwardErrorCorrection": "not-supported",
- "ifIndex": 240,
- "lldpAdmin": "txonly",
- "lldpTlvmap": 130943,
- "macAddress": "00:23:e9:f1:e4:06",
- "mediaActive": "10000SR-FD",
- "mediaFixed": "auto",
- "mediaMax": "10000T-FD",
- "mediaSfp": "auto",
- "moduleDescription": "F5 compatible optics",
- "mtu": 9198,
- "preferPort": "sfp",
- "qinqEthertype": "0x8100",
- "serial": "ARP2LGU",
- "sflow": {
- "pollInterval": 0,
- "pollIntervalGlobal": "yes"
- },
- "stp": "enabled",
- "stpAutoEdgePort": "enabled",
- "stpEdgePort": "true",
- "stpLinkType": "auto",
- "vendor": "F5 NETWORKS INC.",
- "vendorOui": "009065",
- "vendorPartnum": "OPT-0016",
- "vendorRevision": "A0"
- },
- {
- "kind": "tm:net:interface:interfacestate",
- "name": "2.2",
- "fullPath": "2.2",
- "generation": 7746,
- "selfLink": "https://localhost/mgmt/tm/net/interface/2.2?ver=12.1.0",
- "bundle": "not-supported",
- "bundleSpeed": "not-supported",
- "enabled": true,
- "flowControl": "tx-rx",
- "forceGigabitFiber": "disabled",
- "forwardErrorCorrection": "not-supported",
- "ifIndex": 256,
- "lldpAdmin": "txonly",
- "lldpTlvmap": 130943,
- "macAddress": "00:23:e9:f1:e4:07",
- "mediaActive": "none",
- "mediaFixed": "auto",
- "mediaMax": "10000T-FD",
- "mediaSfp": "auto",
- "mtu": 9198,
- "preferPort": "sfp",
- "qinqEthertype": "0x8100",
- "sflow": {
- "pollInterval": 0,
- "pollIntervalGlobal": "yes"
- },
- "stp": "enabled",
- "stpAutoEdgePort": "enabled",
- "stpEdgePort": "true",
- "stpLinkType": "auto"
- },
- {
- "kind": "tm:net:interface:interfacestate",
- "name": "2.3",
- "fullPath": "2.3",
- "generation": 7749,
- "selfLink": "https://localhost/mgmt/tm/net/interface/2.3?ver=12.1.0",
- "bundle": "not-supported",
- "bundleSpeed": "not-supported",
- "enabled": true,
- "flowControl": "tx-rx",
- "forceGigabitFiber": "disabled",
- "forwardErrorCorrection": "not-supported",
- "ifIndex": 272,
- "lldpAdmin": "txonly",
- "lldpTlvmap": 130943,
- "macAddress": "00:23:e9:f1:e4:08",
- "mediaActive": "none",
- "mediaFixed": "auto",
- "mediaMax": "10000T-FD",
- "mediaSfp": "auto",
- "mtu": 9198,
- "preferPort": "sfp",
- "qinqEthertype": "0x8100",
- "sflow": {
- "pollInterval": 0,
- "pollIntervalGlobal": "yes"
- },
- "stp": "enabled",
- "stpAutoEdgePort": "enabled",
- "stpEdgePort": "true",
- "stpLinkType": "auto"
- },
- {
- "kind": "tm:net:interface:interfacestate",
- "name": "2.4",
- "fullPath": "2.4",
- "generation": 7752,
- "selfLink": "https://localhost/mgmt/tm/net/interface/2.4?ver=12.1.0",
- "bundle": "not-supported",
- "bundleSpeed": "not-supported",
- "enabled": true,
- "flowControl": "tx-rx",
- "forceGigabitFiber": "disabled",
- "forwardErrorCorrection": "not-supported",
- "ifIndex": 288,
- "lldpAdmin": "txonly",
- "lldpTlvmap": 130943,
- "macAddress": "00:23:e9:f1:e4:09",
- "mediaActive": "none",
- "mediaFixed": "auto",
- "mediaMax": "10000T-FD",
- "mediaSfp": "auto",
- "mtu": 9198,
- "preferPort": "sfp",
- "qinqEthertype": "0x8100",
- "sflow": {
- "pollInterval": 0,
- "pollIntervalGlobal": "yes"
- },
- "stp": "enabled",
- "stpAutoEdgePort": "enabled",
- "stpEdgePort": "true",
- "stpLinkType": "auto"
- },
- {
- "kind": "tm:net:interface:interfacestate",
- "name": "2.5",
- "fullPath": "2.5",
- "generation": 7755,
- "selfLink": "https://localhost/mgmt/tm/net/interface/2.5?ver=12.1.0",
- "bundle": "not-supported",
- "bundleSpeed": "not-supported",
- "enabled": true,
- "flowControl": "tx-rx",
- "forceGigabitFiber": "disabled",
- "forwardErrorCorrection": "not-supported",
- "ifIndex": 304,
- "lldpAdmin": "txonly",
- "lldpTlvmap": 130943,
- "macAddress": "00:23:e9:f1:e4:0a",
- "mediaActive": "none",
- "mediaFixed": "auto",
- "mediaMax": "10000T-FD",
- "mediaSfp": "auto",
- "mtu": 9198,
- "preferPort": "sfp",
- "qinqEthertype": "0x8100",
- "sflow": {
- "pollInterval": 0,
- "pollIntervalGlobal": "yes"
- },
- "stp": "enabled",
- "stpAutoEdgePort": "enabled",
- "stpEdgePort": "true",
- "stpLinkType": "auto"
- },
- {
- "kind": "tm:net:interface:interfacestate",
- "name": "2.6",
- "fullPath": "2.6",
- "generation": 7758,
- "selfLink": "https://localhost/mgmt/tm/net/interface/2.6?ver=12.1.0",
- "bundle": "not-supported",
- "bundleSpeed": "not-supported",
- "enabled": true,
- "flowControl": "tx-rx",
- "forceGigabitFiber": "disabled",
- "forwardErrorCorrection": "not-supported",
- "ifIndex": 320,
- "lldpAdmin": "txonly",
- "lldpTlvmap": 130943,
- "macAddress": "00:23:e9:f1:e4:0b",
- "mediaActive": "none",
- "mediaFixed": "auto",
- "mediaMax": "10000T-FD",
- "mediaSfp": "auto",
- "mtu": 9198,
- "preferPort": "sfp",
- "qinqEthertype": "0x8100",
- "sflow": {
- "pollInterval": 0,
- "pollIntervalGlobal": "yes"
- },
- "stp": "enabled",
- "stpAutoEdgePort": "enabled",
- "stpEdgePort": "true",
- "stpLinkType": "auto"
- },
- {
- "kind": "tm:net:interface:interfacestate",
- "name": "2.7",
- "fullPath": "2.7",
- "generation": 7761,
- "selfLink": "https://localhost/mgmt/tm/net/interface/2.7?ver=12.1.0",
- "bundle": "not-supported",
- "bundleSpeed": "not-supported",
- "enabled": true,
- "flowControl": "tx-rx",
- "forceGigabitFiber": "disabled",
- "forwardErrorCorrection": "not-supported",
- "ifIndex": 336,
- "lldpAdmin": "txonly",
- "lldpTlvmap": 130943,
- "macAddress": "00:23:e9:f1:e4:0c",
- "mediaActive": "none",
- "mediaFixed": "auto",
- "mediaMax": "10000T-FD",
- "mediaSfp": "auto",
- "mtu": 9198,
- "preferPort": "sfp",
- "qinqEthertype": "0x8100",
- "sflow": {
- "pollInterval": 0,
- "pollIntervalGlobal": "yes"
- },
- "stp": "enabled",
- "stpAutoEdgePort": "enabled",
- "stpEdgePort": "true",
- "stpLinkType": "auto"
- },
- {
- "kind": "tm:net:interface:interfacestate",
- "name": "2.8",
- "fullPath": "2.8",
- "generation": 7764,
- "selfLink": "https://localhost/mgmt/tm/net/interface/2.8?ver=12.1.0",
- "bundle": "not-supported",
- "bundleSpeed": "not-supported",
- "enabled": true,
- "flowControl": "tx-rx",
- "forceGigabitFiber": "disabled",
- "forwardErrorCorrection": "not-supported",
- "ifIndex": 352,
- "lldpAdmin": "txonly",
- "lldpTlvmap": 130943,
- "macAddress": "00:23:e9:f1:e4:0d",
- "mediaActive": "none",
- "mediaFixed": "auto",
- "mediaMax": "10000T-FD",
- "mediaSfp": "auto",
- "mtu": 9198,
- "preferPort": "sfp",
- "qinqEthertype": "0x8100",
- "sflow": {
- "pollInterval": 0,
- "pollIntervalGlobal": "yes"
- },
- "stp": "enabled",
- "stpAutoEdgePort": "enabled",
- "stpEdgePort": "true",
- "stpLinkType": "auto"
- },
- {
- "kind": "tm:net:interface:interfacestate",
- "name": "mgmt",
- "fullPath": "mgmt",
- "generation": 7651,
- "selfLink": "https://localhost/mgmt/tm/net/interface/mgmt?ver=12.1.0",
- "bundle": "not-supported",
- "bundleSpeed": "not-supported",
- "enabled": true,
- "flowControl": "tx-rx",
- "forceGigabitFiber": "disabled",
- "forwardErrorCorrection": "not-supported",
- "ifIndex": 96,
- "lldpAdmin": "txonly",
- "lldpTlvmap": 130943,
- "macAddress": "00:23:e9:f1:e4:01",
- "mediaActive": "1000T-FD",
- "mediaFixed": "auto",
- "mediaMax": "1000T-FD",
- "mediaSfp": "auto",
- "mtu": 1500,
- "preferPort": "sfp",
- "qinqEthertype": "0x8100",
- "sflow": {
- "pollInterval": 0,
- "pollIntervalGlobal": "yes"
- },
- "stp": "enabled",
- "stpAutoEdgePort": "enabled",
- "stpEdgePort": "true",
- "stpLinkType": "auto"
- }
- ]
diff --git a/test/units/modules/network/f5/fixtures/load_net_node_with_fqdn.json b/test/units/modules/network/f5/fixtures/load_net_node_with_fqdn.json
deleted file mode 100644
index 67c02568d5..0000000000
--- a/test/units/modules/network/f5/fixtures/load_net_node_with_fqdn.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "kind": "tm:ltm:node:nodestate",
- "name": "foo.bar.com",
- "partition": "Common",
- "fullPath": "/Common/foo.bar.com",
- "generation": 157,
- "selfLink": "https://localhost/mgmt/tm/ltm/node/~Common~foo.bar.com?ver=12.0.0",
- "address": "any6",
- "connectionLimit": 0,
- "dynamicRatio": 1,
- "ephemeral": "false",
- "fqdn": {
- "addressFamily": "ipv4",
- "autopopulate": "enabled",
- "downInterval": 5,
- "interval": "3600",
- "tmName": "foo.bar.com"
- },
- "logging": "disabled",
- "monitor": "default",
- "rateLimit": "disabled",
- "ratio": 1,
- "session": "user-enabled",
- "state": "fqdn-up-no-addr"
-}
diff --git a/test/units/modules/network/f5/fixtures/load_net_node_with_ipv4_address.json b/test/units/modules/network/f5/fixtures/load_net_node_with_ipv4_address.json
deleted file mode 100644
index 9e3be88929..0000000000
--- a/test/units/modules/network/f5/fixtures/load_net_node_with_ipv4_address.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "kind": "tm:ltm:node:nodestate",
- "name": "7.3.67.8",
- "partition": "Common",
- "fullPath": "/Common/7.3.67.8",
- "generation": 162,
- "selfLink": "https://localhost/mgmt/tm/ltm/node/~Common~7.3.67.8?ver=12.0.0",
- "address": "7.3.67.8",
- "connectionLimit": 0,
- "dynamicRatio": 1,
- "ephemeral": "false",
- "fqdn": {
- "addressFamily": "ipv4",
- "autopopulate": "disabled",
- "downInterval": 5,
- "interval": "3600"
- },
- "logging": "disabled",
- "monitor": "default",
- "rateLimit": "disabled",
- "ratio": 1,
- "session": "user-enabled",
- "state": "unchecked"
-}
diff --git a/test/units/modules/network/f5/fixtures/load_net_route_description.json b/test/units/modules/network/f5/fixtures/load_net_route_description.json
deleted file mode 100644
index a7c47bc8fe..0000000000
--- a/test/units/modules/network/f5/fixtures/load_net_route_description.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "kind": "tm:net:route:routestate",
- "name": "asdasd",
- "partition": "Common",
- "fullPath": "/Common/asdasd",
- "generation": 113,
- "selfLink": "https://localhost/mgmt/tm/net/route/~Common~asdasd?ver=12.1.0",
- "description": "asdasd",
- "mtu": 0,
- "network": "2.2.2.2/32",
- "pool": "/Common/adsasd",
- "poolReference": {
- "link": "https://localhost/mgmt/tm/ltm/pool/~Common~adsasd?ver=12.1.0"
- }
-} \ No newline at end of file
diff --git a/test/units/modules/network/f5/fixtures/load_net_route_domain_1.json b/test/units/modules/network/f5/fixtures/load_net_route_domain_1.json
deleted file mode 100644
index 6ff8c5dfc8..0000000000
--- a/test/units/modules/network/f5/fixtures/load_net_route_domain_1.json
+++ /dev/null
@@ -1,36 +0,0 @@
-{
- "kind": "tm:net:route-domain:route-domainstate",
- "name": "0",
- "partition": "Common",
- "fullPath": "/Common/0",
- "generation": 1,
- "selfLink": "https://localhost/mgmt/tm/net/route-domain/~Common~0?ver=13.1.0",
- "connectionLimit": 0,
- "id": 0,
- "strict": "enabled",
- "throughputCapacity": 0,
- "vlans": [
- "/Common/net1",
- "/Common/internal",
- "/Common/net2",
- "/Common/socks-tunnel",
- "/Common/http-tunnel"
- ],
- "vlansReference": [
- {
- "link": "https://localhost/mgmt/tm/net/vlan/~Common~net1?ver=13.1.0"
- },
- {
- "link": "https://localhost/mgmt/tm/net/vlan/~Common~internal?ver=13.1.0"
- },
- {
- "link": "https://localhost/mgmt/tm/net/vlan/~Common~net2?ver=13.1.0"
- },
- {
- "link": "https://localhost/mgmt/tm/net/tunnels/tunnel/~Common~socks-tunnel?ver=13.1.0"
- },
- {
- "link": "https://localhost/mgmt/tm/net/tunnels/tunnel/~Common~http-tunnel?ver=13.1.0"
- }
- ]
-}
diff --git a/test/units/modules/network/f5/fixtures/load_net_service_policy_1.json b/test/units/modules/network/f5/fixtures/load_net_service_policy_1.json
deleted file mode 100644
index a89ca59ffe..0000000000
--- a/test/units/modules/network/f5/fixtures/load_net_service_policy_1.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "kind": "tm:net:service-policy:service-policystate",
- "name": "baz",
- "partition": "Common",
- "fullPath": "/Common/baz",
- "generation": 581,
- "selfLink": "https://localhost/mgmt/tm/net/service-policy/~Common~baz?ver=13.1.0.4",
- "description": "my description",
- "portMisusePolicy": "/Common/bar",
- "portMisusePolicyReference": {
- "link": "https://localhost/mgmt/tm/security/firewall/port-misuse-policy/~Common~bar?ver=13.1.0.4"
- },
- "timerPolicy": "/Common/foo",
- "timerPolicyReference": {
- "link": "https://localhost/mgmt/tm/net/timer-policy/~Common~foo?ver=13.1.0.4"
- }
-}
diff --git a/test/units/modules/network/f5/fixtures/load_net_timer_policy_1.json b/test/units/modules/network/f5/fixtures/load_net_timer_policy_1.json
deleted file mode 100644
index 4b6f550a58..0000000000
--- a/test/units/modules/network/f5/fixtures/load_net_timer_policy_1.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "kind": "tm:net:timer-policy:timer-policystate",
- "name": "timer1",
- "partition": "Common",
- "fullPath": "/Common/timer1",
- "generation": 148,
- "selfLink": "https://localhost/mgmt/tm/net/timer-policy/~Common~timer1?ver=13.1.0.4",
- "description": "my description"
-}
diff --git a/test/units/modules/network/f5/fixtures/load_net_tunnel_1.json b/test/units/modules/network/f5/fixtures/load_net_tunnel_1.json
deleted file mode 100644
index dd0e484268..0000000000
--- a/test/units/modules/network/f5/fixtures/load_net_tunnel_1.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "kind": "tm:net:tunnels:tunnel:tunnelstate",
- "name": "tunnel1",
- "partition": "Common",
- "fullPath": "/Common/tunnel1",
- "generation": 3713,
- "selfLink": "https://localhost/mgmt/tm/net/tunnels/tunnel/~Common~tunnel1?ver=13.1.0.7",
- "autoLasthop": "default",
- "description": "my other tunnel",
- "idleTimeout": 300,
- "ifIndex": 736,
- "key": 0,
- "localAddress": "3.3.3.3",
- "mode": "bidirectional",
- "mtu": 1000,
- "profile": "/Common/ipip",
- "profileReference": {
- "link": "https://localhost/mgmt/tm/net/tunnels/ipip/~Common~ipip?ver=13.1.0.7"
- },
- "remoteAddress": "4.4.4.4",
- "secondaryAddress": "any6",
- "tos": "preserve",
- "transparent": "disabled",
- "usePmtu": "enabled"
-}
diff --git a/test/units/modules/network/f5/fixtures/load_ntp.json b/test/units/modules/network/f5/fixtures/load_ntp.json
deleted file mode 100644
index 3b55b4870e..0000000000
--- a/test/units/modules/network/f5/fixtures/load_ntp.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "kind": "tm:sys:ntp:ntpstate",
- "selfLink": "https://localhost/mgmt/tm/sys/ntp?ver=12.1.0",
- "servers": [
- "192.168.1.1",
- "192.168.1.2"
- ],
- "timezone": "America/Los_Angeles",
- "restrictReference": {
- "link": "https://localhost/mgmt/tm/sys/ntp/restrict?ver=12.1.0",
- "isSubcollection": true
- }
-} \ No newline at end of file
diff --git a/test/units/modules/network/f5/fixtures/load_regkey_license_key.json b/test/units/modules/network/f5/fixtures/load_regkey_license_key.json
deleted file mode 100644
index 8a781d1dab..0000000000
--- a/test/units/modules/network/f5/fixtures/load_regkey_license_key.json
+++ /dev/null
@@ -1,96 +0,0 @@
-{
- "description": "foo bar baz",
- "dossier": "5d54d976",
- "encryptedPrivateKey": [
- 27,
- -10,
- 12,
- 58,
- 75
- ],
- "generation": 2,
- "internalPrivateKey": "sKpXEU7",
- "kind": "cm:device:licensing:pool:regkey:licenses:item:offerings:regkeypoollicenseofferingstate",
- "lastUpdateMicros": 1513107721123304,
- "licenseState": {
- "vendor": "F5 Networks, Inc.",
- "licensedDateTime": "2017-12-12T00:00:00-08:00",
- "licensedVersion": "5.3.0",
- "evaluationStartDateTime": "2017-12-11T00:00:00-08:00",
- "evaluationEndDateTime": "2018-01-12T00:00:00-08:00",
- "licenseEndDateTime": "2018-01-12T00:00:00-08:00",
- "licenseStartDateTime": "2017-12-11T00:00:00-08:00",
- "registrationKey": "XXXX-XXXX-XXXX-XXXX-XXXX",
- "dossier": "1a44262799bc",
- "authorization": "03fc41d1e8666",
- "usage": "F5 Internal Product Development",
- "platformId": "Z100",
- "authVers": "5b",
- "serviceCheckDateTime": "2017-12-12T00:00:00-08:00",
- "serviceStatus": "As of 2017-12-12 there is no active service contract. This may inhibit your ability to upgrade your software.",
- "exclusivePlatform": [
- "Z100",
- "Z100A",
- "Z100AzureCloud",
- "Z100GoogleCloud",
- "Z100K",
- "Z100x",
- "Z100H"
- ],
- "activeModules": [
- "APM, Max, VE (2500 CCU, 10000 Access Sessions)|P961057-1761515|Anti-Virus Checks",
- "LTM, 10 Gbps, VE|T487107-2453693|, VE|DNSSEC",
- "PEM, VE|X895364-1851682"
- ],
- "optionalModules": [
- "APM, Base, VE (50 CCU / 200 AS)",
- "App Mode (TMSH Only, No Root/Bash)",
- "Concurrent Users",
- "Concurrent Users and Access Sessions, VE",
- "FIPS 140-2 Level 1, BIG-IP VE-1G to 10G",
- "IP Intelligence, 1Yr, VE",
- "IP Intelligence, 1Yr, VE-10G",
- "IP Intelligence, 3Yr, VE-10G",
- "LTM to Better Bundle Upgrade, 10Gbps",
- "PEM URL Filtering, 1Yr, HIGH PERF",
- "PEM URL Filtering, 3Yr, HIGH PERF",
- "Routing Bundle",
- "Secure Web Gateway, 1Yr, VE",
- "URL Filtering, 1Yr, VE"
- ],
- "moduleEvaluations": [
- {
- "moduleName": "IP Intelligence, 3Yr, VE|SUBSCRIPTION",
- "endDate": "soon"
- },
- {
- "moduleName": "Secure Web Gateway, 3Yr, VE|SUBSCRIPTION",
- "endDate": "soon"
- },
- {
- "moduleName": "URL Filtering, 3Yr, VE|SUBSCRIPTION",
- "endDate": "soon"
- }
- ],
- "featureFlags": [
- {
- "featureName": "gtm_rate_limit",
- "featureValue": "12345"
- }
- ],
- "generation": 0,
- "lastUpdateMicros": 0
- },
- "licenseText": "#Auth vers : BIG-IQ Product License File#",
- "message": "License XXXX-XXXX-XXXX-XXXX-XXXX ready",
- "name": "License for XXXX-XXXX-XXXX-XXXX-XXXX",
- "publicKey": [
- 48,
- 0,
- 1
- ],
- "regKey": "XXXX-XXXX-XXXX-XXXX-XXXX",
- "selfLink": "https://localhost/mgmt/cm/device/licensing/pool/regkey/licenses/452f8628-1e56-4b4d-946c-0e68f5780aa1/offerings/XXXX-XXXX-XXXX-XXXX-XXXX",
- "sortName": "Registration Key Pool Item",
- "status": "READY"
-}
diff --git a/test/units/modules/network/f5/fixtures/load_regkey_license_pool.json b/test/units/modules/network/f5/fixtures/load_regkey_license_pool.json
deleted file mode 100644
index f711817f7f..0000000000
--- a/test/units/modules/network/f5/fixtures/load_regkey_license_pool.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "description": "this is a description",
- "generation": 2,
- "id": "452f8628-1e56-4b4d-946c-0e68f5780aa1",
- "kind": "cm:device:licensing:pool:regkey:licenses:regkeypoollicensestate",
- "lastUpdateMicros": 1513371645532221,
- "name": "asd",
- "selfLink": "https://localhost/mgmt/cm/device/licensing/pool/regkey/licenses/452f8628-1e56-4b4d-946c-0e68f5780aa1",
- "sortName": "Registration Key Pool"
-}
diff --git a/test/units/modules/network/f5/fixtures/load_remote_user_settings.json b/test/units/modules/network/f5/fixtures/load_remote_user_settings.json
deleted file mode 100644
index 296f462f97..0000000000
--- a/test/units/modules/network/f5/fixtures/load_remote_user_settings.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "kind": "tm:auth:remote-user:remote-userstate",
- "selfLink": "https://localhost/mgmt/tm/auth/remote-user?ver=12.1.4",
- "defaultPartition": "all",
- "defaultPartitionReference": {
- "link": "https://localhost/mgmt/tm/auth/partition/all?ver=12.1.4"
- },
- "defaultRole": "no-access",
- "remoteConsoleAccess": "disabled"
-}
diff --git a/test/units/modules/network/f5/fixtures/load_security_address_list_1.json b/test/units/modules/network/f5/fixtures/load_security_address_list_1.json
deleted file mode 100644
index 45aca1e3cd..0000000000
--- a/test/units/modules/network/f5/fixtures/load_security_address_list_1.json
+++ /dev/null
@@ -1,53 +0,0 @@
-{
- "kind": "tm:security:firewall:address-list:address-liststate",
- "name": "bar",
- "partition": "Common",
- "fullPath": "/Common/bar",
- "generation": 135,
- "selfLink": "https://localhost/mgmt/tm/security/firewall/address-list/~Common~bar?ver=12.1.2",
- "addressLists": [
- {
- "name": "foo",
- "partition": "Common",
- "nameReference": {
- "link": "https://localhost/mgmt/tm/security/firewall/address-list/~Common~foo?ver=12.1.2"
- }
- }
- ],
- "addresses": [
- {
- "name": "1.1.1.1"
- },
- {
- "name": "2.2.2.2-3.3.3.3"
- },
- {
- "name": "5.5.5.5-6.6.6.6"
- },
- {
- "name": "2700:bc00:1f10:101::6"
- }
- ],
- "fqdns": [
- {
- "name": "google.com"
- }
- ],
- "geo": [
- {
- "name": "AF:Baghlan"
- },
- {
- "name": "AF:Helmand"
- },
- {
- "name": "BS"
- },
- {
- "name": "EU"
- },
- {
- "name": "GE:Marneulis Raioni"
- }
- ]
-}
diff --git a/test/units/modules/network/f5/fixtures/load_security_firewall_global_rules_1.json b/test/units/modules/network/f5/fixtures/load_security_firewall_global_rules_1.json
deleted file mode 100644
index 80f475eb47..0000000000
--- a/test/units/modules/network/f5/fixtures/load_security_firewall_global_rules_1.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "kind": "tm:security:firewall:global-rules:global-rulesstate",
- "selfLink": "https://localhost/mgmt/tm/security/firewall/global-rules?ver=13.1.0.7",
- "enforcedPolicy": "/Common/foo",
- "enforcedPolicyReference": {
- "link": "https://localhost/mgmt/tm/security/firewall/policy/~Common~foo?ver=13.1.0.7"
- },
- "servicePolicy": "/Common/bar",
- "servicePolicyReference": {
- "link": "https://localhost/mgmt/tm/net/service-policy/~Common~bar?ver=13.1.0.7"
- },
- "stagedPolicy": "/Common/baz",
- "stagedPolicyReference": {
- "link": "https://localhost/mgmt/tm/security/firewall/policy/~Common~baz?ver=13.1.0.7"
- }
-}
diff --git a/test/units/modules/network/f5/fixtures/load_security_firewall_policy_1.json b/test/units/modules/network/f5/fixtures/load_security_firewall_policy_1.json
deleted file mode 100644
index 9c24605883..0000000000
--- a/test/units/modules/network/f5/fixtures/load_security_firewall_policy_1.json
+++ /dev/null
@@ -1,51 +0,0 @@
-{
- "kind": "tm:security:firewall:policy:policystate",
- "name": "foo",
- "partition": "Common",
- "fullPath": "/Common/foo",
- "generation": 2075,
- "selfLink": "https://localhost/mgmt/tm/security/firewall/policy/~Common~foo?expandSubcollections=true&ver=13.1.0.7",
- "description": "my description",
- "rulesReference": {
- "link": "https://localhost/mgmt/tm/security/firewall/policy/~Common~foo/rules?ver=13.1.0.7",
- "isSubcollection": true,
- "items": [
- {
- "kind": "tm:security:firewall:policy:rules:rulesstate",
- "name": "rule1",
- "fullPath": "rule1",
- "generation": 2075,
- "selfLink": "https://localhost/mgmt/tm/security/firewall/policy/~Common~foo/rules/rule1?ver=13.1.0.7",
- "action": "accept",
- "ipProtocol": "any",
- "iruleSampleRate": 1,
- "log": "no",
- "status": "enabled"
- },
- {
- "kind": "tm:security:firewall:policy:rules:rulesstate",
- "name": "rule2",
- "fullPath": "rule2",
- "generation": 2075,
- "selfLink": "https://localhost/mgmt/tm/security/firewall/policy/~Common~foo/rules/rule2?ver=13.1.0.7",
- "action": "accept",
- "ipProtocol": "any",
- "iruleSampleRate": 1,
- "log": "no",
- "status": "enabled"
- },
- {
- "kind": "tm:security:firewall:policy:rules:rulesstate",
- "name": "rule3",
- "fullPath": "rule3",
- "generation": 2074,
- "selfLink": "https://localhost/mgmt/tm/security/firewall/policy/~Common~foo/rules/rule3?ver=13.1.0.7",
- "action": "accept",
- "ipProtocol": "any",
- "iruleSampleRate": 1,
- "log": "no",
- "status": "enabled"
- }
- ]
- }
-}
diff --git a/test/units/modules/network/f5/fixtures/load_security_port_list_1.json b/test/units/modules/network/f5/fixtures/load_security_port_list_1.json
deleted file mode 100644
index ec639dacf8..0000000000
--- a/test/units/modules/network/f5/fixtures/load_security_port_list_1.json
+++ /dev/null
@@ -1,41 +0,0 @@
-{
- "kind": "tm:security:firewall:port-list:port-liststate",
- "name": "foo",
- "partition": "Common",
- "fullPath": "/Common/foo",
- "generation": 119,
- "description": "this is a description",
- "selfLink": "https://localhost/mgmt/tm/security/firewall/port-list/~Common~foo?ver=12.1.0",
- "portLists": [
- {
- "name": "_sys_self_allow_tcp_defaults",
- "partition": "Common",
- "nameReference": {
- "link": "https://localhost/mgmt/tm/security/firewall/port-list/~Common~_sys_self_allow_tcp_defaults?ver=12.1.0"
- }
- }
- ],
- "ports": [
- {
- "name": "1"
- },
- {
- "name": "2"
- },
- {
- "name": "3"
- },
- {
- "name": "4"
- },
- {
- "name": "10-20"
- },
- {
- "name": "30-40"
- },
- {
- "name": "50-60"
- }
- ]
-}
diff --git a/test/units/modules/network/f5/fixtures/load_shared_system_setup_1.json b/test/units/modules/network/f5/fixtures/load_shared_system_setup_1.json
deleted file mode 100644
index 8f886e1453..0000000000
--- a/test/units/modules/network/f5/fixtures/load_shared_system_setup_1.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "isSystemSetup": true,
- "isAdminPasswordChanged": false,
- "isRootPasswordChanged": true,
- "generation": 7,
- "lastUpdateMicros": 1536357209120972,
- "kind": "shared:system:setup:systemsetupworkerstate",
- "selfLink": "https://localhost/mgmt/shared/system/setup"
-}
diff --git a/test/units/modules/network/f5/fixtures/load_sys_application_template_w_new_checksum.json b/test/units/modules/network/f5/fixtures/load_sys_application_template_w_new_checksum.json
deleted file mode 100644
index 57f3c3755a..0000000000
--- a/test/units/modules/network/f5/fixtures/load_sys_application_template_w_new_checksum.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "kind": "tm:sys:application:template:templatestate",
- "name": "good_templ",
- "partition": "Common",
- "fullPath": "/Common/good_templ",
- "generation": 410,
- "selfLink": "https://localhost/mgmt/tm/sys/application/template/~Common~good_templ?ver=13.0.0",
- "description": "My basic template",
- "ignoreVerification": "false",
- "requiresBigipVersionMin": "11.6.0",
- "requiresModules": [
- "ltm"
- ],
- "tmplChecksum": "90c46acee5ca08e300da0bcdb9130745",
- "totalSigningStatus": "checksum",
- "verificationStatus": "checksum-verified",
- "actionsReference": {
- "link": "https://localhost/mgmt/tm/sys/application/template/~Common~good_templ/actions?ver=13.0.0",
- "isSubcollection": true
- }
-}
diff --git a/test/units/modules/network/f5/fixtures/load_sys_application_template_w_old_checksum.json b/test/units/modules/network/f5/fixtures/load_sys_application_template_w_old_checksum.json
deleted file mode 100644
index da477515bf..0000000000
--- a/test/units/modules/network/f5/fixtures/load_sys_application_template_w_old_checksum.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "kind": "tm:sys:application:template:templatestate",
- "name": "good_templ",
- "partition": "Common",
- "fullPath": "/Common/good_templ",
- "generation": 410,
- "selfLink": "https://localhost/mgmt/tm/sys/application/template/~Common~good_templ?ver=13.0.0",
- "description": "My basic foo bar",
- "ignoreVerification": "false",
- "requiresBigipVersionMin": "12.0.0",
- "requiresModules": [
- "ltm"
- ],
- "tmplChecksum": "eee01710dbe330d380d1a4fa30eeabdb",
- "totalSigningStatus": "checksum",
- "verificationStatus": "checksum-verified",
- "actionsReference": {
- "link": "https://localhost/mgmt/tm/sys/application/template/~Common~good_templ/actions?ver=13.0.0",
- "isSubcollection": true
- }
-}
diff --git a/test/units/modules/network/f5/fixtures/load_sys_crypto_cert_validator_1.json b/test/units/modules/network/f5/fixtures/load_sys_crypto_cert_validator_1.json
deleted file mode 100644
index 59da203a5d..0000000000
--- a/test/units/modules/network/f5/fixtures/load_sys_crypto_cert_validator_1.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "kind": "tm:sys:crypto:cert-validator:ocsp:ocspstate",
- "name": "asd",
- "partition": "Common",
- "fullPath": "/Common/asd",
- "generation": 151,
- "selfLink": "https://localhost/mgmt/tm/sys/crypto/cert-validator/ocsp/~Common~asd?ver=13.1.0.8",
- "cacheErrorTimeout": 3600,
- "cacheTimeout": "indefinite",
- "clockSkew": 300,
- "concurrentConnectionsLimit": 500,
- "dnsResolver": "/Common/foo",
- "dnsResolverReference": {
- "link": "https://localhost/mgmt/tm/net/dns-resolver/~Common~foo?ver=13.1.0.8"
- },
- "routeDomain": "/Common/0",
- "routeDomainReference": {
- "link": "https://localhost/mgmt/tm/net/route-domain/~Common~0?ver=13.1.0.8"
- },
- "signHash": "sha256",
- "signerCert": "/Common/default.crt",
- "signerCertReference": {
- "link": "https://localhost/mgmt/tm/sys/file/ssl-cert/~Common~default.crt?ver=13.1.0.8"
- },
- "signerKey": "/Common/default.key",
- "signerKeyReference": {
- "link": "https://localhost/mgmt/tm/sys/file/ssl-key/~Common~default.key?ver=13.1.0.8"
- },
- "signerKeyPassphrase": "secret",
- "statusAge": 0,
- "strictRespCertCheck": "enabled",
- "timeout": 8
-}
diff --git a/test/units/modules/network/f5/fixtures/load_sys_file_external-monitor_1.json b/test/units/modules/network/f5/fixtures/load_sys_file_external-monitor_1.json
deleted file mode 100644
index 70dcbc23f0..0000000000
--- a/test/units/modules/network/f5/fixtures/load_sys_file_external-monitor_1.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "kind": "tm:sys:file:external-monitor:external-monitorstate",
- "name": "arg_example",
- "partition": "Common",
- "fullPath": "/Common/arg_example",
- "generation": 1,
- "selfLink": "https://localhost/mgmt/tm/sys/file/external-monitor/~Common~arg_example?ver=13.1.0.8",
- "checksum": "SHA1:3159:0c78e6641632e47d11802b29cfd119d2233cb80a",
- "createTime": "2018-06-16T06:49:11Z",
- "createdBy": "root",
- "lastUpdateTime": "2018-06-16T06:49:11Z",
- "mode": 33261,
- "revision": 1,
- "size": 3159,
- "systemPath": "/config/monitors/arg_example",
- "updatedBy": "root"
-}
diff --git a/test/units/modules/network/f5/fixtures/load_sys_file_ssl_cert_with_issuer_cert.json b/test/units/modules/network/f5/fixtures/load_sys_file_ssl_cert_with_issuer_cert.json
deleted file mode 100644
index bb77ca33e5..0000000000
--- a/test/units/modules/network/f5/fixtures/load_sys_file_ssl_cert_with_issuer_cert.json
+++ /dev/null
@@ -1,42 +0,0 @@
-{
- "kind": "tm:sys:file:ssl-cert:ssl-certstate",
- "name": "ocsp.example.com.crt",
- "partition": "Common",
- "fullPath": "/Common/ocsp.example.com.crt",
- "generation": 548,
- "selfLink": "https://localhost/mgmt/tm/sys/file/ssl-cert/~Common~ocsp.example.com.crt?ver=13.0.0",
- "certValidationOptions": [
- "ocsp"
- ],
- "certificateKeyCurveName": "none",
- "certificateKeySize": 4096,
- "checksum": "SHA1:2113:b84ae5ed7e236b35206b2ff61289df9547d5afa3",
- "createTime": "2017-10-25T20:56:09Z",
- "createdBy": "admin",
- "expirationDate": 1545199767,
- "expirationString": "Dec 19 06:09:27 2018 GMT",
- "isBundle": "false",
- "issuer": "CN=Alice Ltd Intermediate CA,OU=Alice Ltd Certificate Authority,O=Alice Ltd,ST=England,C=GB",
- "issuerCert": "/Common/intermediate.crt",
- "issuerCertReference": {
- "link": "https://localhost/mgmt/tm/sys/file/ssl-cert/~Common~intermediate.crt?ver=13.0.0"
- },
- "keyType": "rsa-public",
- "lastUpdateTime": "2017-10-25T20:56:09Z",
- "mode": 33188,
- "revision": 1,
- "serialNumber": "4096",
- "size": 2113,
- "sourcePath": "file:///var/config/rest/downloads/ocsp.example.com.crt",
- "subject": "CN=ocsp.example.com,OU=Alice Ltd Certificate Authority,O=Alice Ltd,ST=England,C=GB",
- "updatedBy": "admin",
- "version": 3,
- "bundleCertificatesReference": {
- "link": "https://localhost/mgmt/tm/sys/file/ssl-cert/~Common~ocsp.example.com.crt/bundle-certificates?ver=13.0.0",
- "isSubcollection": true
- },
- "certValidatorsReference": {
- "link": "https://localhost/mgmt/tm/sys/file/ssl-cert/~Common~ocsp.example.com.crt/cert-validators?ver=13.0.0",
- "isSubcollection": true
- }
-}
diff --git a/test/units/modules/network/f5/fixtures/load_sys_global_settings.json b/test/units/modules/network/f5/fixtures/load_sys_global_settings.json
deleted file mode 100644
index 191d8178a4..0000000000
--- a/test/units/modules/network/f5/fixtures/load_sys_global_settings.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "kind": "tm:sys:global-settings:global-settingsstate",
- "selfLink": "https://localhost/mgmt/tm/sys/global-settings?ver=13.0.0",
- "awsApiMaxConcurrency": 1,
- "consoleInactivityTimeout": 0,
- "customAddr": "none",
- "failsafeAction": "go-offline-restart-tm",
- "fileBlacklistPathPrefix": "{/shared/3dns/} {/shared/bin/} {/shared/core/} {/shared/datasync/} {/shared/em/} {/shared/GeoIP/} {/shared/images/} {/shared/lib/} {/shared/lib64/} {/shared/log/} {/shared/lost+found/} {/shared/mgmt/} {/shared/nfb/} {/shared/ssh/} {/shared/statsd/} {/shared/tmstat/} {/shared/vadc/} {/config/aaa/} {/config/big3d/} {/config/bigip/} {/config/filestore/} {/config/gtm/} {/config/httpd/} {/config/ntp.conf} {/config/rndc.key} {/config/ssh/} {/config/ssl/}",
- "fileBlacklistReadOnlyPathPrefix": "{/etc/shadow}",
- "fileLocalPathPrefix": "{/shared/} {/tmp/}",
- "fileWhitelistPathPrefix": "{/var/local/scf} {/tmp/} {/shared/} {/config/} {/usr/share/aws/}",
- "guiSecurityBanner": "enabled",
- "guiSecurityBannerText": "Welcome to the BIG-IP Configuration Utility.\n\nLog in with your username and password using the fields on the left.",
- "guiSetup": "disabled",
- "hostAddrMode": "management",
- "hostname": "bigip1",
- "lcdDisplay": "enabled",
- "ledLocator": "disabled",
- "mgmtDhcp": "enabled",
- "netReboot": "disabled",
- "passwordPrompt": "Password",
- "quietBoot": "enabled",
- "usernamePrompt": "Username"
-}
diff --git a/test/units/modules/network/f5/fixtures/load_sys_httpd.json b/test/units/modules/network/f5/fixtures/load_sys_httpd.json
deleted file mode 100644
index 38d761681b..0000000000
--- a/test/units/modules/network/f5/fixtures/load_sys_httpd.json
+++ /dev/null
@@ -1,36 +0,0 @@
-{
- "kind": "tm:sys:httpd:httpdstate",
- "selfLink": "https://localhost/mgmt/tm/sys/httpd?ver=12.1.2",
- "allow": [
- "All"
- ],
- "authName": "BIG-IP",
- "authPamDashboardTimeout": "off",
- "authPamIdleTimeout": 1200,
- "authPamValidateIp": "on",
- "fastcgiTimeout": 300,
- "fipsCipherVersion": 0,
- "hostnameLookup": "off",
- "logLevel": "warn",
- "maxClients": 10,
- "redirectHttpToHttps": "disabled",
- "requestBodyMaxTimeout": 0,
- "requestBodyMinRate": 500,
- "requestBodyTimeout": 60,
- "requestHeaderMaxTimeout": 40,
- "requestHeaderMinRate": 500,
- "requestHeaderTimeout": 20,
- "sslCertfile": "/etc/httpd/conf/ssl.crt/server.crt",
- "sslCertkeyfile": "/etc/httpd/conf/ssl.key/server.key",
- "sslCiphersuite": "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-AES256-SHA384:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA:AES256-SHA:AES128-SHA256:AES256-SHA256:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:DES-CBC3-SHA",
- "sslOcspDefaultResponder": "http://127.0.0.1",
- "sslOcspEnable": "off",
- "sslOcspOverrideResponder": "off",
- "sslOcspResponderTimeout": 300,
- "sslOcspResponseMaxAge": -1,
- "sslOcspResponseTimeSkew": 300,
- "sslPort": 443,
- "sslProtocol": "all -SSLv2 -SSLv3",
- "sslVerifyClient": "no",
- "sslVerifyDepth": 10
-}
diff --git a/test/units/modules/network/f5/fixtures/load_sys_httpd_non_default.json b/test/units/modules/network/f5/fixtures/load_sys_httpd_non_default.json
deleted file mode 100644
index 05051b9c08..0000000000
--- a/test/units/modules/network/f5/fixtures/load_sys_httpd_non_default.json
+++ /dev/null
@@ -1,36 +0,0 @@
-{
- "kind": "tm:sys:httpd:httpdstate",
- "selfLink": "https://localhost/mgmt/tm/sys/httpd?ver=12.1.2",
- "allow": [
- "All"
- ],
- "authName": "BIG-IP",
- "authPamDashboardTimeout": "off",
- "authPamIdleTimeout": 1200,
- "authPamValidateIp": "on",
- "fastcgiTimeout": 300,
- "fipsCipherVersion": 0,
- "hostnameLookup": "off",
- "logLevel": "warn",
- "maxClients": 10,
- "redirectHttpToHttps": "disabled",
- "requestBodyMaxTimeout": 0,
- "requestBodyMinRate": 500,
- "requestBodyTimeout": 60,
- "requestHeaderMaxTimeout": 40,
- "requestHeaderMinRate": 500,
- "requestHeaderTimeout": 20,
- "sslCertfile": "/etc/httpd/conf/ssl.crt/server.crt",
- "sslCertkeyfile": "/etc/httpd/conf/ssl.key/server.key",
- "sslCiphersuite": "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384",
- "sslOcspDefaultResponder": "http://127.0.0.1",
- "sslOcspEnable": "off",
- "sslOcspOverrideResponder": "off",
- "sslOcspResponderTimeout": 300,
- "sslOcspResponseMaxAge": -1,
- "sslOcspResponseTimeSkew": 300,
- "sslPort": 443,
- "sslProtocol": "all -SSLv2",
- "sslVerifyClient": "no",
- "sslVerifyDepth": 10
-}
diff --git a/test/units/modules/network/f5/fixtures/load_sys_log_config_destination_1.json b/test/units/modules/network/f5/fixtures/load_sys_log_config_destination_1.json
deleted file mode 100644
index 5288ed250c..0000000000
--- a/test/units/modules/network/f5/fixtures/load_sys_log_config_destination_1.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "kind": "tm:sys:log-config:destination:remote-syslog:remote-syslogstate",
- "name": "foo",
- "partition": "Common",
- "fullPath": "/Common/foo",
- "generation": 1767,
- "selfLink": "https://localhost/mgmt/tm/sys/log-config/destination/remote-syslog/~Common~foo?ver=13.1.0.4",
- "defaultFacility": "local0",
- "defaultSeverity": "info",
- "format": "rfc5424",
- "remoteHighSpeedLog": "/Common/pool1",
- "remoteHighSpeedLogReference": {
- "link": "https://localhost/mgmt/tm/sys/log-config/destination/remote-high-speed-log/~Common~pool1?ver=13.1.0.4"
- }
-}
diff --git a/test/units/modules/network/f5/fixtures/load_sys_log_config_publisher_1.json b/test/units/modules/network/f5/fixtures/load_sys_log_config_publisher_1.json
deleted file mode 100644
index 54dd889114..0000000000
--- a/test/units/modules/network/f5/fixtures/load_sys_log_config_publisher_1.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "kind": "tm:sys:log-config:publisher:publisherstate",
- "name": "foo",
- "partition": "Common",
- "fullPath": "/Common/foo",
- "generation": 5400,
- "selfLink": "https://localhost/mgmt/tm/sys/log-config/publisher/~Common~foo?ver=13.1.0.4",
- "description": "my description",
- "destinations": [
- {
- "name": "SECURITYLOGSERVERS-LOGGING",
- "partition": "Common",
- "nameReference": {
- "link": "https://localhost/mgmt/tm/sys/log-config/destination/remote-high-speed-log/~Common~SECURITYLOGSERVERS-LOGGING?ver=13.1.0.4"
- }
- },
- {
- "name": "local-db",
- "partition": "Common",
- "nameReference": {
- "link": "https://localhost/mgmt/tm/sys/log-config/destination/local-database/~Common~local-db?ver=13.1.0.4"
- }
- },
- {
- "name": "local-syslog",
- "partition": "Common",
- "nameReference": {
- "link": "https://localhost/mgmt/tm/sys/log-config/destination/local-syslog/~Common~local-syslog?ver=13.1.0.4"
- }
- }
- ]
-}
diff --git a/test/units/modules/network/f5/fixtures/load_sys_management_route_1.json b/test/units/modules/network/f5/fixtures/load_sys_management_route_1.json
deleted file mode 100644
index da3f5fcd16..0000000000
--- a/test/units/modules/network/f5/fixtures/load_sys_management_route_1.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "kind": "tm:sys:management-route:management-routestate",
- "name": "default",
- "partition": "Common",
- "fullPath": "/Common/default",
- "generation": 1,
- "selfLink": "https://localhost/mgmt/tm/sys/management-route/~Common~default?ver=13.1.0.4",
- "description": "configured-by-dhcp",
- "gateway": "10.0.2.2",
- "mtu": 0,
- "network": "default"
-}
diff --git a/test/units/modules/network/f5/fixtures/load_sys_provision_default.json b/test/units/modules/network/f5/fixtures/load_sys_provision_default.json
deleted file mode 100644
index 7be868a3ee..0000000000
--- a/test/units/modules/network/f5/fixtures/load_sys_provision_default.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "level": "dedicated",
- "memory": "medium",
- "module": "urldb"
-} \ No newline at end of file
diff --git a/test/units/modules/network/f5/fixtures/load_sys_smtp_server.json b/test/units/modules/network/f5/fixtures/load_sys_smtp_server.json
deleted file mode 100644
index 9ed191eab7..0000000000
--- a/test/units/modules/network/f5/fixtures/load_sys_smtp_server.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "kind": "tm:sys:smtp-server:smtp-serverstate",
- "name": "foo",
- "partition": "Common",
- "fullPath": "/Common/foo",
- "generation": 54,
- "selfLink": "https://localhost/mgmt/tm/sys/smtp-server/~Common~foo?ver=13.0.0",
- "authenticationEnabled": true,
- "encryptedConnection": "ssl",
- "fromAddress": "no-reply@foo.bar",
- "localHostName": "mail-host.foo.bar",
- "passwordEncrypted": "$M$Ch$this-is-encrypted==",
- "smtpServerHostName": "mail.foo.bar",
- "smtpServerPort": 465,
- "username": "admin"
-}
diff --git a/test/units/modules/network/f5/fixtures/load_sys_snmp_communities_1.json b/test/units/modules/network/f5/fixtures/load_sys_snmp_communities_1.json
deleted file mode 100644
index f45c34651f..0000000000
--- a/test/units/modules/network/f5/fixtures/load_sys_snmp_communities_1.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "kind": "tm:sys:snmp:communities:communitiesstate",
- "name": "/Common/foo",
- "fullPath": "/Common/foo",
- "generation": 0,
- "selfLink": "https://localhost/mgmt/tm/sys/snmp/communities/~Common~foo?ver=13.0.0",
- "access": "ro",
- "communityName": "foo",
- "ipv6": "disabled"
-}
diff --git a/test/units/modules/network/f5/fixtures/load_sys_snmp_communities_2.json b/test/units/modules/network/f5/fixtures/load_sys_snmp_communities_2.json
deleted file mode 100644
index 32c29325e7..0000000000
--- a/test/units/modules/network/f5/fixtures/load_sys_snmp_communities_2.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "kind": "tm:sys:snmp:communities:communitiesstate",
- "name": "/Common/foo",
- "fullPath": "/Common/foo",
- "generation": 0,
- "selfLink": "https://localhost/mgmt/tm/sys/snmp/communities/~Common~foo?ver=13.0.0",
- "access": "rw",
- "communityName": "foo",
- "ipv6": "disabled",
- "oidSubset": ".1",
- "source": "1.1.1.1"
-}
diff --git a/test/units/modules/network/f5/fixtures/load_sys_snmp_communities_3.json b/test/units/modules/network/f5/fixtures/load_sys_snmp_communities_3.json
deleted file mode 100644
index d9a9ef121f..0000000000
--- a/test/units/modules/network/f5/fixtures/load_sys_snmp_communities_3.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "kind": "tm:sys:snmp:communities:communitiesstate",
- "name": "/Common/foo",
- "fullPath": "/Common/foo",
- "generation": 0,
- "selfLink": "https://localhost/mgmt/tm/sys/snmp/communities/~Common~foo?ver=13.0.0",
- "access": "ro",
- "communityName": "foo",
- "ipv6": "enabled",
- "oidSubset": ".1",
- "source": "2001:0db8:85a3:0000:0000:8a2e:0370:7334"
-}
diff --git a/test/units/modules/network/f5/fixtures/load_sys_snmp_communities_4.json b/test/units/modules/network/f5/fixtures/load_sys_snmp_communities_4.json
deleted file mode 100644
index 38bf487def..0000000000
--- a/test/units/modules/network/f5/fixtures/load_sys_snmp_communities_4.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "kind": "tm:sys:snmp:communities:communitiesstate",
- "name": "/Common/foo",
- "fullPath": "/Common/foo",
- "generation": 0,
- "selfLink": "https://localhost/mgmt/tm/sys/snmp/communities/~Common~foo?ver=13.0.0",
- "access": "ro",
- "communityName": "foo",
- "ipv6": "enabled"
-}
diff --git a/test/units/modules/network/f5/fixtures/load_sys_snmp_users_1.json b/test/units/modules/network/f5/fixtures/load_sys_snmp_users_1.json
deleted file mode 100644
index 4b0aac8f2a..0000000000
--- a/test/units/modules/network/f5/fixtures/load_sys_snmp_users_1.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "kind": "tm:sys:snmp:users:usersstate",
- "name": "/Common/foo",
- "fullPath": "/Common/foo",
- "generation": 0,
- "selfLink": "https://localhost/mgmt/tm/sys/snmp/users/~Common~foo?ver=13.0.0",
- "access": "ro",
- "authPasswordEncrypted": "secret",
- "authProtocol": "sha",
- "oidSubset": ".1",
- "privacyPasswordEncrypted": "secret",
- "privacyProtocol": "aes",
- "securityLevel": "auth-privacy",
- "username": "foo"
-}
diff --git a/test/units/modules/network/f5/fixtures/load_sys_software_image_1.json b/test/units/modules/network/f5/fixtures/load_sys_software_image_1.json
deleted file mode 100644
index 32a9afe075..0000000000
--- a/test/units/modules/network/f5/fixtures/load_sys_software_image_1.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "kind": "tm:sys:software:image:imagestate",
- "name": "foo.iso",
- "fullPath": "foo.iso",
- "generation": 113,
- "selfLink": "https://localhost/mgmt/tm/sys/software/image/foo.iso?ver=13.1.0.4",
- "build": "0.0.3",
- "buildDate": "Sat Jun 16 00 03 03 PDT 2018",
- "checksum": "8cdbd094195fab4b2b47ff4285577b70",
- "fileSize": "1948 MB",
- "lastModified": "Thu May 17 16:19:34 2018",
- "product": "BIG-IP",
- "verified": "yes",
- "version": "13.1.0.8"
-}
diff --git a/test/units/modules/network/f5/fixtures/load_sys_software_update.json b/test/units/modules/network/f5/fixtures/load_sys_software_update.json
deleted file mode 100644
index f1617ff2bb..0000000000
--- a/test/units/modules/network/f5/fixtures/load_sys_software_update.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "kind": "tm:sys:software:update:updatestate",
- "selfLink": "https://localhost/mgmt/tm/sys/software/update?ver=13.0.0",
- "autoCheck": "enabled",
- "autoPhonehome": "enabled",
- "checkStatus": "none",
- "errors": 0,
- "frequency": "weekly"
-}
diff --git a/test/units/modules/network/f5/fixtures/load_sys_syslog_1.json b/test/units/modules/network/f5/fixtures/load_sys_syslog_1.json
deleted file mode 100644
index 3e4d257637..0000000000
--- a/test/units/modules/network/f5/fixtures/load_sys_syslog_1.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "kind": "tm:sys:syslog:syslogstate",
- "selfLink": "https://localhost/mgmt/tm/sys/syslog?ver=13.1.0.7",
- "authPrivFrom": "notice",
- "authPrivTo": "emerg",
- "clusteredHostSlot": "enabled",
- "clusteredMessageSlot": "disabled",
- "consoleLog": "enabled",
- "cronFrom": "warning",
- "cronTo": "emerg",
- "daemonFrom": "notice",
- "daemonTo": "emerg",
- "isoDate": "disabled",
- "kernFrom": "debug",
- "kernTo": "emerg",
- "local6From": "notice",
- "local6To": "emerg",
- "mailFrom": "notice",
- "mailTo": "emerg",
- "messagesFrom": "notice",
- "messagesTo": "warning",
- "userLogFrom": "notice",
- "userLogTo": "emerg"
-}
diff --git a/test/units/modules/network/f5/fixtures/load_tg_ha_order.json b/test/units/modules/network/f5/fixtures/load_tg_ha_order.json
deleted file mode 100644
index a1ff91c851..0000000000
--- a/test/units/modules/network/f5/fixtures/load_tg_ha_order.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "kind": "tm:cm:traffic-group:traffic-groupstate",
- "name": "traffic-group-2",
- "partition": "Common",
- "fullPath": "/Common/traffic-group-2",
- "generation": 227,
- "selfLink": "https://localhost/mgmt/tm/cm/traffic-group/~Common~traffic-group-2?ver=12.1.4",
- "autoFailbackEnabled": "true",
- "autoFailbackTime": 60,
- "haLoadFactor": 1,
- "isFloating": "true",
- "mac": "none",
- "unitId": 1,
- "haOrder": [
- "/Common/v12-1.ansible.local"
- ],
- "haOrderReference": [
- {
- "link": "https://localhost/mgmt/tm/cm/device/~Common~v12-1.ansible.local?ver=12.1.4"
- }
- ]
-}
diff --git a/test/units/modules/network/f5/fixtures/load_tm_auth_partition.json b/test/units/modules/network/f5/fixtures/load_tm_auth_partition.json
deleted file mode 100644
index 386c30f7e2..0000000000
--- a/test/units/modules/network/f5/fixtures/load_tm_auth_partition.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "kind": "tm:auth:partition:partitionstate",
- "name": "foo",
- "fullPath": "foo",
- "generation": 212,
- "selfLink": "https://localhost/mgmt/tm/auth/partition/foo?ver=13.0.0",
- "defaultRouteDomain": 0,
- "description": "my description"
-}
diff --git a/test/units/modules/network/f5/fixtures/load_tm_auth_password_policy_1.json b/test/units/modules/network/f5/fixtures/load_tm_auth_password_policy_1.json
deleted file mode 100644
index 7d5aac7b61..0000000000
--- a/test/units/modules/network/f5/fixtures/load_tm_auth_password_policy_1.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "kind": "tm:auth:password-policy:password-policystate",
- "selfLink": "https://localhost/mgmt/tm/auth/password-policy?ver=13.1.0.7",
- "expirationWarning": 7,
- "maxDuration": 99999,
- "maxLoginFailures": 0,
- "minDuration": 0,
- "minimumLength": 6,
- "passwordMemory": 0,
- "policyEnforcement": "disabled",
- "requiredLowercase": 0,
- "requiredNumeric": 0,
- "requiredSpecial": 0,
- "requiredUppercase": 0
-}
diff --git a/test/units/modules/network/f5/fixtures/load_tm_auth_tacacs_1.json b/test/units/modules/network/f5/fixtures/load_tm_auth_tacacs_1.json
deleted file mode 100644
index 246226055c..0000000000
--- a/test/units/modules/network/f5/fixtures/load_tm_auth_tacacs_1.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "kind": "tm:auth:tacacs:tacacsstate",
- "name": "system-auth",
- "partition": "Common",
- "fullPath": "/Common/system-auth",
- "generation": 484,
- "selfLink": "https://localhost/mgmt/tm/auth/tacacs/~Common~system-auth?ver=13.1.0.1",
- "accounting": "send-to-first-server",
- "authentication": "use-first-server",
- "debug": "disabled",
- "encryption": "enabled",
- "protocol": "ftp",
- "secret": "secret",
- "servers": [
- "11.11.11.11"
- ],
- "service": "ppp",
- "timeout": 10
-}
diff --git a/test/units/modules/network/f5/fixtures/load_tm_cli_alias_1.json b/test/units/modules/network/f5/fixtures/load_tm_cli_alias_1.json
deleted file mode 100644
index bb9b0e9016..0000000000
--- a/test/units/modules/network/f5/fixtures/load_tm_cli_alias_1.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "kind": "tm:cli:alias:shared:sharedstate",
- "name": "bash",
- "partition": "Common",
- "fullPath": "/Common/bash",
- "generation": 1,
- "selfLink": "https://localhost/mgmt/tm/cli/alias/shared/~Common~bash?ver=13.1.0.7",
- "tmCommand": "run /util bash",
- "description": "Run the bash shell"
-}
diff --git a/test/units/modules/network/f5/fixtures/load_tm_cli_script_1.json b/test/units/modules/network/f5/fixtures/load_tm_cli_script_1.json
deleted file mode 100644
index dd1beb55ef..0000000000
--- a/test/units/modules/network/f5/fixtures/load_tm_cli_script_1.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "kind": "tm:cli:script:scriptstate",
- "name": "foo",
- "partition": "Common",
- "fullPath": "/Common/foo",
- "generation": 62,
- "selfLink": "https://localhost/mgmt/tm/cli/script/~Common~foo?ver=12.1.3",
- "apiAnonymous": "proc script::run {} {}\n",
- "ignoreVerification": "false",
- "scriptChecksum": "2a7a57176f8d6ef585ea3cd0db787718",
- "totalSigningStatus": "checksum",
- "verificationStatus": "checksum-verified"
-}
diff --git a/test/units/modules/network/f5/fixtures/load_tm_cm_device.json b/test/units/modules/network/f5/fixtures/load_tm_cm_device.json
deleted file mode 100644
index c99890d313..0000000000
--- a/test/units/modules/network/f5/fixtures/load_tm_cm_device.json
+++ /dev/null
@@ -1,76 +0,0 @@
-{
- "kind": "tm:cm:device:devicestate",
- "name": "bigip1",
- "partition": "Common",
- "fullPath": "/Common/bigip1",
- "generation": 65,
- "selfLink": "https://localhost/mgmt/tm/cm/device/~Common~bigip1?ver=12.1.2",
- "activeModules": [
- "APM, Max, VE (2500 CCU, 10000 Access Sessions)|P961057-1761515|Anti-Virus Checks|Base Endpoint Security Checks|Firewall Checks|Machine Certificate Checks|Network Access|Protected Workspace|Secure Virtual Keyboard|APM, Web Application|App Tunnel|Remote Desktop",
- "LTM, 10 Gbps, VE|T487107-2453693|IPV6 Gateway|Rate Shaping|Ram Cache|External Interface and Network HSM, VE|SSL, Forward Proxy, VE|DENY-VER-GBB|Application Acceleration Manager, Core|PEM, Quota Management, VE|BIG-IP, iAppsLX (Node.js)|Max Compression, VE|BIG-IP VE, Multicast Routing|Recycle, BIG-IP, VE|APM, Limited|LTM to Best Bundle Upgrade, 10Gbps|BIG-IP, iRulesLX (Node.js)|SSL, VE|Anti-Virus Checks|Base Endpoint Security Checks|Firewall Checks|Machine Certificate Checks|Network Access|Protected Workspace|Secure Virtual Keyboard|APM, Web Application|App Tunnel|Remote Desktop|SDN Services, VE|Acceleration Manager, VE|AFM, VE|APM, Base, VE GBB (500 CCU)|ASM, VE|DNS-GTM, Base, 10Gbps|DNS Licensed Objects, Unlimited|GTM Licensed Objects, Unlimited|GTM Rate, 250K|DNS Rate Fallback, 250K|DNS Rate Limit, 250K QPS|GTM Rate Fallback, 250K|CGN, BIG-IP VE, AFM ONLY|PSM, VE|Routing Bundle, VE|DNSSEC",
- "PEM, VE|X895364-1851682"
- ],
- "baseMac": "08:00:27:27:74:82",
- "build": "0.0.249",
- "cert": "/Common/dtdi.crt",
- "certReference": {
- "link": "https://localhost/mgmt/tm/cm/cert/~Common~dtdi.crt?ver=12.1.2"
- },
- "chassisId": "2d37dfa6-c0e8-4e4a-ae983c67356d",
- "chassisType": "individual",
- "configsyncIp": "10.2.2.2",
- "edition": "Final",
- "failoverState": "active",
- "haCapacity": 0,
- "hostname": "bigip1",
- "key": "/Common/dtdi.key",
- "keyReference": {
- "link": "https://localhost/mgmt/tm/cm/key/~Common~dtdi.key?ver=12.1.2"
- },
- "managementIp": "10.0.2.15",
- "marketingName": "BIG-IP Virtual Edition",
- "mirrorIp": "10.2.2.2",
- "mirrorSecondaryIp": "10.2.3.2",
- "multicastInterface": "eth0",
- "multicastIp": "224.0.0.245",
- "multicastPort": 62960,
- "optionalModules": [
- "APM, Base, VE (50 CCU / 200 Access Sessions)",
- "App Mode (TMSH Only, No Root/Bash)",
- "Concurrent Users",
- "Concurrent Users and Access Sessions, VE",
- "IPI Subscription, 1Yr, VE",
- "IPI Subscription, 1Yr, VE-10G",
- "IPI Subscription, 3Yr, VE-10G",
- "LTM to Better Bundle Upgrade, 10Gbps",
- "PEM URL Filtering, 1Yr, HIGH PERF",
- "PEM URL Filtering, 3Yr, HIGH PERF",
- "Routing Bundle",
- "SWG Subscription, 1Yr, VE",
- "URL Filtering Subscription, 1Yr, VE"
- ],
- "platformId": "Z100",
- "product": "BIG-IP",
- "selfDevice": "true",
- "timeLimitedModules": [
- "IPI Subscription, 3Yr, VE|E430735-0717882|20170429|20170511|SUBSCRIPTION",
- "SWG Subscription, 3Yr, VE|W797718-6984294|20170429|20170511|SUBSCRIPTION",
- "URL Filtering Subscription, 3Yr, VE|G132953-9613041|20170429|20170511|SUBSCRIPTION"
- ],
- "timeZone": "America/Los_Angeles",
- "version": "12.1.2",
- "unicastAddress": [
- {
- "effectiveIp": "management-ip",
- "effectivePort": 1026,
- "ip": "management-ip",
- "port": 1026
- },
- {
- "effectiveIp": "10.2.2.2",
- "effectivePort": 1026,
- "ip": "10.2.2.2",
- "port": 1026
- }
- ]
-}
diff --git a/test/units/modules/network/f5/fixtures/load_tm_cm_device_default.json b/test/units/modules/network/f5/fixtures/load_tm_cm_device_default.json
deleted file mode 100644
index 13d77f75db..0000000000
--- a/test/units/modules/network/f5/fixtures/load_tm_cm_device_default.json
+++ /dev/null
@@ -1,61 +0,0 @@
-{
- "kind": "tm:cm:device:devicestate",
- "name": "bigip1",
- "partition": "Common",
- "fullPath": "/Common/bigip1",
- "generation": 1,
- "selfLink": "https://localhost/mgmt/tm/cm/device/~Common~bigip1?ver=12.1.2",
- "activeModules": [
- "APM, Max, VE (2500 CCU, 10000 Access Sessions)|P961057-1761515|Anti-Virus Checks|Base Endpoint Security Checks|Firewall Checks|Machine Certificate Checks|Network Access|Protected Workspace|Secure Virtual Keyboard|APM, Web Application|App Tunnel|Remote Desktop",
- "LTM, 10 Gbps, VE|T487107-2453693|IPV6 Gateway|Rate Shaping|Ram Cache|External Interface and Network HSM, VE|SSL, Forward Proxy, VE|DENY-VER-GBB|Application Acceleration Manager, Core|PEM, Quota Management, VE|BIG-IP, iAppsLX (Node.js)|Max Compression, VE|BIG-IP VE, Multicast Routing|Recycle, BIG-IP, VE|APM, Limited|LTM to Best Bundle Upgrade, 10Gbps|BIG-IP, iRulesLX (Node.js)|SSL, VE|Anti-Virus Checks|Base Endpoint Security Checks|Firewall Checks|Machine Certificate Checks|Network Access|Protected Workspace|Secure Virtual Keyboard|APM, Web Application|App Tunnel|Remote Desktop|SDN Services, VE|Acceleration Manager, VE|AFM, VE|APM, Base, VE GBB (500 CCU)|ASM, VE|DNS-GTM, Base, 10Gbps|DNS Licensed Objects, Unlimited|GTM Licensed Objects, Unlimited|GTM Rate, 250K|DNS Rate Fallback, 250K|DNS Rate Limit, 250K QPS|GTM Rate Fallback, 250K|CGN, BIG-IP VE, AFM ONLY|PSM, VE|Routing Bundle, VE|DNSSEC",
- "PEM, VE|X895364-1851682"
- ],
- "baseMac": "08:00:27:27:74:82",
- "build": "0.0.249",
- "cert": "/Common/dtdi.crt",
- "certReference": {
- "link": "https://localhost/mgmt/tm/cm/cert/~Common~dtdi.crt?ver=12.1.2"
- },
- "chassisId": "42d93eba-35bb-4f01-4663fb03951a",
- "chassisType": "individual",
- "configsyncIp": "none",
- "edition": "Final",
- "failoverState": "active",
- "haCapacity": 0,
- "hostname": "bigip1",
- "key": "/Common/dtdi.key",
- "keyReference": {
- "link": "https://localhost/mgmt/tm/cm/key/~Common~dtdi.key?ver=12.1.2"
- },
- "managementIp": "10.0.2.15",
- "marketingName": "BIG-IP Virtual Edition",
- "mirrorIp": "any6",
- "mirrorSecondaryIp": "any6",
- "multicastIp": "any6",
- "multicastPort": 0,
- "optionalModules": [
- "APM, Base, VE (50 CCU / 200 Access Sessions)",
- "App Mode (TMSH Only, No Root/Bash)",
- "Concurrent Users",
- "Concurrent Users and Access Sessions, VE",
- "IPI Subscription, 1Yr, VE",
- "IPI Subscription, 1Yr, VE-10G",
- "IPI Subscription, 3Yr, VE-10G",
- "LTM to Better Bundle Upgrade, 10Gbps",
- "PEM URL Filtering, 1Yr, HIGH PERF",
- "PEM URL Filtering, 3Yr, HIGH PERF",
- "Routing Bundle",
- "SWG Subscription, 1Yr, VE",
- "URL Filtering Subscription, 1Yr, VE"
- ],
- "platformId": "Z100",
- "product": "BIG-IP",
- "selfDevice": "true",
- "timeLimitedModules": [
- "IPI Subscription, 3Yr, VE|E430735-0717882|20170502|20170511|SUBSCRIPTION",
- "SWG Subscription, 3Yr, VE|W797718-6984294|20170502|20170511|SUBSCRIPTION",
- "URL Filtering Subscription, 3Yr, VE|G132953-9613041|20170502|20170511|SUBSCRIPTION"
- ],
- "timeZone": "America/Los_Angeles",
- "version": "12.1.2"
-}
diff --git a/test/units/modules/network/f5/fixtures/load_tm_cm_device_group.json b/test/units/modules/network/f5/fixtures/load_tm_cm_device_group.json
deleted file mode 100644
index 6660234155..0000000000
--- a/test/units/modules/network/f5/fixtures/load_tm_cm_device_group.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "kind": "tm:cm:device-group:device-groupstate",
- "name": "device_trust_group",
- "partition": "Common",
- "fullPath": "/Common/device_trust_group",
- "generation": 1,
- "selfLink": "https://localhost/mgmt/tm/cm/device-group/~Common~device_trust_group?ver=13.0.0",
- "asmSync": "disabled",
- "autoSync": "enabled",
- "fullLoadOnSync": "false",
- "incrementalConfigSyncSizeMax": 1024,
- "networkFailover": "disabled",
- "saveOnAutoSync": "false",
- "type": "sync-only",
- "devicesReference": {
- "link": "https://localhost/mgmt/tm/cm/device-group/~Common~device_trust_group/devices?ver=13.0.0",
- "isSubcollection": true
- }
-}
diff --git a/test/units/modules/network/f5/fixtures/load_tm_cm_traffic_group_1.json b/test/units/modules/network/f5/fixtures/load_tm_cm_traffic_group_1.json
deleted file mode 100644
index dbbb190725..0000000000
--- a/test/units/modules/network/f5/fixtures/load_tm_cm_traffic_group_1.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "kind": "tm:cm:traffic-group:traffic-groupstate",
- "name": "traffic-group-1",
- "partition": "Common",
- "fullPath": "/Common/traffic-group-1",
- "generation": 1,
- "selfLink": "https://localhost/mgmt/tm/cm/traffic-group/~Common~traffic-group-1?ver=13.0.0",
- "autoFailbackEnabled": "false",
- "autoFailbackTime": 60,
- "failoverMethod": "ha-order",
- "haLoadFactor": 1,
- "isFloating": "true",
- "mac": "none",
- "monitor": {},
- "unitId": 1
-}
diff --git a/test/units/modules/network/f5/fixtures/load_tm_cm_traffic_group_2.json b/test/units/modules/network/f5/fixtures/load_tm_cm_traffic_group_2.json
deleted file mode 100644
index 3b93cdae9a..0000000000
--- a/test/units/modules/network/f5/fixtures/load_tm_cm_traffic_group_2.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "kind": "tm:cm:traffic-group:traffic-groupstate",
- "name": "asd",
- "partition": "Common",
- "fullPath": "/Common/asd",
- "generation": 176,
- "selfLink": "https://localhost/mgmt/tm/cm/traffic-group/~Common~asd?ver=13.0.0",
- "autoFailbackEnabled": "false",
- "autoFailbackTime": 60,
- "failoverMethod": "ha-order",
- "haLoadFactor": 1,
- "isFloating": "true",
- "mac": "00:00:00:00:00:02",
- "monitor": {},
- "unitId": 2
-}
diff --git a/test/units/modules/network/f5/fixtures/load_tm_net_self.json b/test/units/modules/network/f5/fixtures/load_tm_net_self.json
deleted file mode 100644
index 9bf4f23458..0000000000
--- a/test/units/modules/network/f5/fixtures/load_tm_net_self.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "kind": "tm:net:self:selfstate",
- "name": "net1",
- "partition": "Common",
- "fullPath": "/Common/net1",
- "generation": 7,
- "selfLink": "https://localhost/mgmt/tm/net/self/~Common~net1?ver=13.0.0",
- "address": "10.10.10.10%1/24",
- "addressSource": "from-user",
- "floating": "disabled",
- "inheritedTrafficGroup": "false",
- "trafficGroup": "/Common/traffic-group-local-only",
- "trafficGroupReference": {
- "link": "https://localhost/mgmt/tm/cm/traffic-group/~Common~traffic-group-local-only?ver=13.0.0"
- },
- "unit": 0,
- "vlan": "/Common/net1",
- "vlanReference": {
- "link": "https://localhost/mgmt/tm/net/vlan/~Common~net1?ver=13.0.0"
- },
- "allowService": [
- "tcp:80",
- "udp:53",
- "gre:0"
- ]
-}
diff --git a/test/units/modules/network/f5/fixtures/load_tm_net_trunk_1.json b/test/units/modules/network/f5/fixtures/load_tm_net_trunk_1.json
deleted file mode 100644
index af312d49f9..0000000000
--- a/test/units/modules/network/f5/fixtures/load_tm_net_trunk_1.json
+++ /dev/null
@@ -1,29 +0,0 @@
-{
- "kind": "tm:net:trunk:trunkstate",
- "name": "foo",
- "fullPath": "foo",
- "generation": 79,
- "selfLink": "https://localhost/mgmt/tm/net/trunk/foo?ver=13.1.0.4",
- "bandwidth": 10000,
- "cfgMbrCount": 1,
- "distributionHash": "dst-mac",
- "id": 0,
- "lacp": "disabled",
- "lacpMode": "active",
- "lacpTimeout": "long",
- "linkSelectPolicy": "maximum-bandwidth",
- "macAddress": "08:00:27:ea:18:52",
- "media": "10000",
- "qinqEthertype": "0x8100",
- "stp": "enabled",
- "type": "normal",
- "workingMbrCount": 1,
- "interfaces": [
- "1.3"
- ],
- "interfacesReference": [
- {
- "link": "https://localhost/mgmt/tm/net/interface/1.3?ver=13.1.0.4"
- }
- ]
-}
diff --git a/test/units/modules/network/f5/fixtures/load_tm_sys_syslog_1.json b/test/units/modules/network/f5/fixtures/load_tm_sys_syslog_1.json
deleted file mode 100644
index 47d7628207..0000000000
--- a/test/units/modules/network/f5/fixtures/load_tm_sys_syslog_1.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "kind": "tm:sys:syslog:syslogstate",
- "selfLink": "https://localhost/mgmt/tm/sys/syslog?ver=13.0.0",
- "authPrivFrom": "notice",
- "authPrivTo": "emerg",
- "clusteredHostSlot": "enabled",
- "clusteredMessageSlot": "disabled",
- "consoleLog": "enabled",
- "cronFrom": "warning",
- "cronTo": "emerg",
- "daemonFrom": "notice",
- "daemonTo": "emerg",
- "isoDate": "disabled",
- "kernFrom": "debug",
- "kernTo": "emerg",
- "local6From": "notice",
- "local6To": "emerg",
- "mailFrom": "notice",
- "mailTo": "emerg",
- "messagesFrom": "notice",
- "messagesTo": "warning",
- "userLogFrom": "notice",
- "userLogTo": "emerg",
- "remoteServers": [
- {
- "name": "/Common/remotesyslog1",
- "host": "10.10.10.10",
- "localIp": "none",
- "remotePort": 514
- },
- {
- "name": "/Common/remotesyslog2",
- "host": "20.20.20.20",
- "localIp": "1.1.1.1",
- "remotePort": 8000
- }
- ]
-}
diff --git a/test/units/modules/network/f5/fixtures/load_tm_sys_syslog_2.json b/test/units/modules/network/f5/fixtures/load_tm_sys_syslog_2.json
deleted file mode 100644
index d1eb8929d5..0000000000
--- a/test/units/modules/network/f5/fixtures/load_tm_sys_syslog_2.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "kind": "tm:sys:syslog:syslogstate",
- "selfLink": "https://localhost/mgmt/tm/sys/syslog?ver=13.0.0",
- "authPrivFrom": "notice",
- "authPrivTo": "emerg",
- "clusteredHostSlot": "enabled",
- "clusteredMessageSlot": "disabled",
- "consoleLog": "enabled",
- "cronFrom": "warning",
- "cronTo": "emerg",
- "daemonFrom": "notice",
- "daemonTo": "emerg",
- "isoDate": "disabled",
- "kernFrom": "debug",
- "kernTo": "emerg",
- "local6From": "notice",
- "local6To": "emerg",
- "mailFrom": "notice",
- "mailTo": "emerg",
- "messagesFrom": "notice",
- "messagesTo": "warning",
- "userLogFrom": "notice",
- "userLogTo": "emerg",
- "remoteServers": [
- {
- "name": "/Common/remotesyslog1",
- "host": "10.10.10.10",
- "localIp": "none",
- "remotePort": 514
- },
- {
- "name": "/Common/remotesyslog2",
- "host": "10.10.10.10",
- "localIp": "1.1.1.1",
- "remotePort": 8000
- }
- ]
-}
diff --git a/test/units/modules/network/f5/fixtures/load_tmm_log.json b/test/units/modules/network/f5/fixtures/load_tmm_log.json
deleted file mode 100644
index 5d634183b2..0000000000
--- a/test/units/modules/network/f5/fixtures/load_tmm_log.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "kind": "tm:sys:daemon-log-settings:tmm:tmmstate",
- "selfLink": "https://localhost/mgmt/tm/sys/daemon-log-settings/tmm?ver=12.1.3.6",
- "arpLogLevel": "warning",
- "httpCompressionLogLevel": "error",
- "httpLogLevel": "error",
- "ipLogLevel": "warning",
- "iruleLogLevel": "informational",
- "layer4LogLevel": "notice",
- "netLogLevel": "warning",
- "osLogLevel": "notice",
- "pvaLogLevel": "informational",
- "sslLogLevel": "warning"
-}
diff --git a/test/units/modules/network/f5/fixtures/load_vlan.json b/test/units/modules/network/f5/fixtures/load_vlan.json
deleted file mode 100644
index 85d7fbb228..0000000000
--- a/test/units/modules/network/f5/fixtures/load_vlan.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "kind": "tm:net:vlan:vlanstate",
- "name": "somevlan",
- "partition": "Common",
- "fullPath": "/Common/somevlan",
- "generation": 1,
- "selfLink": "https://localhost/mgmt/tm/net/vlan/~Common~somevlan?ver=12.1.0",
- "autoLasthop": "default",
- "cmpHash": "default",
- "dagRoundRobin": "disabled",
- "dagTunnel": "outer",
- "failsafe": "disabled",
- "failsafeAction": "failover-restart-tm",
- "failsafeTimeout": 90,
- "ifIndex": 480,
- "learning": "enable-forward",
- "mtu": 1500,
- "sflow": {
- "pollInterval": 0,
- "pollIntervalGlobal": "yes",
- "samplingRate": 0,
- "samplingRateGlobal": "yes"
- },
- "sourceChecking": "disabled",
- "tag": 4094,
- "interfacesReference": {
- "link": "https://localhost/mgmt/tm/net/vlan/~Common~somevlan/interfaces?ver=12.1.0",
- "isSubcollection": true
- }
-} \ No newline at end of file
diff --git a/test/units/modules/network/f5/fixtures/load_vlan_interfaces.json b/test/units/modules/network/f5/fixtures/load_vlan_interfaces.json
deleted file mode 100644
index 9fa16f76b2..0000000000
--- a/test/units/modules/network/f5/fixtures/load_vlan_interfaces.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "kind": "tm:net:vlan:interfaces:interfacescollectionstate",
- "selfLink": "https://localhost/mgmt/tm/net/vlan/~Common~vlan1/interfaces?ver=13.0.0",
- "items": [
- {
- "kind": "tm:net:vlan:interfaces:interfacesstate",
- "name": "1.2",
- "fullPath": "1.2",
- "generation": 105,
- "selfLink": "https://localhost/mgmt/tm/net/vlan/~Common~vlan1/interfaces/1.2?ver=13.0.0",
- "tagMode": "none",
- "tagged": true
- }
- ]
-}
diff --git a/test/units/modules/network/f5/fixtures/load_vlan_tagged_ifcs.json b/test/units/modules/network/f5/fixtures/load_vlan_tagged_ifcs.json
deleted file mode 100644
index 96b3150f78..0000000000
--- a/test/units/modules/network/f5/fixtures/load_vlan_tagged_ifcs.json
+++ /dev/null
@@ -1,12 +0,0 @@
-[
- {
- "kind": "tm:net:vlan:interfaces:interfacesstate",
- "name": "1.2",
- "fullPath": "1.2",
- "generation": 2,
- "selfLink": "https://localhost/mgmt/tm/net/vlan/~Common~internal/interfaces/1.2?ver=12.1.0",
- "tagMode": "none",
- "tagged": true
- }
-
- ] \ No newline at end of file
diff --git a/test/units/modules/network/f5/fixtures/load_vlan_untag_ifcs.json b/test/units/modules/network/f5/fixtures/load_vlan_untag_ifcs.json
deleted file mode 100644
index ebc530e74a..0000000000
--- a/test/units/modules/network/f5/fixtures/load_vlan_untag_ifcs.json
+++ /dev/null
@@ -1,11 +0,0 @@
-[
- {
- "kind": "tm:net:vlan:interfaces:interfacesstate",
- "name": "1.1",
- "fullPath": "1.1",
- "generation": 1,
- "selfLink": "https://localhost/mgmt/tm/net/vlan/~Common~internal/interfaces/1.1?ver=12.1.0",
- "tagMode": "none",
- "untagged": true
- }
- ] \ No newline at end of file
diff --git a/test/units/modules/network/f5/fixtures/pool_members_subcollection.json b/test/units/modules/network/f5/fixtures/pool_members_subcollection.json
deleted file mode 100644
index 1041f8f62c..0000000000
--- a/test/units/modules/network/f5/fixtures/pool_members_subcollection.json
+++ /dev/null
@@ -1,21 +0,0 @@
-[
- {
- "kind": "tm:ltm:pool:members:membersstate",
- "name": "1.1.1.1:80",
- "partition": "Common",
- "fullPath": "/Common/1.1.1.1:80",
- "generation": 1,
- "selfLink": "https://localhost/mgmt/tm/ltm/pool/~Common~test_pool/members/~Common~1.1.1.1:80?ver=11.5.4",
- "address": "1.1.1.1",
- "connectionLimit": 0,
- "dynamicRatio": 1,
- "inheritProfile": "enabled",
- "logging": "disabled",
- "monitor": "default",
- "priorityGroup": 0,
- "rateLimit": "disabled",
- "ratio": 1,
- "session": "user-disabled",
- "state": "up"
- }
- ]
diff --git a/test/units/modules/network/f5/fixtures/update_iapp_service_parameters_f5_http.json b/test/units/modules/network/f5/fixtures/update_iapp_service_parameters_f5_http.json
deleted file mode 100644
index cbb389364d..0000000000
--- a/test/units/modules/network/f5/fixtures/update_iapp_service_parameters_f5_http.json
+++ /dev/null
@@ -1,195 +0,0 @@
-{
- "name": "http_example",
- "partition": "Common",
- "template": "/Common/f5.http",
- "lists": [
- {
- "name": "irules__irules",
- "encrypted": "no",
- "value": [
- "/Common/lgyft"
- ]
- },
- {
- "name": "net__client_vlan",
- "encrypted": "no",
- "value": [
- "/Common/net2"
- ]
- }
- ],
- "tables": [
- {
- "columnNames": [
- "name"
- ],
- "name": "pool__hosts",
- "rows": [
- {
- "row": [
- "demo.example.com"
- ]
- }
- ]
- },
- {
- "columnNames": [
- "addr",
- "connection_limit"
- ],
- "name": "pool__members",
- "rows": [
- {
- "row": [
- "20.1.1.1",
- "0"
- ]
- },
- {
- "row": [
- "10.1.1.2",
- "0"
- ]
- }
- ]
- }
- ],
- "variables": [
- {
- "name": "afm__policy",
- "value": "/#do_not_use#"
- },
- {
- "name": "afm__dos_security_profile",
- "value": "/#do_not_use#"
- },
- {
- "name": "afm__protocol_security_profile",
- "value": "/#do_not_use#"
- },
- {
- "name": "asm__use_asm",
- "value": "/#do_not_use#"
- },
- {
- "name": "client__http_compression",
- "value": "/#do_not_use#"
- },
- {
- "name": "client__standard_caching_without_wa",
- "value": "/#do_not_use#"
- },
- {
- "name": "client__tcp_wan_opt",
- "value": "/#create_new#"
- },
- {
- "name": "monitor__monitor",
- "value": "/#create_new#"
- },
- {
- "name": "monitor__frequency",
- "value": "30"
- },
- {
- "name": "monitor__uri",
- "value": "/my/path"
- },
- {
- "name": "monitor__response",
- "value": ""
- },
- {
- "name": "net__client_mode",
- "value": "wan"
- },
- {
- "name": "net__server_mode",
- "value": "lan"
- },
- {
- "name": "net__vlan_mode",
- "value": "all"
- },
- {
- "name": "pool__addr",
- "value": "10.10.10.10"
- },
- {
- "name": "pool__http",
- "value": "/#create_new#"
- },
- {
- "name": "pool__mask",
- "value": ""
- },
- {
- "name": "pool__persist",
- "value": "/#cookie#"
- },
- {
- "name": "pool__lb_method",
- "value": "least-connections-member"
- },
- {
- "name": "pool__pool_to_use",
- "value": "/#create_new#"
- },
- {
- "name": "pool__port_secure",
- "value": "443"
- },
- {
- "name": "pool__redirect_port",
- "value": "80"
- },
- {
- "name": "pool__redirect_to_https",
- "value": "yes"
- },
- {
- "name": "pool__xff",
- "value": "yes"
- },
- {
- "name": "server__oneconnect",
- "value": "/#create_new#"
- },
- {
- "name": "server__tcp_lan_opt",
- "value": "/#create_new#"
- },
- {
- "name": "ssl__cert",
- "value": "/Common/default.crt"
- },
- {
- "name": "ssl__client_ssl_profile",
- "value": "/#create_new#"
- },
- {
- "name": "ssl__key",
- "value": "/Common/default.key"
- },
- {
- "name": "ssl__mode",
- "value": "client_ssl"
- },
- {
- "name": "ssl__use_chain_cert",
- "value": "/#do_not_use#"
- },
- {
- "name": "ssl_encryption_questions__advanced",
- "value": "yes"
- },
- {
- "name": "stats__analytics",
- "value": "/#do_not_use#"
- },
- {
- "name": "stats__request_logging",
- "value": "/#do_not_use#"
- }
- ]
-}
diff --git a/test/units/modules/network/f5/fixtures/update_vlan_description.json b/test/units/modules/network/f5/fixtures/update_vlan_description.json
deleted file mode 100644
index 99bf483343..0000000000
--- a/test/units/modules/network/f5/fixtures/update_vlan_description.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "kind": "tm:net:vlan:vlanstate",
- "name": "somevlan",
- "partition": "Common",
- "fullPath": "/Common/somevlan",
- "description": "changed_this",
- "generation": 1,
- "selfLink": "https://localhost/mgmt/tm/net/vlan/~Common~somevlan?ver=12.1.0",
- "autoLasthop": "default",
- "cmpHash": "default",
- "dagRoundRobin": "disabled",
- "dagTunnel": "outer",
- "failsafe": "disabled",
- "failsafeAction": "failover-restart-tm",
- "failsafeTimeout": 90,
- "ifIndex": 480,
- "learning": "enable-forward",
- "mtu": 1500,
- "sflow": {
- "pollInterval": 0,
- "pollIntervalGlobal": "yes",
- "samplingRate": 0,
- "samplingRateGlobal": "yes"
- },
- "sourceChecking": "disabled",
- "tag": 4094,
- "interfacesReference": {
- "link": "https://localhost/mgmt/tm/net/vlan/~Common~somevlan/interfaces?ver=12.1.0",
- "isSubcollection": true
- }
-} \ No newline at end of file
diff --git a/test/units/modules/network/f5/test_bigip_apm_acl.py b/test/units/modules/network/f5/test_bigip_apm_acl.py
deleted file mode 100644
index 157438c258..0000000000
--- a/test/units/modules/network/f5/test_bigip_apm_acl.py
+++ /dev/null
@@ -1,243 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2019, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_apm_acl import ApiParameters
- from library.modules.bigip_apm_acl import ModuleParameters
- from library.modules.bigip_apm_acl import ModuleManager
- from library.modules.bigip_apm_acl import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_apm_acl import ApiParameters
- from ansible.modules.network.f5.bigip_apm_acl import ModuleParameters
- from ansible.modules.network.f5.bigip_apm_acl import ModuleManager
- from ansible.modules.network.f5.bigip_apm_acl import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- acl_order=0,
- type='static',
- path_match_case=True,
- description='foobar',
- entries=[
- dict(action='allow',
- dst_port='80',
- dst_addr='192.168.1.1',
- src_port='443',
- src_addr='10.10.10.0',
- src_mask='255.255.255.128',
- protocol='tcp',
- host_name='foobar.com',
- paths='/shopfront',
- scheme='https'
- )
- ]
- )
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.acl_order == 0
- assert p.type == 'static'
- assert p.path_match_case == 'true'
- assert p.description == 'foobar'
- assert p.entries[0] == dict(action='allow',
- dstEndPort=80,
- dstStartPort=80,
- dstSubnet='192.168.1.1/32',
- srcEndPort=443,
- srcStartPort=443,
- srcSubnet='10.10.10.0/25',
- protocol=6,
- host='foobar.com',
- paths='/shopfront',
- scheme='https'
- )
-
- def test_api_parameters(self):
- args = load_fixture('load_apm_acl.json')
-
- p = ApiParameters(params=args)
- assert p.name == 'lastone'
- assert p.acl_order == 2
- assert p.type == 'static'
- assert p.path_match_case == 'false'
- assert p.description == 'foobar'
- assert p.entries[0] == dict(action='discard',
- dstEndPort=0,
- dstStartPort=0,
- dstSubnet='0.0.0.0/0',
- srcEndPort=0,
- srcStartPort=0,
- srcSubnet='0.0.0.0/0',
- protocol=1,
- scheme='any',
- log='none'
- )
-
-
-class TestManager(unittest.TestCase):
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create_L4_L7_ACL(self, *args):
- set_module_args(dict(
- name='foo',
- acl_order=0,
- type='static',
- path_match_case=True,
- description='my description',
- entries=[
- dict(action='allow',
- dst_port='80',
- dst_addr='192.168.1.1',
- src_port='443',
- src_addr='10.10.10.0',
- src_mask='255.255.255.128',
- protocol='tcp',
- host_name='foobar.com',
- paths='/shopfront',
- scheme='https'
- )
- ],
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=False)
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['acl_order'] == 0
- assert results['description'] == 'my description'
- assert results['type'] == 'static'
- assert results['path_match_case'] == 'yes'
- assert results['entries'] == [
- dict(action='allow',
- dst_port='80',
- dst_addr='192.168.1.1',
- src_port='443',
- src_addr='10.10.10.0',
- src_mask='255.255.255.128',
- protocol='tcp',
- host_name='foobar.com',
- paths='/shopfront',
- scheme='https'
- )]
-
- def test_update_L4_L7_ACL(self, *args):
- set_module_args(dict(
- name='lastone',
- acl_order=0,
- path_match_case='yes',
- entries=[
- dict(action='allow',
- dst_port='80',
- dst_addr='192.168.1.1',
- src_port='443',
- src_addr='10.10.10.0',
- src_mask='255.255.255.128',
- protocol='tcp',
- host_name='foobar.com',
- paths='/shopfront',
- scheme='https'
- )
- ],
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = ApiParameters(params=load_fixture('load_apm_acl.json'))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.update_on_device = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['acl_order'] == 0
- assert results['path_match_case'] == 'yes'
- assert results['entries'] == [
- dict(action='allow',
- dst_port='80',
- dst_addr='192.168.1.1',
- src_port='443',
- src_addr='10.10.10.0',
- src_mask='255.255.255.128',
- protocol='tcp',
- host_name='foobar.com',
- paths='/shopfront',
- scheme='https'
- )]
diff --git a/test/units/modules/network/f5/test_bigip_apm_network_access.py b/test/units/modules/network/f5/test_bigip_apm_network_access.py
deleted file mode 100644
index eafd99cbb7..0000000000
--- a/test/units/modules/network/f5/test_bigip_apm_network_access.py
+++ /dev/null
@@ -1,209 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2019, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_apm_network_access import ApiParameters
- from library.modules.bigip_apm_network_access import ModuleParameters
- from library.modules.bigip_apm_network_access import ModuleManager
- from library.modules.bigip_apm_network_access import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_apm_network_access import ApiParameters
- from ansible.modules.network.f5.bigip_apm_network_access import ModuleParameters
- from ansible.modules.network.f5.bigip_apm_network_access import ModuleManager
- from ansible.modules.network.f5.bigip_apm_network_access import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- ip_version='ipv4',
- split_tunnel=True,
- description='foobar',
- allow_local_subnet=True,
- allow_local_dns=True,
- snat_pool='foo_pool',
- dtls=True,
- dtls_port=4443,
- ipv4_lease_pool='ipv4lease',
- excluded_ipv4_adresses=[dict(subnet='10.10.10.1')],
- ipv4_address_space=[dict(subnet='192.168.1.0/24')],
- dns_address_space=['foobar.com'],
- excluded_dns_addresses=['bar-foo.org']
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.ip_version == 'ipv4'
- assert p.split_tunnel == 'true'
- assert p.allow_local_subnet == 'true'
- assert p.allow_local_dns == 'true'
- assert p.snat_pool == '/Common/foo_pool'
- assert p.description == 'foobar'
- assert p.dtls == 'true'
- assert p.dtls_port == 4443
- assert p.ipv4_lease_pool == '/Common/ipv4lease'
- assert p.excluded_ipv4_adresses == [dict(subnet='10.10.10.1/32')]
- assert p.ipv4_address_space == [dict(subnet='192.168.1.0/24')]
- assert p.dns_address_space == ['foobar.com']
- assert p.excluded_dns_addresses == ['bar-foo.org']
-
- def test_api_parameters(self):
- args = load_fixture('load_apm_network_access.json')
-
- p = ApiParameters(params=args)
- assert p.name == 'test'
- assert p.ip_version == 'ipv4-ipv6'
- assert p.split_tunnel == 'true'
- assert p.allow_local_subnet == 'true'
- assert p.allow_local_dns == 'true'
- assert p.snat_pool == 'automap'
- assert p.dtls == 'false'
- assert p.dtls_port == 4433
- assert p.ipv4_lease_pool == '/Common/ipv4lease'
- assert p.excluded_ipv4_adresses == [
- dict(subnet='192.168.1.0/24'),
- dict(subnet='192.168.2.1/32')
- ]
- assert p.ipv4_address_space == [
- dict(subnet='10.10.10.1/32'),
- dict(subnet='10.11.11.0/24')
- ]
- assert p.dns_address_space == ['foo.com', 'bar.com']
- assert p.excluded_dns_addresses == ['baz.com', 'bazfoo.com']
- assert p.ipv6_address_space == [dict(subnet="2607:f0d0:1002:51::4/128")]
-
-
-class TestManager(unittest.TestCase):
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create_ipv4_net_access(self, *args):
- set_module_args(dict(
- name='foo',
- ip_version='ipv4',
- split_tunnel=True,
- description='foobar',
- allow_local_subnet=True,
- allow_local_dns=True,
- snat_pool='foo_pool',
- dtls=True,
- dtls_port=4443,
- ipv4_lease_pool='ipv4lease',
- excluded_ipv4_adresses=[dict(subnet='10.10.10.1')],
- ipv4_address_space=[dict(subnet='192.168.1.0/24')],
- dns_address_space=['foobar.com'],
- excluded_dns_addresses=['bar-foo.org'],
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=False)
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['ip_version'] == 'ipv4'
- assert results['split_tunnel'] == 'yes'
- assert results['allow_local_subnet'] == 'yes'
- assert results['allow_local_dns'] == 'yes'
- assert results['snat_pool'] == '/Common/foo_pool'
- assert results['description'] == 'foobar'
- assert results['dtls'] == 'yes'
- assert results['dtls_port'] == 4443
- assert results['ipv4_lease_pool'] == '/Common/ipv4lease'
- assert results['excluded_ipv4_adresses'] == [dict(subnet='10.10.10.1')]
- assert results['ipv4_address_space'] == [dict(subnet='192.168.1.0/24')]
- assert results['dns_address_space'] == ['foobar.com']
- assert results['excluded_dns_addresses'] == ['bar-foo.org']
-
- def test_update_ipv4_net_access(self, *args):
- set_module_args(dict(
- name='test',
- excluded_ipv4_adresses=[dict(subnet='10.10.10.1')],
- ipv4_address_space=[dict(subnet='192.168.1.0/24')],
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = ApiParameters(params=load_fixture('load_apm_network_access.json'))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.update_on_device = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['excluded_ipv4_adresses'] == [dict(subnet='10.10.10.1')]
- assert results['ipv4_address_space'] == [dict(subnet='192.168.1.0/24')]
diff --git a/test/units/modules/network/f5/test_bigip_apm_policy_fetch.py b/test/units/modules/network/f5/test_bigip_apm_policy_fetch.py
deleted file mode 100644
index 070b1e9b2b..0000000000
--- a/test/units/modules/network/f5/test_bigip_apm_policy_fetch.py
+++ /dev/null
@@ -1,128 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2018, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_apm_policy_fetch import ModuleParameters
- from library.modules.bigip_apm_policy_fetch import ModuleManager
- from library.modules.bigip_apm_policy_fetch import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
- from test.units.compat.mock import patch
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_apm_policy_fetch import ModuleParameters
- from ansible.modules.network.f5.bigip_apm_policy_fetch import ModuleManager
- from ansible.modules.network.f5.bigip_apm_policy_fetch import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
- from units.compat.mock import patch
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- dest='/tmp/',
- force='yes',
- file='foo_export',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- )
- p = ModuleParameters(params=args)
- assert p.file == 'foo_export'
-
-
-class TestManager(unittest.TestCase):
- def setUp(self):
- self.spec = ArgumentSpec()
- self.patcher1 = patch('time.sleep')
- self.patcher1.start()
-
- try:
- self.p1 = patch('library.modules.bigip_apm_policy_fetch.module_provisioned')
- self.m1 = self.p1.start()
- self.m1.return_value = True
- except Exception:
- self.p1 = patch('ansible.modules.network.f5.bigip_apm_policy_fetch.module_provisioned')
- self.m1 = self.p1.start()
- self.m1.return_value = True
-
- def tearDown(self):
- self.patcher1.stop()
- self.p1.stop()
-
- def test_create(self, *args):
- set_module_args(dict(
- name='fake_policy',
- file='foo_export',
- dest='/tmp/',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- )
-
- mp = ModuleParameters(params=module.params)
- mp._item_exists = Mock(return_value=True)
- mm = ModuleManager(module=module)
- mm.version_less_than_14 = Mock(return_value=False)
- mm.want = Mock(return_value=mp)
- mm.exists = Mock(return_value=False)
- mm.create_on_device = Mock(return_value=True)
- mm.execute = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_apm_policy_import.py b/test/units/modules/network/f5/test_bigip_apm_policy_import.py
deleted file mode 100644
index 356a765cd8..0000000000
--- a/test/units/modules/network/f5/test_bigip_apm_policy_import.py
+++ /dev/null
@@ -1,127 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2018, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_apm_policy_import import ModuleParameters
- from library.modules.bigip_apm_policy_import import ModuleManager
- from library.modules.bigip_apm_policy_import import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
- from test.units.compat.mock import patch
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_apm_policy_import import ModuleParameters
- from ansible.modules.network.f5.bigip_apm_policy_import import ModuleManager
- from ansible.modules.network.f5.bigip_apm_policy_import import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
- from units.compat.mock import patch
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='fake_policy',
- type='access_policy',
- source='/var/fake/fake.tar.gz'
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'fake_policy'
- assert p.source == '/var/fake/fake.tar.gz'
- assert p.type == 'access_policy'
-
-
-class TestManager(unittest.TestCase):
- def setUp(self):
- self.spec = ArgumentSpec()
- self.policy = os.path.join(fixture_path, 'fake_policy.tar.gz')
- self.patcher1 = patch('time.sleep')
- self.patcher1.start()
-
- try:
- self.p1 = patch('library.modules.bigip_apm_policy_import.module_provisioned')
- self.m1 = self.p1.start()
- self.m1.return_value = True
- except Exception:
- self.p1 = patch('ansible.modules.network.f5.bigip_apm_policy_import.module_provisioned')
- self.m1 = self.p1.start()
- self.m1.return_value = True
-
- def tearDown(self):
- self.patcher1.stop()
- self.p1.stop()
-
- def test_import_from_file(self, *args):
- set_module_args(dict(
- name='fake_policy',
- source=self.policy,
- type='access_policy',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- ),
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.version_less_than_14 = Mock(return_value=False)
- mm.exists = Mock(return_value=False)
- mm.import_file_to_device = Mock(return_value=True)
- mm.remove_temp_file_from_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['name'] == 'fake_policy'
- assert results['source'] == self.policy
diff --git a/test/units/modules/network/f5/test_bigip_appsvcs_extension.py b/test/units/modules/network/f5/test_bigip_appsvcs_extension.py
deleted file mode 100644
index 4f61a23f15..0000000000
--- a/test/units/modules/network/f5/test_bigip_appsvcs_extension.py
+++ /dev/null
@@ -1,104 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2018, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_appsvcs_extension import ModuleParameters
- from library.modules.bigip_appsvcs_extension import ModuleManager
- from library.modules.bigip_appsvcs_extension import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_appsvcs_extension import ModuleParameters
- from ansible.modules.network.f5.bigip_appsvcs_extension import ModuleManager
- from ansible.modules.network.f5.bigip_appsvcs_extension import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- content='{ "foo": "bar" }',
- force=True,
- targets=['T1', 'T2']
- )
-
- p = ModuleParameters(params=args)
- assert 'foo' in p.content
- assert p.force is True
- assert p.targets == ['T1', 'T2']
-
-
-class TestManager(unittest.TestCase):
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create(self, *args):
- set_module_args(dict(
- content='{ "foo": "bar" }',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- required_if=self.spec.required_if
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(return_value=False)
- mm.upsert_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_asm_dos_application.py b/test/units/modules/network/f5/test_bigip_asm_dos_application.py
deleted file mode 100644
index bd9a99125d..0000000000
--- a/test/units/modules/network/f5/test_bigip_asm_dos_application.py
+++ /dev/null
@@ -1,279 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2019, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_asm_dos_application import ApiParameters
- from library.modules.bigip_asm_dos_application import ModuleParameters
- from library.modules.bigip_asm_dos_application import ModuleManager
- from library.modules.bigip_asm_dos_application import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
- from test.units.compat.mock import patch
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_asm_dos_application import ApiParameters
- from ansible.modules.network.f5.bigip_asm_dos_application import ModuleParameters
- from ansible.modules.network.f5.bigip_asm_dos_application import ModuleManager
- from ansible.modules.network.f5.bigip_asm_dos_application import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
- from units.compat.mock import patch
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- profile='dos_foo',
- geolocations=dict(
- blacklist=['Argentina', 'Montenegro'],
- whitelist=['France', 'Belgium']
- ),
- heavy_urls=dict(
- auto_detect=True,
- latency_threshold=3000,
- exclude=['/exclude1.html', '/exclude2.html'],
- include=[dict(url='include1.html', threshold='auto'),
- dict(url='include2.html', threshold='2000')],
- ),
- mobile_detection=dict(
- enabled=True,
- allow_android_rooted_device=True,
- allow_any_android_package=True,
- allow_any_ios_package=True,
- allow_jailbroken_devices=True,
- allow_emulators=True,
- client_side_challenge_mode='cshui',
- ios_allowed_package_names=['foo', 'bar'],
- android_publishers=['cert1.crt', 'cert2.crt']
- ),
- rtbh_duration=180,
- rtbh_enable=True,
- scrubbing_duration=360,
- scrubbing_enable=True,
- single_page_application=True,
- trigger_irule=False,
- partition='Common'
- )
-
- p = ModuleParameters(params=args)
- assert p.profile == 'dos_foo'
- assert p.geo_whitelist == ['France', 'Belgium']
- assert p.geo_blacklist == ['Argentina', 'Montenegro']
- assert p.auto_detect == 'enabled'
- assert p.latency_threshold == 3000
- assert p.hw_url_exclude == ['/exclude1.html', '/exclude2.html']
- assert dict(name='URL/include1.html', threshold='auto', url='/include1.html') in p.hw_url_include
- assert dict(name='URL/include2.html', threshold='2000', url='/include2.html') in p.hw_url_include
- assert p.allow_android_rooted_device == 'true'
- assert p.enable_mobile_detection == 'enabled'
- assert p.allow_any_android_package == 'true'
- assert p.allow_any_ios_package == 'true'
- assert p.allow_jailbroken_devices == 'true'
- assert p.allow_emulators == 'true'
- assert p.client_side_challenge_mode == 'cshui'
- assert p.ios_allowed_package_names == ['foo', 'bar']
- assert p.android_publishers == ['/Common/cert1.crt', '/Common/cert2.crt']
- assert p.rtbh_duration == 180
- assert p.rtbh_enable == 'enabled'
- assert p.scrubbing_duration == 360
- assert p.scrubbing_enable == 'enabled'
- assert p.single_page_application == 'enabled'
- assert p.trigger_irule == 'disabled'
-
- def test_api_parameters(self):
- args = load_fixture('load_asm_dos.json')
-
- p = ApiParameters(params=args)
- assert p.geo_whitelist == ['Aland Islands']
- assert p.geo_blacklist == ['Afghanistan']
- assert p.auto_detect == 'enabled'
- assert p.latency_threshold == 1000
- assert p.hw_url_exclude == ['/exclude.html']
- assert dict(name='URL/test.htm', threshold='auto', url='/test.htm') in p.hw_url_include
- assert dict(name='URL/testy.htm', threshold='auto', url='/testy.htm') in p.hw_url_include
- assert p.allow_android_rooted_device == 'false'
- assert p.enable_mobile_detection == 'disabled'
- assert p.allow_any_android_package == 'false'
- assert p.allow_any_ios_package == 'false'
- assert p.allow_jailbroken_devices == 'true'
- assert p.allow_emulators == 'true'
- assert p.client_side_challenge_mode == 'pass'
- assert p.ios_allowed_package_names == ['foobarapp']
- assert p.android_publishers == ['/Common/ca-bundle.crt']
- assert p.rtbh_duration == 300
- assert p.rtbh_enable == 'enabled'
- assert p.scrubbing_duration == 60
- assert p.scrubbing_enable == 'enabled'
- assert p.single_page_application == 'enabled'
- assert p.trigger_irule == 'enabled'
-
-
-class TestManager(unittest.TestCase):
- def setUp(self):
- self.spec = ArgumentSpec()
- try:
- self.p1 = patch('library.modules.bigip_asm_dos_application.module_provisioned')
- self.m1 = self.p1.start()
- self.m1.return_value = True
- except Exception:
- self.p1 = patch('ansible.modules.network.f5.bigip_asm_dos_application.module_provisioned')
- self.m1 = self.p1.start()
- self.m1.return_value = True
-
- def tearDown(self):
- self.p1.stop()
-
- def test_create_asm_dos_profile(self, *args):
- set_module_args(dict(
- profile='dos_foo',
- geolocations=dict(
- blacklist=['Argentina', 'Montenegro'],
- whitelist=['France', 'Belgium']
- ),
- heavy_urls=dict(
- auto_detect=True,
- latency_threshold=3000,
- exclude=['/exclude1.html', '/exclude2.html'],
- include=[dict(url='include1.html', threshold='auto'),
- dict(url='include2.html', threshold='2000')]
- ),
- mobile_detection=dict(
- enabled=True,
- allow_android_rooted_device=True,
- allow_any_android_package=True,
- allow_any_ios_package=True,
- allow_jailbroken_devices=True,
- allow_emulators=True,
- client_side_challenge_mode='cshui',
- ios_allowed_package_names=['foo', 'bar'],
- android_publishers=['cert1.crt', 'cert2.crt']
- ),
- rtbh_duration=180,
- rtbh_enable=True,
- scrubbing_duration=360,
- scrubbing_enable=True,
- single_page_application=True,
- trigger_irule=False,
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=False)
- mm.create_on_device = Mock(return_value=True)
- mm.version_less_than_13_1 = Mock(return_value=False)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['geolocations'] == dict(blacklist=['Argentina', 'Montenegro'], whitelist=['France', 'Belgium'])
- assert results['heavy_urls'] == dict(auto_detect='yes', latency_threshold=3000,
- exclude=['/exclude1.html', '/exclude2.html'],
- include=[dict(url='/include1.html', threshold='auto'),
- dict(url='/include2.html', threshold='2000')]
- )
- assert results['mobile_detection'] == dict(enabled='yes', allow_android_rooted_device='yes',
- allow_any_android_package='yes', allow_any_ios_package='yes',
- allow_jailbroken_devices='yes', allow_emulators='yes',
- client_side_challenge_mode='cshui',
- ios_allowed_package_names=['foo', 'bar'],
- android_publishers=['/Common/cert1.crt', '/Common/cert2.crt']
- )
- assert results['rtbh_duration'] == 180
- assert results['rtbh_enable'] == 'yes'
- assert results['scrubbing_duration'] == 360
- assert results['scrubbing_enable'] == 'yes'
- assert results['single_page_application'] == 'yes'
- assert results['trigger_irule'] == 'no'
-
- def test_update_asm_dos_profile(self, *args):
- set_module_args(dict(
- profile='test',
- heavy_urls=dict(
- latency_threshold=3000,
- exclude=['/exclude1.html', '/exclude2.html'],
- include=[dict(url='include1.html', threshold='auto'),
- dict(url='include2.html', threshold='2000')]
- ),
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = ApiParameters(params=load_fixture('load_asm_dos.json'))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.update_on_device = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.version_less_than_13_1 = Mock(return_value=False)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['heavy_urls'] == dict(latency_threshold=3000, exclude=['/exclude1.html', '/exclude2.html'],
- include=[dict(url='/include1.html', threshold='auto'),
- dict(url='/include2.html', threshold='2000')]
- )
diff --git a/test/units/modules/network/f5/test_bigip_asm_policy_fetch.py b/test/units/modules/network/f5/test_bigip_asm_policy_fetch.py
deleted file mode 100644
index 2c40ffcd98..0000000000
--- a/test/units/modules/network/f5/test_bigip_asm_policy_fetch.py
+++ /dev/null
@@ -1,130 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2018, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_asm_policy_fetch import ModuleParameters
- from library.modules.bigip_asm_policy_fetch import ModuleManager
- from library.modules.bigip_asm_policy_fetch import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
- from test.units.compat.mock import patch
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_asm_policy_fetch import ModuleParameters
- from ansible.modules.network.f5.bigip_asm_policy_fetch import ModuleManager
- from ansible.modules.network.f5.bigip_asm_policy_fetch import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
- from units.compat.mock import patch
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- inline='yes',
- compact='no',
- base64='yes',
- dest='/tmp/foo.xml',
- force='yes',
- file='foo.xml'
- )
- p = ModuleParameters(params=args)
- assert p.inline is True
- assert p.compact is False
- assert p.base64 is True
- assert p.file == 'foo.xml'
-
-
-class TestManager(unittest.TestCase):
- def setUp(self):
- self.spec = ArgumentSpec()
- self.patcher1 = patch('time.sleep')
- self.patcher1.start()
-
- try:
- self.p1 = patch('library.modules.bigip_asm_policy_fetch.module_provisioned')
- self.m1 = self.p1.start()
- self.m1.return_value = True
- except Exception:
- self.p1 = patch('ansible.modules.network.f5.bigip_asm_policy_fetch.module_provisioned')
- self.m1 = self.p1.start()
- self.m1.return_value = True
-
- def tearDown(self):
- self.patcher1.stop()
- self.p1.stop()
-
- def test_create(self, *args):
- set_module_args(dict(
- name='fake_policy',
- file='foobar.xml',
- dest='/tmp/foobar.xml',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive,
- )
-
- mp = ModuleParameters(params=module.params)
- mp._policy_exists = Mock(return_value=True)
- mm = ModuleManager(module=module)
- mm.want = Mock(return_value=mp)
- mm.want.binary = False
- mm.exists = Mock(return_value=False)
- mm.create_on_device = Mock(return_value=True)
- mm.execute = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_asm_policy_import.py b/test/units/modules/network/f5/test_bigip_asm_policy_import.py
deleted file mode 100644
index 5de1dcf110..0000000000
--- a/test/units/modules/network/f5/test_bigip_asm_policy_import.py
+++ /dev/null
@@ -1,125 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2018, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_asm_policy_import import ModuleParameters
- from library.modules.bigip_asm_policy_import import ModuleManager
- from library.modules.bigip_asm_policy_import import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
- from test.units.compat.mock import patch
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_asm_policy_import import ModuleParameters
- from ansible.modules.network.f5.bigip_asm_policy_import import ModuleManager
- from ansible.modules.network.f5.bigip_asm_policy_import import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
- from units.compat.mock import patch
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='fake_policy',
- state='present',
- source='/var/fake/fake.xml'
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'fake_policy'
- assert p.source == '/var/fake/fake.xml'
-
-
-class TestManager(unittest.TestCase):
- def setUp(self):
- self.spec = ArgumentSpec()
- self.policy = os.path.join(fixture_path, 'fake_policy.xml')
- self.patcher1 = patch('time.sleep')
- self.patcher1.start()
-
- try:
- self.p1 = patch('library.modules.bigip_asm_policy_import.module_provisioned')
- self.m1 = self.p1.start()
- self.m1.return_value = True
- except Exception:
- self.p1 = patch('ansible.modules.network.f5.bigip_asm_policy_import.module_provisioned')
- self.m1 = self.p1.start()
- self.m1.return_value = True
-
- def tearDown(self):
- self.patcher1.stop()
- self.p1.stop()
-
- def test_import_from_file(self, *args):
- set_module_args(dict(
- name='fake_policy',
- source=self.policy,
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive,
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=False)
- mm.import_file_to_device = Mock(return_value=True)
- mm.remove_temp_policy_from_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['name'] == 'fake_policy'
- assert results['source'] == self.policy
diff --git a/test/units/modules/network/f5/test_bigip_asm_policy_manage.py b/test/units/modules/network/f5/test_bigip_asm_policy_manage.py
deleted file mode 100644
index 6379b6600d..0000000000
--- a/test/units/modules/network/f5/test_bigip_asm_policy_manage.py
+++ /dev/null
@@ -1,519 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2018, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_asm_policy_manage import V1Parameters
- from library.modules.bigip_asm_policy_manage import ModuleManager
- from library.modules.bigip_asm_policy_manage import V1Manager
- from library.modules.bigip_asm_policy_manage import ArgumentSpec
-
- from library.module_utils.network.f5.common import F5ModuleError
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
- from test.units.compat.mock import patch
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_asm_policy_manage import V1Parameters
- from ansible.modules.network.f5.bigip_asm_policy_manage import ModuleManager
- from ansible.modules.network.f5.bigip_asm_policy_manage import V1Manager
- from ansible.modules.network.f5.bigip_asm_policy_manage import ArgumentSpec
-
- from ansible.module_utils.network.f5.common import F5ModuleError
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
- from units.compat.mock import patch
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters_template(self):
- args = dict(
- name='fake_policy',
- state='present',
- template='LotusDomino 6.5 (http)'
- )
-
- p = V1Parameters(params=args)
- assert p.name == 'fake_policy'
- assert p.state == 'present'
- assert p.template == 'POLICY_TEMPLATE_LOTUSDOMINO_6_5_HTTP'
-
-
-class TestManager(unittest.TestCase):
- def setUp(self):
- self.spec = ArgumentSpec()
- self.policy = os.path.join(fixture_path, 'fake_policy.xml')
- self.patcher1 = patch('time.sleep')
- self.patcher1.start()
-
- try:
- self.p1 = patch('library.modules.bigip_asm_policy_manage.module_provisioned')
- self.m1 = self.p1.start()
- self.m1.return_value = True
- except Exception:
- self.p1 = patch('ansible.modules.network.f5.bigip_asm_policy_manage.module_provisioned')
- self.m1 = self.p1.start()
- self.m1.return_value = True
-
- def tearDown(self):
- self.patcher1.stop()
- self.p1.stop()
-
- def test_activate_create_from_template(self, *args):
- set_module_args(dict(
- name='fake_policy',
- template='OWA Exchange 2007 (https)',
- state='present',
- active='yes',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = V1Parameters(params=load_fixture('load_asm_policy_inactive.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- v1 = V1Manager(module=module)
- v1.exists = Mock(return_value=False)
- v1.import_to_device = Mock(return_value=True)
- v1.wait_for_task = Mock(side_effect=[True, True])
- v1.read_current_from_device = Mock(return_value=current)
- v1.apply_on_device = Mock(return_value=True)
- v1.create_from_template_on_device = Mock(return_value=True)
- v1._file_is_missing = Mock(return_value=False)
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.version_is_less_than_13 = Mock(return_value=False)
- mm.get_manager = Mock(return_value=v1)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['name'] == 'fake_policy'
- assert results['template'] == 'OWA Exchange 2007 (https)'
- assert results['active'] is True
-
- def test_activate_create_by_name(self, *args):
- set_module_args(dict(
- name='fake_policy',
- state='present',
- active='yes',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = V1Parameters(params=load_fixture('load_asm_policy_inactive.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- v1 = V1Manager(module=module)
- v1.exists = Mock(return_value=False)
- v1.import_to_device = Mock(return_value=True)
- v1.wait_for_task = Mock(side_effect=[True, True])
- v1.create_on_device = Mock(return_value=True)
- v1.create_blank = Mock(return_value=True)
- v1.read_current_from_device = Mock(return_value=current)
- v1.apply_on_device = Mock(return_value=True)
- v1._file_is_missing = Mock(return_value=False)
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.version_is_less_than_13 = Mock(return_value=False)
- mm.get_manager = Mock(return_value=v1)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['name'] == 'fake_policy'
- assert results['active'] is True
-
- def test_activate_policy_exists_inactive(self, *args):
- set_module_args(dict(
- name='fake_policy',
- state='present',
- active='yes',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = V1Parameters(params=load_fixture('load_asm_policy_inactive.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- v1 = V1Manager(module=module)
- v1.exists = Mock(return_value=True)
- v1.update_on_device = Mock(return_value=True)
- v1.wait_for_task = Mock(side_effect=[True, True])
- v1.read_current_from_device = Mock(return_value=current)
- v1.apply_on_device = Mock(return_value=True)
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.version_is_less_than_13 = Mock(return_value=False)
- mm.get_manager = Mock(return_value=v1)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['active'] is True
-
- def test_activate_policy_exists_active(self, *args):
- set_module_args(dict(
- name='fake_policy',
- state='present',
- active='yes',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = V1Parameters(params=load_fixture('load_asm_policy_active.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods to force specific logic in the module to happen
- v1 = V1Manager(module=module)
- v1.exists = Mock(return_value=True)
- v1.read_current_from_device = Mock(return_value=current)
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.version_is_less_than_13 = Mock(return_value=False)
- mm.get_manager = Mock(return_value=v1)
-
- results = mm.exec_module()
-
- assert results['changed'] is False
-
- def test_deactivate_policy_exists_active(self, *args):
- set_module_args(dict(
- name='fake_policy',
- state='present',
- active='no',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = V1Parameters(params=load_fixture('load_asm_policy_active.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods to force specific logic in the module to happen
- v1 = V1Manager(module=module)
- v1.exists = Mock(return_value=True)
- v1.read_current_from_device = Mock(return_value=current)
- v1.update_on_device = Mock(return_value=True)
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.version_is_less_than_13 = Mock(return_value=False)
- mm.get_manager = Mock(return_value=v1)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['active'] is False
-
- def test_deactivate_policy_exists_inactive(self, *args):
- set_module_args(dict(
- name='fake_policy',
- state='present',
- active='no',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = V1Parameters(params=load_fixture('load_asm_policy_inactive.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods to force specific logic in the module to happen
- v1 = V1Manager(module=module)
- v1.exists = Mock(return_value=True)
- v1.read_current_from_device = Mock(return_value=current)
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.version_is_less_than_13 = Mock(return_value=False)
- mm.get_manager = Mock(return_value=v1)
-
- results = mm.exec_module()
-
- assert results['changed'] is False
-
- def test_create_from_template(self, *args):
- set_module_args(dict(
- name='fake_policy',
- template='LotusDomino 6.5 (http)',
- state='present',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = V1Parameters(params=load_fixture('load_asm_policy_inactive.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods to force specific logic in the module to happen
- v1 = V1Manager(module=module)
- v1.exists = Mock(return_value=False)
- v1.create_from_template_on_device = Mock(return_value=True)
- v1.wait_for_task = Mock(side_effect=[True, True])
- v1.read_current_from_device = Mock(return_value=current)
- v1._file_is_missing = Mock(return_value=False)
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.version_is_less_than_13 = Mock(return_value=False)
- mm.get_manager = Mock(return_value=v1)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['name'] == 'fake_policy'
- assert results['template'] == 'LotusDomino 6.5 (http)'
- assert results['active'] is False
-
- def test_create_by_name(self, *args):
- set_module_args(dict(
- name='fake_policy',
- state='present',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = V1Parameters(params=load_fixture('load_asm_policy_inactive.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- v1 = V1Manager(module=module)
- v1.exists = Mock(return_value=False)
- v1.import_to_device = Mock(return_value=True)
- v1.wait_for_task = Mock(side_effect=[True, True])
- v1.create_on_device = Mock(return_value=True)
- v1.create_blank = Mock(return_value=True)
- v1.read_current_from_device = Mock(return_value=current)
- v1.apply_on_device = Mock(return_value=True)
- v1._file_is_missing = Mock(return_value=False)
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.version_is_less_than_13 = Mock(return_value=False)
- mm.get_manager = Mock(return_value=v1)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['name'] == 'fake_policy'
- assert results['active'] is False
-
- def test_delete_policy(self, *args):
- set_module_args(dict(
- name='fake_policy',
- state='absent',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods to force specific logic in the module to happen
- v1 = V1Manager(module=module)
- v1.exists = Mock(side_effect=[True, False])
- v1.remove_from_device = Mock(return_value=True)
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.version_is_less_than_13 = Mock(return_value=False)
- mm.get_manager = Mock(return_value=v1)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
-
- def test_activate_policy_raises(self, *args):
- set_module_args(dict(
- name='fake_policy',
- state='present',
- active='yes',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = V1Parameters(params=load_fixture('load_asm_policy_inactive.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- msg = 'Apply policy task failed.'
- # Override methods to force specific logic in the module to happen
- v1 = V1Manager(module=module)
- v1.exists = Mock(return_value=True)
- v1.wait_for_task = Mock(return_value=False)
- v1.update_on_device = Mock(return_value=True)
- v1.read_current_from_device = Mock(return_value=current)
- v1.apply_on_device = Mock(return_value=True)
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.version_is_less_than_13 = Mock(return_value=False)
- mm.get_manager = Mock(return_value=v1)
-
- with pytest.raises(F5ModuleError) as err:
- mm.exec_module()
- assert str(err.value) == msg
-
- def test_create_policy_raises(self, *args):
- set_module_args(dict(
- name='fake_policy',
- state='present',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- msg = 'Failed to create ASM policy: fake_policy'
- # Override methods to force specific logic in the module to happen
- v1 = V1Manager(module=module)
- v1.exists = Mock(return_value=False)
- v1.create_on_device = Mock(return_value=False)
- v1._file_is_missing = Mock(return_value=False)
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.version_is_less_than_13 = Mock(return_value=False)
- mm.get_manager = Mock(return_value=v1)
-
- with pytest.raises(F5ModuleError) as err:
- mm.exec_module()
- assert str(err.value) == msg
-
- def test_delete_policy_raises(self, *args):
- set_module_args(dict(
- name='fake_policy',
- state='absent',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- msg = 'Failed to delete ASM policy: fake_policy'
- # Override methods to force specific logic in the module to happen
- v1 = V1Manager(module=module)
- v1.exists = Mock(side_effect=[True, True])
- v1.remove_from_device = Mock(return_value=True)
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.version_is_less_than_13 = Mock(return_value=False)
- mm.get_manager = Mock(return_value=v1)
-
- with pytest.raises(F5ModuleError) as err:
- mm.exec_module()
- assert str(err.value) == msg
diff --git a/test/units/modules/network/f5/test_bigip_asm_policy_server_technology.py b/test/units/modules/network/f5/test_bigip_asm_policy_server_technology.py
deleted file mode 100644
index 60c0530821..0000000000
--- a/test/units/modules/network/f5/test_bigip_asm_policy_server_technology.py
+++ /dev/null
@@ -1,122 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2018, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_asm_policy_server_technology import ModuleParameters
- from library.modules.bigip_asm_policy_server_technology import ModuleManager
- from library.modules.bigip_asm_policy_server_technology import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
- from test.units.compat.mock import patch
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_asm_policy_server_technology import ModuleParameters
- from ansible.modules.network.f5.bigip_asm_policy_server_technology import ModuleManager
- from ansible.modules.network.f5.bigip_asm_policy_server_technology import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
- from units.compat.mock import patch
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='ASP',
- state='present',
- policy_name='fake_policy'
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'ASP'
- assert p.state == 'present'
- assert p.policy_name == 'fake_policy'
-
-
-class TestManager(unittest.TestCase):
- def setUp(self):
- self.spec = ArgumentSpec()
-
- try:
- self.p1 = patch('library.modules.bigip_asm_policy_server_technology.module_provisioned')
- self.m1 = self.p1.start()
- self.m1.return_value = True
- except Exception:
- self.p1 = patch('ansible.modules.network.f5.bigip_asm_policy_server_technology.module_provisioned')
- self.m1 = self.p1.start()
- self.m1.return_value = True
-
- def tearDown(self):
- self.p1.stop()
-
- def test_add_server_technology(self, *args):
- set_module_args(dict(
- policy_name='fake_policy',
- state='present',
- name='IIS',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- ),
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.version_is_less_than_13 = Mock(return_value=False)
- mm.exists = Mock(return_value=False)
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['name'] == 'IIS'
- assert results['policy_name'] == 'fake_policy'
diff --git a/test/units/modules/network/f5/test_bigip_asm_policy_signature_set.py b/test/units/modules/network/f5/test_bigip_asm_policy_signature_set.py
deleted file mode 100644
index 7c23a5c17f..0000000000
--- a/test/units/modules/network/f5/test_bigip_asm_policy_signature_set.py
+++ /dev/null
@@ -1,151 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2018, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_asm_policy_signature_set import ModuleParameters
- from library.modules.bigip_asm_policy_signature_set import ModuleManager
- from library.modules.bigip_asm_policy_signature_set import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
- from test.units.compat.mock import patch
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_asm_policy_signature_set import ModuleParameters
- from ansible.modules.network.f5.bigip_asm_policy_signature_set import ModuleManager
- from ansible.modules.network.f5.bigip_asm_policy_signature_set import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
- from units.compat.mock import patch
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='IIS and Windows Signatures',
- state='present',
- policy_name='fake_policy',
- alarm='yes',
- block='no',
- learn='yes'
- )
- try:
- self.p1 = patch('library.modules.bigip_asm_policy_signature_set.tmos_version')
- self.m1 = self.p1.start()
- self.m1.return_value = '13.1.0'
- except Exception:
- self.p1 = patch('ansible.modules.network.f5.bigip_asm_policy_signature_set.tmos_version')
- self.m1 = self.p1.start()
- self.m1.return_value = '13.1.0'
-
- p = ModuleParameters(params=args)
-
- assert p.name == 'IIS and Windows Signatures'
- assert p.state == 'present'
- assert p.policy_name == 'fake_policy'
- assert p.alarm is True
- assert p.block is False
- assert p.learn is True
-
- self.p1.stop()
-
-
-class TestManager(unittest.TestCase):
- def setUp(self):
- self.spec = ArgumentSpec()
-
- try:
- self.p1 = patch('library.modules.bigip_asm_policy_signature_set.module_provisioned')
- self.p2 = patch('library.modules.bigip_asm_policy_signature_set.tmos_version')
- self.m1 = self.p1.start()
- self.m2 = self.p2.start()
- self.m2.return_value = '13.1.0'
- self.m1.return_value = True
- except Exception:
- self.p1 = patch('ansible.modules.network.f5.bigip_asm_policy_signature_set.module_provisioned')
- self.p2 = patch('ansible.modules.network.f5.bigip_asm_policy_signature_set.tmos_version')
- self.m1 = self.p1.start()
- self.m2 = self.p2.start()
- self.m2.return_value = '13.1.0'
- self.m1.return_value = True
-
- def tearDown(self):
- self.p1.stop()
- self.p2.stop()
-
- def test_add_server_technology(self, *args):
- set_module_args(dict(
- policy_name='fake_policy',
- state='present',
- name='IIS and Windows Signatures',
- alarm='yes',
- block='no',
- learn='yes',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=False)
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['name'] == 'IIS and Windows Signatures'
- assert results['policy_name'] == 'fake_policy'
- assert results['alarm'] == 'yes'
- assert results['block'] == 'no'
- assert results['learn'] == 'yes'
diff --git a/test/units/modules/network/f5/test_bigip_cli_alias.py b/test/units/modules/network/f5/test_bigip_cli_alias.py
deleted file mode 100644
index 6c980cdb02..0000000000
--- a/test/units/modules/network/f5/test_bigip_cli_alias.py
+++ /dev/null
@@ -1,118 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2018, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_cli_alias import ApiParameters
- from library.modules.bigip_cli_alias import ModuleParameters
- from library.modules.bigip_cli_alias import ModuleManager
- from library.modules.bigip_cli_alias import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_cli_alias import ApiParameters
- from ansible.modules.network.f5.bigip_cli_alias import ModuleParameters
- from ansible.modules.network.f5.bigip_cli_alias import ModuleManager
- from ansible.modules.network.f5.bigip_cli_alias import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- command='run /util bash',
- description='another description',
- scope='shared',
- )
-
- p = ModuleParameters(params=args)
- assert p.command == 'run /util bash'
- assert p.description == 'another description'
- assert p.scope == 'shared'
-
- def test_api_parameters(self):
- args = load_fixture('load_tm_cli_alias_1.json')
-
- p = ApiParameters(params=args)
- assert p.command == 'run /util bash'
- assert p.description == 'Run the bash shell'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create_default_device_group(self, *args):
- set_module_args(
- dict(
- name="foo-group",
- command='run /util bash',
- description='another description',
- scope='shared',
- state="present",
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- )
- )
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.create_on_device = Mock(return_value=True)
- mm.exists = Mock(return_value=False)
-
- results = mm.exec_module()
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_cli_script.py b/test/units/modules/network/f5/test_bigip_cli_script.py
deleted file mode 100644
index 382b0fc61e..0000000000
--- a/test/units/modules/network/f5/test_bigip_cli_script.py
+++ /dev/null
@@ -1,114 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2018, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_cli_script import ApiParameters
- from library.modules.bigip_cli_script import ModuleParameters
- from library.modules.bigip_cli_script import ModuleManager
- from library.modules.bigip_cli_script import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_cli_script import ApiParameters
- from ansible.modules.network.f5.bigip_cli_script import ModuleParameters
- from ansible.modules.network.f5.bigip_cli_script import ModuleManager
- from ansible.modules.network.f5.bigip_cli_script import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- content="my content",
- description="my description"
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.content == 'my content'
- assert p.description == 'my description'
-
- def test_api_parameters(self):
- args = load_fixture('load_tm_cli_script_1.json')
-
- p = ApiParameters(params=args)
- assert p.name == 'foo'
- assert p.content == 'proc script::run {} {}'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create(self, *args):
- set_module_args(dict(
- name='foo',
- content='asdasds',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_command.py b/test/units/modules/network/f5/test_bigip_command.py
deleted file mode 100644
index 79b763eebc..0000000000
--- a/test/units/modules/network/f5/test_bigip_command.py
+++ /dev/null
@@ -1,299 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_command import Parameters
- from library.modules.bigip_command import ModuleManager
- from library.modules.bigip_command import V1Manager
- from library.modules.bigip_command import V2Manager
- from library.modules.bigip_command import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
- from test.units.compat.mock import patch
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_command import Parameters
- from ansible.modules.network.f5.bigip_command import ModuleManager
- from ansible.modules.network.f5.bigip_command import V1Manager
- from ansible.modules.network.f5.bigip_command import V2Manager
- from ansible.modules.network.f5.bigip_command import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
- from units.compat.mock import patch
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
- with open(path) as f:
- data = f.read()
- try:
- data = json.loads(data)
- except Exception:
- pass
- return data
-
-
-class TestParameters(unittest.TestCase):
-
- def test_module_parameters(self):
- args = dict(
- commands=[
- "tmsh show sys version"
- ],
- )
- p = Parameters(params=args)
- assert len(p.commands) == 1
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
- self.patcher1 = patch('time.sleep')
- self.patcher1.start()
-
- def tearDown(self):
- self.patcher1.stop()
-
- def test_run_single_command(self, *args):
- set_module_args(dict(
- commands=[
- "tmsh show sys version"
- ],
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- m1 = V2Manager(module=module)
- m1.execute_on_device = Mock(return_value=['resp1', 'resp2'])
-
- mm = ModuleManager(module=module)
- mm._run_commands = Mock(return_value=[])
- mm.get_manager = Mock(return_value=m1)
-
- results = mm.exec_module()
-
- assert results['changed'] is False
- assert mm._run_commands.call_count == 0
- assert m1.execute_on_device.call_count == 2
-
- def test_run_single_modification_command(self, *args):
- set_module_args(dict(
- commands=[
- "tmsh create ltm virtual foo"
- ],
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- m1 = V2Manager(module=module)
- m1.execute_on_device = Mock(return_value=['resp1', 'resp2'])
-
- mm = ModuleManager(module=module)
- mm._run_commands = Mock(return_value=[])
- mm.get_manager = Mock(return_value=m1)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert mm._run_commands.call_count == 0
- assert m1.execute_on_device.call_count == 2
-
- def test_cli_command(self, *args):
- set_module_args(dict(
- commands=[
- "show sys version"
- ],
- provider=dict(
- server='localhost',
- password='password',
- user='admin',
- transport='cli'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- m1 = V1Manager(module=module)
- m1.execute_on_device = Mock(return_value=['resp1', 'resp2', 'resp3'])
-
- mm = ModuleManager(module=module)
- mm._run_commands = Mock(return_value=[])
- mm.get_manager = Mock(return_value=m1)
-
- results = mm.exec_module()
-
- assert results['changed'] is False
-
- # call count is two on CLI transport because we must first
- # determine if the remote CLI is in tmsh mode or advanced shell
- # (bash) mode.
- #
- # 1 call for the shell check
- # 1 call for the command in the "commands" list above
- #
- # Can we change this in the future by making the terminal plugin
- # find this out ahead of time?
- assert m1.execute_on_device.call_count == 3
-
- def test_command_with_commas(self, *args):
- set_module_args(dict(
- commands="""
- tmsh create /auth ldap system-auth {bind-dn uid=binduser,
- cn=users,dc=domain,dc=com bind-pw $ENCRYPTEDPW check-roles-group
- enabled search-base-dn cn=users,dc=domain,dc=com servers add {
- ldap.server.com } }
- """,
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- m1 = V2Manager(module=module)
- m1.execute_on_device = Mock(return_value=['resp1', 'resp2'])
-
- mm = ModuleManager(module=module)
- mm.get_manager = Mock(return_value=m1)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert m1.execute_on_device.call_count == 2
-
- def test_normalizing_command_show(self, *args):
- args = dict(
- commands=[
- "show sys version"
- ],
- )
-
- result = V2Manager.normalize_commands(args['commands'])
-
- assert result[0] == 'show sys version'
-
- def test_normalizing_command_delete(self, *args):
- args = dict(
- commands=[
- "delete sys version"
- ],
- )
-
- result = V2Manager.normalize_commands(args['commands'])
-
- assert result[0] == 'delete sys version'
-
- def test_normalizing_command_modify(self, *args):
- args = dict(
- commands=[
- "modify sys version"
- ],
- )
-
- result = V2Manager.normalize_commands(args['commands'])
-
- assert result[0] == 'modify sys version'
-
- def test_normalizing_command_list(self, *args):
- args = dict(
- commands=[
- "list sys version"
- ],
- )
-
- result = V2Manager.normalize_commands(args['commands'])
-
- assert result[0] == 'list sys version'
-
- def test_normalizing_command_tmsh_show(self, *args):
- args = dict(
- commands=[
- "tmsh show sys version"
- ],
- )
-
- result = V2Manager.normalize_commands(args['commands'])
-
- assert result[0] == 'show sys version'
-
- def test_normalizing_command_tmsh_delete(self, *args):
- args = dict(
- commands=[
- "tmsh delete sys version"
- ],
- )
-
- result = V2Manager.normalize_commands(args['commands'])
-
- assert result[0] == 'delete sys version'
-
- def test_normalizing_command_tmsh_modify(self, *args):
- args = dict(
- commands=[
- "tmsh modify sys version"
- ],
- )
-
- result = V2Manager.normalize_commands(args['commands'])
-
- assert result[0] == 'modify sys version'
-
- def test_normalizing_command_tmsh_list(self, *args):
- args = dict(
- commands=[
- "tmsh list sys version"
- ],
- )
-
- result = V2Manager.normalize_commands(args['commands'])
-
- assert result[0] == 'list sys version'
diff --git a/test/units/modules/network/f5/test_bigip_config.py b/test/units/modules/network/f5/test_bigip_config.py
deleted file mode 100644
index 9c616c11ab..0000000000
--- a/test/units/modules/network/f5/test_bigip_config.py
+++ /dev/null
@@ -1,112 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_config import Parameters
- from library.modules.bigip_config import ModuleManager
- from library.modules.bigip_config import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_config import Parameters
- from ansible.modules.network.f5.bigip_config import ModuleManager
- from ansible.modules.network.f5.bigip_config import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- save='yes',
- reset='yes',
- merge_content='asdasd',
- verify='no',
- )
- p = Parameters(params=args)
- assert p.save == 'yes'
- assert p.reset == 'yes'
- assert p.merge_content == 'asdasd'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_run_single_command(self, *args):
- set_module_args(dict(
- save='yes',
- reset='yes',
- merge_content='asdasd',
- verify='no',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exit_json = Mock(return_value=True)
- mm.reset_device = Mock(return_value='reset output')
- mm.upload_to_device = Mock(return_value=True)
- mm.move_on_device = Mock(return_value=True)
- mm.merge_on_device = Mock(return_value='merge output')
- mm.remove_temporary_file = Mock(return_value=True)
- mm.save_on_device = Mock(return_value='save output')
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_configsync_action.py b/test/units/modules/network/f5/test_bigip_configsync_action.py
deleted file mode 100644
index 99a2401745..0000000000
--- a/test/units/modules/network/f5/test_bigip_configsync_action.py
+++ /dev/null
@@ -1,135 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_configsync_action import Parameters
- from library.modules.bigip_configsync_action import ModuleManager
- from library.modules.bigip_configsync_action import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
- from test.units.compat.mock import patch
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_configsync_action import Parameters
- from ansible.modules.network.f5.bigip_configsync_action import ModuleManager
- from ansible.modules.network.f5.bigip_configsync_action import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
- from units.compat.mock import patch
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- sync_device_to_group=True,
- sync_group_to_device=True,
- overwrite_config=True,
- device_group="foo"
- )
- p = Parameters(params=args)
- assert p.sync_device_to_group is True
- assert p.sync_group_to_device is True
- assert p.overwrite_config is True
- assert p.device_group == 'foo'
-
- def test_module_parameters_yes_no(self):
- args = dict(
- sync_device_to_group='yes',
- sync_group_to_device='no',
- overwrite_config='yes',
- device_group="foo"
- )
- p = Parameters(params=args)
- assert p.sync_device_to_group == 'yes'
- assert p.sync_group_to_device == 'no'
- assert p.overwrite_config == 'yes'
- assert p.device_group == 'foo'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
- self.patcher1 = patch('time.sleep')
- self.patcher1.start()
-
- def tearDown(self):
- self.patcher1.stop()
-
- def test_update_agent_status_traps(self, *args):
- set_module_args(dict(
- sync_device_to_group='yes',
- device_group="foo",
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive,
- required_one_of=self.spec.required_one_of
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm._device_group_exists = Mock(return_value=True)
- mm._sync_to_group_required = Mock(return_value=False)
- mm.execute_on_device = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=None)
-
- mm._get_status_from_resource = Mock()
- mm._get_status_from_resource.side_effect = [
- 'Changes Pending', 'Awaiting Initial Sync', 'In Sync'
- ]
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_data_group.py b/test/units/modules/network/f5/test_bigip_data_group.py
deleted file mode 100644
index fda1a71b7f..0000000000
--- a/test/units/modules/network/f5/test_bigip_data_group.py
+++ /dev/null
@@ -1,485 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2017, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_data_group import ModuleParameters
- from library.modules.bigip_data_group import ModuleManager
- from library.modules.bigip_data_group import ExternalManager
- from library.modules.bigip_data_group import InternalManager
- from library.modules.bigip_data_group import ArgumentSpec
-
- from library.module_utils.network.f5.common import F5ModuleError
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_data_group import ModuleParameters
- from ansible.modules.network.f5.bigip_data_group import ModuleManager
- from ansible.modules.network.f5.bigip_data_group import ExternalManager
- from ansible.modules.network.f5.bigip_data_group import InternalManager
- from ansible.modules.network.f5.bigip_data_group import ArgumentSpec
-
- from ansible.module_utils.network.f5.common import F5ModuleError
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- type='address',
- delete_data_group_file=False,
- internal=False,
- records=[
- dict(
- key='10.10.10.10/32',
- value='bar'
- )
- ],
- separator=':=',
- state='present',
- partition='Common'
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.type == 'ip'
- assert p.delete_data_group_file is False
- assert len(p.records) == 1
- assert 'data' in p.records[0]
- assert 'name' in p.records[0]
- assert p.records[0]['data'] == 'bar'
- assert p.records[0]['name'] == '10.10.10.10/32'
- assert p.separator == ':='
- assert p.state == 'present'
- assert p.partition == 'Common'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create_external_datagroup_type_string(self, *args):
- set_module_args(dict(
- name='foo',
- delete_data_group_file=False,
- internal=False,
- records_src="{0}/data-group-string.txt".format(fixture_path),
- separator=':=',
- state='present',
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive,
- )
-
- # Override methods in the specific type of manager
- mm1 = ExternalManager(module=module, params=module.params)
- mm1.exists = Mock(side_effect=[False, True])
- mm1.create_on_device = Mock(return_value=True)
-
- # Override methods to force specific logic in the module to happen
- mm0 = ModuleManager(module=module)
- mm0.get_manager = Mock(return_value=mm1)
-
- results = mm0.exec_module()
-
- assert results['changed'] is True
-
- def test_create_external_incorrect_address_data(self, *args):
- set_module_args(dict(
- name='foo',
- delete_data_group_file=False,
- internal=False,
- type='address',
- records_src="{0}/data-group-string.txt".format(fixture_path),
- separator=':=',
- state='present',
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive,
- )
-
- # Override methods in the specific type of manager
- mm1 = ExternalManager(module=module, params=module.params)
- mm1.exists = Mock(side_effect=[False, True])
- mm1.create_on_device = Mock(return_value=True)
-
- # Override methods to force specific logic in the module to happen
- mm0 = ModuleManager(module=module)
- mm0.get_manager = Mock(return_value=mm1)
-
- with pytest.raises(F5ModuleError) as ex:
- mm0.exec_module()
-
- assert "When specifying an 'address' type, the value to the left of the separator must be an IP." == str(ex.value)
-
- def test_create_external_incorrect_integer_data(self, *args):
- set_module_args(dict(
- name='foo',
- delete_data_group_file=False,
- internal=False,
- type='integer',
- records_src="{0}/data-group-string.txt".format(fixture_path),
- separator=':=',
- state='present',
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive,
- )
-
- # Override methods in the specific type of manager
- mm1 = ExternalManager(module=module, params=module.params)
- mm1.exists = Mock(side_effect=[False, True])
- mm1.create_on_device = Mock(return_value=True)
-
- # Override methods to force specific logic in the module to happen
- mm0 = ModuleManager(module=module)
- mm0.get_manager = Mock(return_value=mm1)
-
- with pytest.raises(F5ModuleError) as ex:
- mm0.exec_module()
-
- assert "When specifying an 'integer' type, the value to the left of the separator must be a number." == str(ex.value)
-
- def test_remove_data_group_keep_file(self, *args):
- set_module_args(dict(
- name='foo',
- delete_data_group_file=False,
- internal=False,
- state='absent',
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive,
- )
-
- # Override methods in the specific type of manager
- mm1 = ExternalManager(module=module, params=module.params)
- mm1.exists = Mock(side_effect=[True, False])
- mm1.remove_from_device = Mock(return_value=True)
- mm1.external_file_exists = Mock(return_value=True)
-
- # Override methods to force specific logic in the module to happen
- mm0 = ModuleManager(module=module)
- mm0.get_manager = Mock(return_value=mm1)
-
- results = mm0.exec_module()
-
- assert results['changed'] is True
-
- def test_remove_data_group_remove_file(self, *args):
- set_module_args(dict(
- name='foo',
- delete_data_group_file=True,
- internal=False,
- state='absent',
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive,
- )
-
- # Override methods in the specific type of manager
- mm1 = ExternalManager(module=module, params=module.params)
- mm1.exists = Mock(side_effect=[True, False])
- mm1.remove_from_device = Mock(return_value=True)
- mm1.external_file_exists = Mock(return_value=True)
- mm1.remove_data_group_file_from_device = Mock(return_value=True)
-
- # Override methods to force specific logic in the module to happen
- mm0 = ModuleManager(module=module)
- mm0.get_manager = Mock(return_value=mm1)
-
- results = mm0.exec_module()
-
- assert results['changed'] is True
-
- def test_create_internal_datagroup_type_string(self, *args):
- set_module_args(dict(
- name='foo',
- delete_data_group_file=False,
- internal=True,
- records_src="{0}/data-group-string.txt".format(fixture_path),
- separator=':=',
- state='present',
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive,
- )
-
- # Override methods in the specific type of manager
- mm1 = InternalManager(module=module, params=module.params)
- mm1.exists = Mock(side_effect=[False, True])
- mm1.create_on_device = Mock(return_value=True)
-
- # Override methods to force specific logic in the module to happen
- mm0 = ModuleManager(module=module)
- mm0.get_manager = Mock(return_value=mm1)
-
- results = mm0.exec_module()
-
- assert results['changed'] is True
-
- def test_create_internal_incorrect_integer_data(self, *args):
- set_module_args(dict(
- name='foo',
- delete_data_group_file=False,
- internal=True,
- type='integer',
- records_src="{0}/data-group-string.txt".format(fixture_path),
- separator=':=',
- state='present',
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive,
- )
-
- # Override methods in the specific type of manager
- mm1 = InternalManager(module=module, params=module.params)
- mm1.exists = Mock(side_effect=[False, True])
- mm1.create_on_device = Mock(return_value=True)
-
- # Override methods to force specific logic in the module to happen
- mm0 = ModuleManager(module=module)
- mm0.get_manager = Mock(return_value=mm1)
-
- with pytest.raises(F5ModuleError) as ex:
- mm0.exec_module()
-
- assert "When specifying an 'integer' type, the value to the left of the separator must be a number." == str(ex.value)
-
- def test_create_internal_datagroup_type_integer(self, *args):
- set_module_args(dict(
- name='foo',
- delete_data_group_file=False,
- internal=True,
- type='integer',
- records_src="{0}/data-group-integer.txt".format(fixture_path),
- separator=':=',
- state='present',
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive,
- )
-
- # Override methods in the specific type of manager
- mm1 = InternalManager(module=module, params=module.params)
- mm1.exists = Mock(side_effect=[False, True])
- mm1.create_on_device = Mock(return_value=True)
-
- # Override methods to force specific logic in the module to happen
- mm0 = ModuleManager(module=module)
- mm0.get_manager = Mock(return_value=mm1)
-
- results = mm0.exec_module()
-
- assert results['changed'] is True
-
- def test_create_internal_datagroup_type_address(self, *args):
- set_module_args(dict(
- name='foo',
- delete_data_group_file=False,
- internal=True,
- type='address',
- records_src="{0}/data-group-address.txt".format(fixture_path),
- separator=':=',
- state='present',
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive,
- )
-
- # Override methods in the specific type of manager
- mm1 = InternalManager(module=module, params=module.params)
- mm1.exists = Mock(side_effect=[False, True])
- mm1.create_on_device = Mock(return_value=True)
-
- # Override methods to force specific logic in the module to happen
- mm0 = ModuleManager(module=module)
- mm0.get_manager = Mock(return_value=mm1)
-
- results = mm0.exec_module()
-
- assert results['changed'] is True
-
- def test_create_internal_datagroup_type_address_list(self, *args):
- set_module_args(dict(
- name='foo',
- delete_data_group_file=False,
- internal=True,
- type='address',
- records=[
- dict(
- key='10.0.0.0/8',
- value='Network1'
- ),
- dict(
- key='172.16.0.0/12',
- value='Network2'
- ),
- dict(
- key='192.168.20.1/16',
- value='Network3'
- ),
- dict(
- key='192.168.20.1',
- value='Host1'
- ),
- dict(
- key='172.16.1.1',
- value='Host2'
- )
- ],
- separator=':=',
- state='present',
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive,
- )
-
- # Override methods in the specific type of manager
- mm1 = InternalManager(module=module, params=module.params)
- mm1.exists = Mock(side_effect=[False, True])
- mm1.create_on_device = Mock(return_value=True)
-
- # Override methods to force specific logic in the module to happen
- mm0 = ModuleManager(module=module)
- mm0.get_manager = Mock(return_value=mm1)
-
- results = mm0.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_device_auth.py b/test/units/modules/network/f5/test_bigip_device_auth.py
deleted file mode 100644
index cddce38637..0000000000
--- a/test/units/modules/network/f5/test_bigip_device_auth.py
+++ /dev/null
@@ -1,131 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2018, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_device_auth import TacacsApiParameters
- from library.modules.bigip_device_auth import TacacsModuleParameters
- from library.modules.bigip_device_auth import TacacsManager
- from library.modules.bigip_device_auth import ModuleManager
- from library.modules.bigip_device_auth import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_device_auth import TacacsApiParameters
- from ansible.modules.network.f5.bigip_device_auth import TacacsModuleParameters
- from ansible.modules.network.f5.bigip_device_auth import TacacsManager
- from ansible.modules.network.f5.bigip_device_auth import ModuleManager
- from ansible.modules.network.f5.bigip_device_auth import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- type="tacacs",
- authentication="use-all-servers",
- protocol_name="ip",
- secret="$XXXXXXXXXXXXXXXXXXXX==",
- servers=['10.10.10.10', '10.10.10.11'],
- service_name="ppp",
- use_for_auth=True,
- update_secret="on_create",
- )
- p = TacacsModuleParameters(params=args)
- assert p.type == 'tacacs'
- assert p.authentication == 'use-all-servers'
-
- def test_api_parameters(self):
- args = load_fixture('load_tm_auth_tacacs_1.json')
- p = TacacsApiParameters(params=args)
- assert p.authentication == 'use-first-server'
- assert p.protocol_name == 'ftp'
- assert p.secret == 'secret'
- assert p.servers == ['11.11.11.11']
- assert p.service_name == 'ppp'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create(self, *args):
- set_module_args(dict(
- type="tacacs",
- authentication="use-all-servers",
- protocol_name="ip",
- secret="secret",
- servers=['10.10.10.10', '10.10.10.11'],
- service_name="ppp",
- use_for_auth=True,
- update_secret="on_create",
- state='present',
- provider=dict(
- password='admin',
- server='localhost',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods to force specific logic in the module to happen
- m1 = TacacsManager(module=module)
- m1.exists = Mock(return_value=False)
- m1.create_on_device = Mock(return_value=True)
- m1.update_auth_source_on_device = Mock(return_value=True)
-
- mm = ModuleManager(module=module)
- mm.get_manager = Mock(return_value=m1)
-
- results = mm.exec_module()
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_device_auth_ldap.py b/test/units/modules/network/f5/test_bigip_device_auth_ldap.py
deleted file mode 100644
index 014a2076fd..0000000000
--- a/test/units/modules/network/f5/test_bigip_device_auth_ldap.py
+++ /dev/null
@@ -1,131 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2018, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_device_auth_ldap import ApiParameters
- from library.modules.bigip_device_auth_ldap import ModuleManager
- from library.modules.bigip_device_auth_ldap import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_device_auth_ldap import ApiParameters
- from ansible.modules.network.f5.bigip_device_auth_ldap import ModuleManager
- from ansible.modules.network.f5.bigip_device_auth_ldap import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- servers=['10.10.10.10', '10.10.10.11'],
- port=389,
- remote_directory_tree='foo',
- scope='base',
- bind_dn='bar',
- bind_password='secret',
- user_template='alice',
- check_member_attr=False,
- ssl='no',
- ssl_ca_cert='default.crt',
- ssl_client_key='default.key',
- ssl_client_cert='default1.crt',
- ssl_check_peer=True,
- login_ldap_attr='bob',
- fallback_to_local=True,
- update_password='on_create',
- )
- p = ApiParameters(params=args)
- assert p.port == 389
- assert p.servers == ['10.10.10.10', '10.10.10.11']
- assert p.remote_directory_tree == 'foo'
- assert p.scope == 'base'
- assert p.bind_dn == 'bar'
- assert p.bind_password == 'secret'
- assert p.user_template == 'alice'
- assert p.check_member_attr == 'no'
- assert p.ssl == 'no'
- assert p.ssl_ca_cert == '/Common/default.crt'
- assert p.ssl_client_key == '/Common/default.key'
- assert p.ssl_client_cert == '/Common/default1.crt'
- assert p.ssl_check_peer == 'yes'
- assert p.login_ldap_attr == 'bob'
- assert p.fallback_to_local == 'yes'
- assert p.update_password == 'on_create'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create(self, *args):
- set_module_args(dict(
- servers=['10.10.10.10', '10.10.10.11'],
- update_password='on_create',
- state='present',
- provider=dict(
- password='admin',
- server='localhost',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=False)
- mm.create_on_device = Mock(return_value=True)
- mm.update_auth_source_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_device_certificate.py b/test/units/modules/network/f5/test_bigip_device_certificate.py
deleted file mode 100644
index cb8d87dafc..0000000000
--- a/test/units/modules/network/f5/test_bigip_device_certificate.py
+++ /dev/null
@@ -1,173 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2019, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_device_certificate import ModuleParameters
- from library.modules.bigip_device_certificate import ModuleManager
- from library.modules.bigip_device_certificate import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_device_certificate import ModuleParameters
- from ansible.modules.network.f5.bigip_device_certificate import ModuleManager
- from ansible.modules.network.f5.bigip_device_certificate import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- key_size=2048,
- cert_name='foo.crt',
- key_name='foo.key',
- days_valid=60,
- issuer=dict(
- country='US',
- state='WA',
- locality='Seattle',
- organization='F5',
- division='IT',
- common_name='foo.bar.local',
- email='admin@foo.bar.local'
- ),
- new_cert='yes'
- )
- p = ModuleParameters(params=args)
- assert p.key_size == 2048
- assert p.cert_name == 'foo.crt'
- assert p.key_name == 'foo.key'
- assert p.days_valid == 60
- assert 'CN=foo.bar.local' in p.issuer
-
-
-class TestManager(unittest.TestCase):
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_update_expired_cert(self, *args):
- set_module_args(dict(
- days_valid=60,
- provider=dict(
- server='localhost',
- password='password',
- user='admin',
- transport='cli',
- server_port=22
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- required_if=self.spec.required_if
- )
-
- mm = ModuleManager(module=module)
- mm.expired = Mock(return_value=True)
- mm.update_certificate = Mock(return_value=True)
- mm.restart_daemon = Mock(return_value=True)
- mm.copy_files_to_trusted = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['days_valid'] == 60
-
- def test_create_new_cert(self):
- set_module_args(dict(
- key_size=2048,
- cert_name='foo.crt',
- key_name='foo.key',
- days_valid=60,
- new_cert='yes',
- issuer=dict(
- country='US',
- state='WA',
- locality='Seattle',
- organization='F5',
- division='IT',
- common_name='foo.bar.local',
- email='admin@foo.bar.local'
- ),
- provider=dict(
- server='localhost',
- password='password',
- user='admin',
- transport='cli',
- server_port=22
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- required_if=self.spec.required_if
- )
-
- mm = ModuleManager(module=module)
- mm.expired = Mock(return_value=True)
- mm.generate_cert_key = Mock(return_value=True)
- mm.restart_daemon = Mock(return_value=True)
- mm.configure_new_cert = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['days_valid'] == 60
- assert results['cert_name'] == 'foo.crt'
- assert results['key_name'] == 'foo.key'
- assert results['issuer'] == dict(
- country='US',
- state='WA',
- locality='Seattle',
- organization='F5',
- division='IT',
- common_name='foo.bar.local',
- email='admin@foo.bar.local'
- )
diff --git a/test/units/modules/network/f5/test_bigip_device_connectivity.py b/test/units/modules/network/f5/test_bigip_device_connectivity.py
deleted file mode 100644
index 178f8615f0..0000000000
--- a/test/units/modules/network/f5/test_bigip_device_connectivity.py
+++ /dev/null
@@ -1,388 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_device_connectivity import ApiParameters
- from library.modules.bigip_device_connectivity import ModuleParameters
- from library.modules.bigip_device_connectivity import ModuleManager
- from library.modules.bigip_device_connectivity import ArgumentSpec
-
- from library.module_utils.network.f5.common import F5ModuleError
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_device_connectivity import ApiParameters
- from ansible.modules.network.f5.bigip_device_connectivity import ModuleParameters
- from ansible.modules.network.f5.bigip_device_connectivity import ModuleManager
- from ansible.modules.network.f5.bigip_device_connectivity import ArgumentSpec
-
- from ansible.module_utils.network.f5.common import F5ModuleError
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- multicast_port='1010',
- multicast_address='10.10.10.10',
- multicast_interface='eth0',
- failover_multicast=True,
- unicast_failover=[
- dict(
- address='20.20.20.20',
- port='1234'
- )
- ],
- mirror_primary_address='1.2.3.4',
- mirror_secondary_address='5.6.7.8',
- config_sync_ip='4.3.2.1',
- state='present',
- )
- p = ModuleParameters(params=args)
- assert p.multicast_port == 1010
- assert p.multicast_address == '10.10.10.10'
- assert p.multicast_interface == 'eth0'
- assert p.failover_multicast is True
- assert p.mirror_primary_address == '1.2.3.4'
- assert p.mirror_secondary_address == '5.6.7.8'
- assert p.config_sync_ip == '4.3.2.1'
- assert len(p.unicast_failover) == 1
- assert 'effectiveIp' in p.unicast_failover[0]
- assert 'effectivePort' in p.unicast_failover[0]
- assert 'port' in p.unicast_failover[0]
- assert 'ip' in p.unicast_failover[0]
- assert p.unicast_failover[0]['effectiveIp'] == '20.20.20.20'
- assert p.unicast_failover[0]['ip'] == '20.20.20.20'
- assert p.unicast_failover[0]['port'] == 1234
- assert p.unicast_failover[0]['effectivePort'] == 1234
-
- def test_api_parameters(self):
- params = load_fixture('load_tm_cm_device.json')
- p = ApiParameters(params=params)
- assert p.multicast_port == 62960
- assert p.multicast_address == '224.0.0.245'
- assert p.multicast_interface == 'eth0'
- assert p.mirror_primary_address == '10.2.2.2'
- assert p.mirror_secondary_address == '10.2.3.2'
- assert p.config_sync_ip == '10.2.2.2'
- assert len(p.unicast_failover) == 2
- assert 'effectiveIp' in p.unicast_failover[0]
- assert 'effectivePort' in p.unicast_failover[0]
- assert 'port' in p.unicast_failover[0]
- assert 'ip' in p.unicast_failover[0]
- assert p.unicast_failover[0]['effectiveIp'] == 'management-ip'
- assert p.unicast_failover[0]['ip'] == 'management-ip'
- assert p.unicast_failover[0]['port'] == 1026
- assert p.unicast_failover[0]['effectivePort'] == 1026
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_update_settings(self, *args):
- set_module_args(dict(
- config_sync_ip="10.1.30.1",
- mirror_primary_address="10.1.30.1",
- unicast_failover=[
- dict(
- address="10.1.30.1"
- )
- ],
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- # Configure the parameters that would be returned by querying the
- # remote device
- current = ApiParameters(params=load_fixture('load_tm_cm_device_default.json'))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- required_together=self.spec.required_together
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.update_on_device = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['config_sync_ip'] == '10.1.30.1'
- assert results['mirror_primary_address'] == '10.1.30.1'
- assert len(results.keys()) == 4
-
- def test_set_primary_mirror_address_none(self, *args):
- set_module_args(dict(
- mirror_primary_address="none",
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- # Configure the parameters that would be returned by querying the
- # remote device
- current = ApiParameters(params=load_fixture('load_tm_cm_device.json'))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- required_together=self.spec.required_together
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.update_on_device = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['mirror_primary_address'] == 'none'
- assert len(results.keys()) == 2
-
- def test_set_secondary_mirror_address_none(self, *args):
- set_module_args(dict(
- mirror_secondary_address="none",
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- # Configure the parameters that would be returned by querying the
- # remote device
- current = ApiParameters(params=load_fixture('load_tm_cm_device.json'))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- required_together=self.spec.required_together
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.update_on_device = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['mirror_secondary_address'] == 'none'
- assert len(results.keys()) == 2
-
- def test_set_multicast_address_none(self, *args):
- set_module_args(dict(
- multicast_address="none",
- multicast_port=62960,
- multicast_interface="eth0",
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- # Configure the parameters that would be returned by querying the
- # remote device
- current = ApiParameters(params=load_fixture('load_tm_cm_device.json'))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- required_together=self.spec.required_together
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.update_on_device = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['multicast_address'] == 'none'
- assert len(results.keys()) == 2
-
- def test_set_multicast_port_negative(self, *args):
- set_module_args(dict(
- multicast_port=-1,
- multicast_address="224.0.0.245",
- multicast_interface="eth0",
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- # Configure the parameters that would be returned by querying the
- # remote device
- current = ApiParameters(params=load_fixture('load_tm_cm_device.json'))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- required_together=self.spec.required_together
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.update_on_device = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
-
- with pytest.raises(F5ModuleError) as ex:
- mm.exec_module()
-
- assert 'must be between' in str(ex.value)
-
- def test_set_multicast_address(self, *args):
- set_module_args(dict(
- multicast_address="10.1.1.1",
- multicast_port=62960,
- multicast_interface="eth0",
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- # Configure the parameters that would be returned by querying the
- # remote device
- current = ApiParameters(params=load_fixture('load_tm_cm_device.json'))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- required_together=self.spec.required_together
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.update_on_device = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['multicast_address'] == '10.1.1.1'
- assert len(results.keys()) == 2
-
- def test_unset_unicast_failover(self, *args):
- set_module_args(dict(
- unicast_failover="none",
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- # Configure the parameters that would be returned by querying the
- # remote device
- current = ApiParameters(params=load_fixture('load_tm_cm_device.json'))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- required_together=self.spec.required_together
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.update_on_device = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['unicast_failover'] == 'none'
- assert len(results.keys()) == 2
-
- def test_unset_config_sync_ip(self, *args):
- set_module_args(dict(
- config_sync_ip="none",
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- # Configure the parameters that would be returned by querying the
- # remote device
- current = ApiParameters(params=load_fixture('load_tm_cm_device.json'))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- required_together=self.spec.required_together
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.update_on_device = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['config_sync_ip'] == 'none'
- assert len(results.keys()) == 2
diff --git a/test/units/modules/network/f5/test_bigip_device_dns.py b/test/units/modules/network/f5/test_bigip_device_dns.py
deleted file mode 100644
index d0d1f182dd..0000000000
--- a/test/units/modules/network/f5/test_bigip_device_dns.py
+++ /dev/null
@@ -1,126 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_device_dns import Parameters
- from library.modules.bigip_device_dns import ModuleManager
- from library.modules.bigip_device_dns import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_device_dns import Parameters
- from ansible.modules.network.f5.bigip_device_dns import ModuleManager
- from ansible.modules.network.f5.bigip_device_dns import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- cache='disable',
- ip_version=4,
- name_servers=['10.10.10.10', '11.11.11.11'],
- search=['14.14.14.14', '15.15.15.15'],
- )
- p = Parameters(params=args)
- assert p.cache == 'disable'
- assert p.name_servers == ['10.10.10.10', '11.11.11.11']
- assert p.search == ['14.14.14.14', '15.15.15.15']
-
- # BIG-IP considers "ipv4" to be an empty value
- assert p.ip_version == 4
-
- def test_ipv6_parameter(self):
- args = dict(
- ip_version=6
- )
- p = Parameters(params=args)
- assert p.ip_version == 6
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_update_settings(self, *args):
- set_module_args(dict(
- cache='disable',
- ip_version=4,
- name_servers=['10.10.10.10', '11.11.11.11'],
- search=['14.14.14.14', '15.15.15.15'],
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- # Configure the parameters that would be returned by querying the
- # remote device
- current = Parameters(
- dict(
- cache='enable'
- )
- )
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- required_one_of=self.spec.required_one_of
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.update_on_device = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_device_group.py b/test/units/modules/network/f5/test_bigip_device_group.py
deleted file mode 100644
index fbf4be059d..0000000000
--- a/test/units/modules/network/f5/test_bigip_device_group.py
+++ /dev/null
@@ -1,186 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_device_group import ApiParameters
- from library.modules.bigip_device_group import ModuleParameters
- from library.modules.bigip_device_group import ModuleManager
- from library.modules.bigip_device_group import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_device_group import ApiParameters
- from ansible.modules.network.f5.bigip_device_group import ModuleParameters
- from ansible.modules.network.f5.bigip_device_group import ModuleManager
- from ansible.modules.network.f5.bigip_device_group import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- save_on_auto_sync=True,
- full_sync=False,
- description="my description",
- type="sync-failover",
- auto_sync=True
- )
-
- p = ModuleParameters(params=args)
- assert p.save_on_auto_sync is True
- assert p.full_sync is False
- assert p.description == "my description"
- assert p.type == "sync-failover"
- assert p.auto_sync is True
-
- def test_api_parameters(self):
- args = dict(
- asmSync="disabled",
- autoSync="enabled",
- fullLoadOnSync="false",
- incrementalConfigSyncSizeMax=1024,
- networkFailover="disabled",
- saveOnAutoSync="false",
- type="sync-only"
- )
-
- p = ApiParameters(params=args)
- assert p.auto_sync is True
- assert p.full_sync is False
- assert p.max_incremental_sync_size == 1024
- assert p.save_on_auto_sync is False
- assert p.type == 'sync-only'
-
-
-class TestModuleManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create_default_device_group(self, *args):
- set_module_args(
- dict(
- name="foo-group",
- state="present",
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- )
- )
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.create_on_device = Mock(return_value=True)
- mm.exists = Mock(return_value=False)
-
- results = mm.exec_module()
- assert results['changed'] is True
-
- def test_update_device_group(self, *args):
- set_module_args(
- dict(
- full_sync=True,
- name="foo-group",
- state="present",
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- )
- )
-
- current = ApiParameters(params=load_fixture('load_tm_cm_device_group.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.update_on_device = Mock(return_value=True)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
- assert results['changed'] is True
-
- def test_delete_device_group(self, *args):
- set_module_args(
- dict(
- name="foo-group",
- state="absent",
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- )
- )
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(side_effect=[True, False])
- mm.remove_from_device = Mock(return_value=True)
- mm.remove_members_in_group_from_device = Mock(return_value=True)
-
- results = mm.exec_module()
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_device_group_member.py b/test/units/modules/network/f5/test_bigip_device_group_member.py
deleted file mode 100644
index 31e506b8c5..0000000000
--- a/test/units/modules/network/f5/test_bigip_device_group_member.py
+++ /dev/null
@@ -1,104 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_device_group_member import Parameters
- from library.modules.bigip_device_group_member import ModuleManager
- from library.modules.bigip_device_group_member import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_device_group_member import Parameters
- from ansible.modules.network.f5.bigip_device_group_member import ModuleManager
- from ansible.modules.network.f5.bigip_device_group_member import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='bigip1',
- device_group='dg1'
- )
-
- p = Parameters(params=args)
- assert p.name == 'bigip1'
- assert p.device_group == 'dg1'
-
-
-class TestManager(unittest.TestCase):
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create(self, *args):
- set_module_args(
- dict(
- name="bigip1",
- device_group="dg1",
- state="present",
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- )
- )
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.create_on_device = Mock(return_value=True)
- mm.exists = Mock(return_value=False)
-
- results = mm.exec_module()
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_device_ha_group.py b/test/units/modules/network/f5/test_bigip_device_ha_group.py
deleted file mode 100644
index 37b50d2d0a..0000000000
--- a/test/units/modules/network/f5/test_bigip_device_ha_group.py
+++ /dev/null
@@ -1,230 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2018, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_device_ha_group import ModuleParameters
- from library.modules.bigip_device_ha_group import ModuleManager
- from library.modules.bigip_device_ha_group import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
- from test.units.compat.mock import patch
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_device_ha_group import ModuleParameters
- from ansible.modules.network.f5.bigip_device_ha_group import ModuleManager
- from ansible.modules.network.f5.bigip_device_ha_group import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
- from units.compat.mock import patch
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters_v13(self):
- args = dict(
- name='foobar',
- description='baz',
- active_bonus=20,
- enable='yes',
- state='present',
- pools=[
- dict(
- pool_name='fakepool',
- attribute='percent-up-members',
- weight=30,
- minimum_threshold=2,
- partition='Common'
- )
- ],
- trunks=[
- dict(
- trunk_name='faketrunk',
- attribute='percent-up-members',
- weight=30,
- minimum_threshold=2
- )
- ]
- )
-
- try:
- self.p1 = patch('library.modules.bigip_device_ha_group.tmos_version')
- self.m1 = self.p1.start()
- self.m1.return_value = '13.1.0'
- except Exception:
- self.p1 = patch('ansible.modules.network.f5.bigip_device_ha_group.tmos_version')
- self.m1 = self.p1.start()
- self.m1.return_value = '13.1.0'
-
- p = ModuleParameters(params=args)
-
- assert p.name == 'foobar'
- assert p.state == 'present'
- assert p.active_bonus == 20
- assert p.enabled is True
- assert p.pools == [{'name': '/Common/fakepool', 'attribute': 'percent-up-members',
- 'weight': 30, 'minimumThreshold': 2}]
- assert p.trunks == [{'name': 'faketrunk', 'attribute': 'percent-up-members',
- 'weight': 30, 'minimumThreshold': 2}]
-
- self.p1.stop()
-
- def test_module_parameters_v12(self):
- args = dict(
- name='foobar',
- description='baz',
- active_bonus=20,
- enable='yes',
- state='present',
- pools=[
- dict(
- pool_name='fakepool',
- attribute='percent-up-members',
- weight=30,
- minimum_threshold=2,
- partition='Common'
- )
- ],
- trunks=[
- dict(
- trunk_name='faketrunk',
- attribute='percent-up-members',
- weight=20,
- minimum_threshold=1
- )
- ]
- )
-
- try:
- self.p1 = patch('library.modules.bigip_device_ha_group.tmos_version')
- self.m1 = self.p1.start()
- self.m1.return_value = '12.1.0'
- except Exception:
- self.p1 = patch('ansible.modules.network.f5.bigip_device_ha_group.tmos_version')
- self.m1 = self.p1.start()
- self.m1.return_value = '12.1.0'
-
- p = ModuleParameters(params=args)
-
- assert p.name == 'foobar'
- assert p.state == 'present'
- assert p.active_bonus == 20
- assert p.enabled is True
- assert p.pools == [{'name': '/Common/fakepool', 'attribute': 'percent-up-members',
- 'weight': 30, 'threshold': 2}]
- assert p.trunks == [{'name': 'faketrunk', 'attribute': 'percent-up-members',
- 'weight': 20, 'threshold': 1}]
-
- self.p1.stop()
-
-
-class TestManager(unittest.TestCase):
- def setUp(self):
- self.spec = ArgumentSpec()
-
- try:
- self.p1 = patch('library.modules.bigip_device_ha_group.tmos_version')
- self.m1 = self.p1.start()
- self.m1.return_value = '13.1.0'
- except Exception:
- self.p1 = patch('ansible.modules.network.f5.bigip_device_ha_group.tmos_version')
- self.m1 = self.p1.start()
- self.m1.return_value = '13.1.0'
-
- def tearDown(self):
- self.p1.stop()
-
- def test_create_ha_group(self, *args):
- set_module_args(dict(
- name='fake_group',
- state='present',
- description='baz',
- active_bonus=20,
- enable='yes',
- pools=[
- dict(
- pool_name='fakepool',
- attribute='percent-up-members',
- weight=30,
- minimum_threshold=2,
- partition='Common'
- )
- ],
- trunks=[
- dict(
- trunk_name='faketrunk',
- attribute='percent-up-members',
- weight=20,
- minimum_threshold=1
- )
- ],
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=False)
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['name'] == 'fake_group'
- assert results['description'] == 'baz'
- assert results['active_bonus'] == 20
- assert results['enable'] == 'yes'
- assert results['pools'] == [{'pool_name': '/Common/fakepool', 'attribute': 'percent-up-members',
- 'weight': 30, 'minimum_threshold': 2}]
- assert results['trunks'] == [{'trunk_name': 'faketrunk', 'attribute': 'percent-up-members',
- 'weight': 20, 'minimum_threshold': 1}]
diff --git a/test/units/modules/network/f5/test_bigip_device_httpd.py b/test/units/modules/network/f5/test_bigip_device_httpd.py
deleted file mode 100644
index e54d6ff2f9..0000000000
--- a/test/units/modules/network/f5/test_bigip_device_httpd.py
+++ /dev/null
@@ -1,303 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2017, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_device_httpd import Parameters
- from library.modules.bigip_device_httpd import ModuleManager
- from library.modules.bigip_device_httpd import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
- from test.units.compat.mock import patch
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_device_httpd import Parameters
- from ansible.modules.network.f5.bigip_device_httpd import ModuleManager
- from ansible.modules.network.f5.bigip_device_httpd import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
- from units.compat.mock import patch
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- auth_name='BIG-IP',
- auth_pam_idle_timeout=1200,
- auth_pam_validate_ip='on'
- )
-
- p = Parameters(params=args)
- assert p.auth_name == 'BIG-IP'
- assert p.auth_pam_idle_timeout == 1200
- assert p.auth_pam_validate_ip == 'on'
-
- def test_api_parameters(self):
- args = load_fixture('load_sys_httpd.json')
- p = Parameters(params=args)
- assert p.auth_name == 'BIG-IP'
- assert p.auth_pam_idle_timeout == 1200
-
-
-class TestModuleManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
- self.patcher1 = patch('time.sleep')
- self.patcher1.start()
-
- def tearDown(self):
- self.patcher1.stop()
-
- def test_update(self, *args):
- set_module_args(
- dict(
- auth_name='foo',
- auth_pam_idle_timeout='1000',
- auth_pam_validate_ip='off',
- auth_pam_dashboard_timeout='on',
- fast_cgi_timeout=200,
- hostname_lookup='on',
- log_level='error',
- max_clients='20',
- redirect_http_to_https='yes',
- ssl_port=8443,
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- )
- )
-
- current = Parameters(params=load_fixture('load_sys_httpd.json'))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.update_on_device = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
- assert results['changed'] is True
-
- def test_update_issue_00522(self, *args):
- set_module_args(
- dict(
- ssl_cipher_suite='ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- )
- )
-
- current = Parameters(params=load_fixture('load_sys_httpd.json'))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.update_on_device = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
- assert results['changed'] is True
- assert results['ssl_cipher_suite'] == 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384'
-
- def test_update_issue_00522_as_list(self, *args):
- set_module_args(
- dict(
- ssl_cipher_suite=[
- 'ECDHE-RSA-AES128-GCM-SHA256',
- 'ECDHE-RSA-AES256-GCM-SHA384'
- ],
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- )
- )
-
- current = Parameters(params=load_fixture('load_sys_httpd.json'))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.update_on_device = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
- assert results['changed'] is True
- assert results['ssl_cipher_suite'] == 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384'
-
- def test_update_issue_00522_default(self, *args):
- set_module_args(
- dict(
- ssl_cipher_suite='default',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- )
- )
-
- current = Parameters(params=load_fixture('load_sys_httpd_non_default.json'))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.update_on_device = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
- assert results['changed'] is True
- assert results['ssl_cipher_suite'] == 'default'
-
- def test_update_issue_00587(self, *args):
- set_module_args(
- dict(
- ssl_protocols='all -SSLv2',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- )
- )
-
- current = Parameters(params=load_fixture('load_sys_httpd.json'))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.update_on_device = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
- assert results['changed'] is True
- assert results['ssl_protocols'] == 'all -SSLv2'
-
- def test_update_issue_00587_as_list(self, *args):
- set_module_args(
- dict(
- ssl_protocols=[
- 'all',
- '-SSLv2'
- ],
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- )
- )
-
- current = Parameters(params=load_fixture('load_sys_httpd.json'))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.update_on_device = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
- assert results['changed'] is True
- assert results['ssl_protocols'] == 'all -SSLv2'
-
- def test_update_issue_00587_default(self, *args):
- set_module_args(
- dict(
- ssl_protocols='default',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- )
- )
-
- current = Parameters(params=load_fixture('load_sys_httpd_non_default.json'))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.update_on_device = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
- assert results['changed'] is True
- assert results['ssl_protocols'] == 'default'
diff --git a/test/units/modules/network/f5/test_bigip_device_info.py b/test/units/modules/network/f5/test_bigip_device_info.py
deleted file mode 100644
index 2291c02a2a..0000000000
--- a/test/units/modules/network/f5/test_bigip_device_info.py
+++ /dev/null
@@ -1,130 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-from ansible.module_utils.six import iteritems
-
-try:
- from library.modules.bigip_device_info import Parameters
- from library.modules.bigip_device_info import VirtualAddressesFactManager
- from library.modules.bigip_device_info import ArgumentSpec
- from library.modules.bigip_device_info import ModuleManager
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
- from test.units.compat.mock import patch
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_device_info import Parameters
- from ansible.modules.network.f5.bigip_device_info import VirtualAddressesFactManager
- from ansible.modules.network.f5.bigip_device_info import ArgumentSpec
- from ansible.modules.network.f5.bigip_device_info import ModuleManager
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
- from units.compat.mock import patch
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class FakeVirtualAddress:
- def __init__(self, *args, **kwargs):
- attrs = kwargs.pop('params', {})
- for key, value in iteritems(attrs):
- setattr(self, key, value)
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- gather_subset=['virtual-servers'],
- )
- p = Parameters(params=args)
- assert p.gather_subset == ['virtual-servers']
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- try:
- self.p1 = patch('library.modules.bigip_device_info.modules_provisioned')
- self.m1 = self.p1.start()
- self.m1.return_value = ['ltm', 'gtm', 'asm']
- except Exception:
- self.p1 = patch('ansible.modules.network.f5.bigip_device_info.modules_provisioned')
- self.m1 = self.p1.start()
- self.m1.return_value = ['ltm', 'gtm', 'asm']
-
- def tearDown(self):
- self.p1.stop()
-
- def test_get_trunk_facts(self, *args):
- set_module_args(dict(
- gather_subset=['virtual-addresses'],
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- fixture1 = load_fixture('load_ltm_virtual_address_collection_1.json')
- collection = fixture1['items']
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- tm = VirtualAddressesFactManager(module=module)
- tm.read_collection_from_device = Mock(return_value=collection)
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.get_manager = Mock(return_value=tm)
-
- results = mm.exec_module()
-
- assert results['queried'] is True
- assert 'virtual_addresses' in results
- assert len(results['virtual_addresses']) > 0
diff --git a/test/units/modules/network/f5/test_bigip_device_license.py b/test/units/modules/network/f5/test_bigip_device_license.py
deleted file mode 100644
index e3846862b3..0000000000
--- a/test/units/modules/network/f5/test_bigip_device_license.py
+++ /dev/null
@@ -1,120 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2017, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_device_license import ModuleParameters
- from library.modules.bigip_device_license import ModuleManager
- from library.modules.bigip_device_license import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
- from test.units.compat.mock import patch
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_device_license import ModuleParameters
- from ansible.modules.network.f5.bigip_device_license import ModuleManager
- from ansible.modules.network.f5.bigip_device_license import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
- from units.compat.mock import patch
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- license_key='xxxx-yyyy-zzzz',
- license_server='foo-license.f5.com',
- accept_eula=True
- )
-
- p = ModuleParameters(params=args)
- assert p.license_key == 'xxxx-yyyy-zzzz'
- assert p.license_server == 'foo-license.f5.com'
- assert p.accept_eula is True
-
-
-class TestModuleManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
- self.patcher1 = patch('time.sleep')
- self.patcher1.start()
-
- def tearDown(self):
- self.patcher1.stop()
-
- def test_create(self, *args):
- set_module_args(
- dict(
- license_key='xxxx-yyyy-zzzz',
- license_server='foo-license.f5.com',
- accept_eula=True,
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- )
- )
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- required_if=self.spec.required_if
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(side_effect=[False, True])
- mm.read_dossier_from_device = Mock(return_value=True)
- mm.generate_license_from_remote = Mock(return_value=True)
- mm.upload_license_to_device = Mock(return_value=True)
- mm.upload_eula_to_device = Mock(return_value=True)
- mm.reload_license = Mock(return_value=True)
- mm._is_mcpd_ready_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_device_ntp.py b/test/units/modules/network/f5/test_bigip_device_ntp.py
deleted file mode 100644
index 209af006c0..0000000000
--- a/test/units/modules/network/f5/test_bigip_device_ntp.py
+++ /dev/null
@@ -1,253 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_device_ntp import Parameters
- from library.modules.bigip_device_ntp import ModuleManager
- from library.modules.bigip_device_ntp import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_device_ntp import Parameters
- from ansible.modules.network.f5.bigip_device_ntp import ModuleManager
- from ansible.modules.network.f5.bigip_device_ntp import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- ntp = ['192.168.1.1', '192.168.1.2']
- args = dict(
- ntp_servers=ntp,
- timezone='Arctic/Longyearbyen'
- )
-
- p = Parameters(params=args)
- assert p.ntp_servers == ntp
- assert p.timezone == 'Arctic/Longyearbyen'
-
- def test_api_parameters(self):
- ntp = ['192.168.1.1', '192.168.1.2']
- args = dict(
- servers=ntp,
- timezone='Arctic/Longyearbyen'
- )
-
- p = Parameters(params=args)
- assert p.ntp_servers == ntp
- assert p.timezone == 'Arctic/Longyearbyen'
-
-
-class TestModuleManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_update_ntp_servers(self, *args):
- ntp = ['10.1.1.1', '10.1.1.2']
- set_module_args(
- dict(
- ntp_servers=ntp,
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- )
- )
-
- # Configure the parameters that would be returned by querying the
- # remote device
- current = Parameters(params=load_fixture('load_ntp.json'))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- required_one_of=self.spec.required_one_of
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.update_on_device = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
- assert results['changed'] is True
- assert results['ntp_servers'] == ntp
-
- def test_update_timezone(self, *args):
- set_module_args(
- dict(
- timezone='Arctic/Longyearbyen',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- )
- )
-
- # Configure the parameters that would be returned by querying the
- # remote device
- current = Parameters(params=load_fixture('load_ntp.json'))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- required_one_of=self.spec.required_one_of
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.update_on_device = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
- assert results['changed'] is True
- assert results['timezone'] == 'Arctic/Longyearbyen'
-
- def test_update_ntp_servers_and_timezone(self, *args):
- ntp = ['10.1.1.1', '10.1.1.2']
- set_module_args(
- dict(
- ntp_servers=ntp,
- timezone='Arctic/Longyearbyen',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- )
- )
-
- # Configure the parameters that would be returned by querying the
- # remote device
- current = Parameters(params=load_fixture('load_ntp.json'))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- required_one_of=self.spec.required_one_of
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.update_on_device = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
- assert results['changed'] is True
- assert results['ntp_servers'] == ntp
- assert results['timezone'] == 'Arctic/Longyearbyen'
-
- def test_absent_ntp_servers(self, *args):
- ntp = []
- set_module_args(
- dict(
- ntp_servers=ntp,
- timezone='America/Los_Angeles',
- state='absent',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- )
- )
-
- # Configure the parameters that would be returned by querying the
- # remote device
- current = Parameters(params=load_fixture('load_ntp.json'))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- required_one_of=self.spec.required_one_of
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.absent_on_device = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
- assert results['changed'] is True
- assert results['ntp_servers'] == ntp
- assert not hasattr(results, 'timezone')
-
- def test_absent_timezone(self, *args):
- set_module_args(
- dict(
- timezone='',
- state='absent',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- )
- )
-
- # Configure the parameters that would be returned by querying the
- # remote device
- current = Parameters(params=load_fixture('load_ntp.json'))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- required_one_of=self.spec.required_one_of
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.absent_on_device = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
- assert results['changed'] is False
diff --git a/test/units/modules/network/f5/test_bigip_device_sshd.py b/test/units/modules/network/f5/test_bigip_device_sshd.py
deleted file mode 100644
index 03ad4036ee..0000000000
--- a/test/units/modules/network/f5/test_bigip_device_sshd.py
+++ /dev/null
@@ -1,128 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_device_sshd import ApiParameters
- from library.modules.bigip_device_sshd import ModuleParameters
- from library.modules.bigip_device_sshd import ModuleManager
- from library.modules.bigip_device_sshd import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_device_sshd import ApiParameters
- from ansible.modules.network.f5.bigip_device_sshd import ModuleParameters
- from ansible.modules.network.f5.bigip_device_sshd import ModuleManager
- from ansible.modules.network.f5.bigip_device_sshd import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- allow=['all'],
- banner='enabled',
- banner_text='asdf',
- inactivity_timeout='100',
- log_level='debug',
- login='enabled',
- port=1010,
- )
- p = ModuleParameters(params=args)
- assert p.allow == ['all']
- assert p.banner == 'enabled'
- assert p.banner_text == 'asdf'
- assert p.inactivity_timeout == 100
- assert p.log_level == 'debug'
- assert p.login == 'enabled'
- assert p.port == 1010
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_update_settings(self, *args):
- set_module_args(dict(
- allow=['all'],
- banner='enabled',
- banner_text='asdf',
- inactivity_timeout='100',
- log_level='debug',
- login='enabled',
- port=1010,
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- # Configure the parameters that would be returned by querying the
- # remote device
- current = ApiParameters(
- params=dict(
- allow=['172.27.1.1']
- )
- )
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.update_on_device = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['allow'] == ['all']
diff --git a/test/units/modules/network/f5/test_bigip_device_syslog.py b/test/units/modules/network/f5/test_bigip_device_syslog.py
deleted file mode 100644
index cde3babbb9..0000000000
--- a/test/units/modules/network/f5/test_bigip_device_syslog.py
+++ /dev/null
@@ -1,111 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2018, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_device_syslog import ApiParameters
- from library.modules.bigip_device_syslog import ModuleParameters
- from library.modules.bigip_device_syslog import ModuleManager
- from library.modules.bigip_device_syslog import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_device_syslog import ApiParameters
- from ansible.modules.network.f5.bigip_device_syslog import ModuleParameters
- from ansible.modules.network.f5.bigip_device_syslog import ModuleManager
- from ansible.modules.network.f5.bigip_device_syslog import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- kern_from='err',
- kern_to='info',
- )
- p = ModuleParameters(params=args)
- assert p.kern_from == 'err'
- assert p.kern_to == 'info'
-
- def test_api_parameters(self):
- p = ApiParameters(params=load_fixture('load_sys_syslog_1.json'))
- assert p.kern_from == 'debug'
- assert p.kern_to == 'emerg'
-
-
-class TestUntypedManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_update(self, *args):
- set_module_args(dict(
- kern_from='emerg',
- kern_to='debug',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- current = ApiParameters(params=load_fixture('load_sys_syslog_1.json'))
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.update_on_device = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_device_traffic_group.py b/test/units/modules/network/f5/test_bigip_device_traffic_group.py
deleted file mode 100644
index 3454e1d770..0000000000
--- a/test/units/modules/network/f5/test_bigip_device_traffic_group.py
+++ /dev/null
@@ -1,167 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_device_traffic_group import ApiParameters
- from library.modules.bigip_device_traffic_group import ModuleParameters
- from library.modules.bigip_device_traffic_group import ModuleManager
- from library.modules.bigip_device_traffic_group import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_device_traffic_group import ApiParameters
- from ansible.modules.network.f5.bigip_device_traffic_group import ModuleParameters
- from ansible.modules.network.f5.bigip_device_traffic_group import ModuleManager
- from ansible.modules.network.f5.bigip_device_traffic_group import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters_1(self):
- args = dict(
- name='foo',
- mac_address=''
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.mac_address == 'none'
-
- def test_module_parameters_2(self):
- args = dict(
- mac_address='00:00:00:00:00:02'
- )
-
- p = ModuleParameters(params=args)
- assert p.mac_address == '00:00:00:00:00:02'
-
- def test_module_parameters_3(self):
- args = dict(
- name='foo',
- ha_order=['bigip1'],
- ha_group='',
- auto_failback='yes',
- auto_failback_time=40
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.ha_order == ['/Common/bigip1']
- assert p.ha_group == 'none'
- assert p.auto_failback == 'true'
- assert p.auto_failback_time == 40
-
- def test_api_parameters_1(self):
- args = load_fixture('load_tm_cm_traffic_group_1.json')
-
- p = ApiParameters(params=args)
- assert p.mac_address == 'none'
-
- def test_api_parameters_2(self):
- args = load_fixture('load_tm_cm_traffic_group_2.json')
-
- p = ApiParameters(params=args)
- assert p.mac_address == '00:00:00:00:00:02'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create(self, *args):
- set_module_args(dict(
- name='foo',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- mm = ModuleManager(module=module)
- mm.create_on_device = Mock(return_value=True)
- mm.exists = Mock(return_value=False)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
-
- def test_modify_ha_order(self, *args):
- set_module_args(dict(
- name='traffic-group-2',
- ha_order=['v12-2.ansible.local', 'v12-1.ansible.local'],
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- )
-
- current = ApiParameters(params=load_fixture('load_tg_ha_order.json'))
-
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['ha_order'] == ['/Common/v12-2.ansible.local', '/Common/v12-1.ansible.local']
diff --git a/test/units/modules/network/f5/test_bigip_device_trust.py b/test/units/modules/network/f5/test_bigip_device_trust.py
deleted file mode 100644
index 6c7f325b01..0000000000
--- a/test/units/modules/network/f5/test_bigip_device_trust.py
+++ /dev/null
@@ -1,183 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_device_trust import Parameters
- from library.modules.bigip_device_trust import ModuleManager
- from library.modules.bigip_device_trust import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_device_trust import Parameters
- from ansible.modules.network.f5.bigip_device_trust import ModuleManager
- from ansible.modules.network.f5.bigip_device_trust import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- peer_server='10.10.10.10',
- peer_hostname='foo.bar.baz',
- peer_user='admin',
- peer_password='secret'
- )
-
- p = Parameters(params=args)
- assert p.peer_server == '10.10.10.10'
- assert p.peer_hostname == 'foo.bar.baz'
- assert p.peer_user == 'admin'
- assert p.peer_password == 'secret'
-
- def test_module_parameters_with_peer_type(self):
- args = dict(
- peer_server='10.10.10.10',
- peer_hostname='foo.bar.baz',
- peer_user='admin',
- peer_password='secret',
- type='peer'
- )
-
- p = Parameters(params=args)
- assert p.peer_server == '10.10.10.10'
- assert p.peer_hostname == 'foo.bar.baz'
- assert p.peer_user == 'admin'
- assert p.peer_password == 'secret'
- assert p.type is True
-
- def test_module_parameters_with_subordinate_type(self):
- args = dict(
- peer_server='10.10.10.10',
- peer_hostname='foo.bar.baz',
- peer_user='admin',
- peer_password='secret',
- type='subordinate'
- )
-
- p = Parameters(params=args)
- assert p.peer_server == '10.10.10.10'
- assert p.peer_hostname == 'foo.bar.baz'
- assert p.peer_user == 'admin'
- assert p.peer_password == 'secret'
- assert p.type is False
-
- def test_hyphenated_peer_hostname(self):
- args = dict(
- peer_hostname='hn---hyphen____underscore.hmatsuda.local',
- )
-
- p = Parameters(params=args)
- assert p.peer_hostname == 'hn---hyphen____underscore.hmatsuda.local'
-
- def test_numbered_peer_hostname(self):
- args = dict(
- peer_hostname='BIG-IP_12x_ans2.example.local',
- )
-
- p = Parameters(params=args)
- assert p.peer_hostname == 'BIG-IP_12x_ans2.example.local'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create_device_trust(self, *args):
- set_module_args(dict(
- peer_server='10.10.10.10',
- peer_hostname='foo.bar.baz',
- peer_user='admin',
- peer_password='secret',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=False)
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
-
- def test_create_device_trust_idempotent(self, *args):
- set_module_args(dict(
- peer_server='10.10.10.10',
- peer_hostname='foo.bar.baz',
- peer_user='admin',
- peer_password='secret',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is False
diff --git a/test/units/modules/network/f5/test_bigip_dns_cache_resolver.py b/test/units/modules/network/f5/test_bigip_dns_cache_resolver.py
deleted file mode 100644
index 924e2c6a92..0000000000
--- a/test/units/modules/network/f5/test_bigip_dns_cache_resolver.py
+++ /dev/null
@@ -1,113 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2018, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_dns_cache_resolver import ApiParameters
- from library.modules.bigip_dns_cache_resolver import ModuleParameters
- from library.modules.bigip_dns_cache_resolver import ModuleManager
- from library.modules.bigip_dns_cache_resolver import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_dns_cache_resolver import ApiParameters
- from ansible.modules.network.f5.bigip_dns_cache_resolver import ModuleParameters
- from ansible.modules.network.f5.bigip_dns_cache_resolver import ModuleManager
- from ansible.modules.network.f5.bigip_dns_cache_resolver import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- answer_default_zones=True,
- route_domain=10,
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.route_domain == '/Common/10'
-
- def test_api_parameters(self):
- args = load_fixture('load_ltm_dns_cache_resolver_1.json')
-
- p = ApiParameters(params=args)
- assert p.name == 'foo'
- assert p.route_domain == '/Common/0'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create_monitor(self, *args):
- set_module_args(dict(
- name='foo',
- route_domain=20,
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_dns_nameserver.py b/test/units/modules/network/f5/test_bigip_dns_nameserver.py
deleted file mode 100644
index 5d7adeb2c2..0000000000
--- a/test/units/modules/network/f5/test_bigip_dns_nameserver.py
+++ /dev/null
@@ -1,126 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2018, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_dns_nameserver import ApiParameters
- from library.modules.bigip_dns_nameserver import ModuleParameters
- from library.modules.bigip_dns_nameserver import ModuleManager
- from library.modules.bigip_dns_nameserver import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_dns_nameserver import ApiParameters
- from ansible.modules.network.f5.bigip_dns_nameserver import ModuleParameters
- from ansible.modules.network.f5.bigip_dns_nameserver import ModuleManager
- from ansible.modules.network.f5.bigip_dns_nameserver import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- address='10.10.10.10',
- service_port=80,
- route_domain=20,
- tsig_key='key1',
- partition='Common'
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.address == '10.10.10.10'
- assert p.service_port == 80
- assert p.route_domain == '/Common/20'
- assert p.tsig_key == '/Common/key1'
-
- def test_api_parameters(self):
- args = load_fixture('load_ltm_dns_nameserver_1.json')
-
- p = ApiParameters(params=args)
- assert p.name == 'foo'
- assert p.address == '127.0.0.1'
- assert p.service_port == 53
- assert p.route_domain == '/Common/0'
- assert p.tsig_key == '/Common/key1'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create_monitor(self, *args):
- set_module_args(dict(
- name='foo',
- address='10.10.10.10',
- service_port=80,
- route_domain=20,
- tsig_key='key1',
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_dns_resolver.py b/test/units/modules/network/f5/test_bigip_dns_resolver.py
deleted file mode 100644
index 568f6432e8..0000000000
--- a/test/units/modules/network/f5/test_bigip_dns_resolver.py
+++ /dev/null
@@ -1,124 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2018, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_dns_resolver import ApiParameters
- from library.modules.bigip_dns_resolver import ModuleParameters
- from library.modules.bigip_dns_resolver import ModuleManager
- from library.modules.bigip_dns_resolver import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_dns_resolver import ApiParameters
- from ansible.modules.network.f5.bigip_dns_resolver import ModuleParameters
- from ansible.modules.network.f5.bigip_dns_resolver import ModuleManager
- from ansible.modules.network.f5.bigip_dns_resolver import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- route_domain=10,
- cache_size=1234,
- answer_default_zones=True,
- randomize_query_case=False,
- use_ipv4=True,
- use_ipv6=False,
- use_udp=True,
- use_tcp=False,
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.route_domain == '/Common/10'
- assert p.cache_size == 1234
- assert p.answer_default_zones == 'yes'
- assert p.randomize_query_case == 'no'
- assert p.use_ipv4 == 'yes'
- assert p.use_ipv6 == 'no'
- assert p.use_tcp == 'no'
- assert p.use_udp == 'yes'
-
- def test_api_parameters(self):
- args = load_fixture('load_net_dns_resolver_1.json')
- p = ApiParameters(params=args)
- assert p.name == 'foo'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create(self, *args):
- # Configure the arguments that would be sent to the Ansible module
- set_module_args(dict(
- name='foo',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(return_value=False)
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_dns_zone.py b/test/units/modules/network/f5/test_bigip_dns_zone.py
deleted file mode 100644
index 38d6193ee7..0000000000
--- a/test/units/modules/network/f5/test_bigip_dns_zone.py
+++ /dev/null
@@ -1,128 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2018, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_dns_zone import ApiParameters
- from library.modules.bigip_dns_zone import ModuleParameters
- from library.modules.bigip_dns_zone import ModuleManager
- from library.modules.bigip_dns_zone import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_dns_zone import ApiParameters
- from ansible.modules.network.f5.bigip_dns_zone import ModuleParameters
- from ansible.modules.network.f5.bigip_dns_zone import ModuleManager
- from ansible.modules.network.f5.bigip_dns_zone import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- dns_express=dict(
- server='server1',
- enabled=True,
- notify_action='consume',
- allow_notify_from=['1.1.1.1'],
- verify_tsig=True,
- response_policy=False
- ),
- nameservers=[
- 'foo', 'bar', 'baz'
- ],
- tsig_server_key='key1'
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert len(p.nameservers) == 3
- assert p.tsig_server_key == '/Common/key1'
- assert p.express_server == '/Common/server1'
- assert p.enabled == 'yes'
- assert p.notify_action == 'consume'
- assert len(p.allow_notify_from) == 1
- assert p.verify_tsig == 'yes'
- assert p.response_policy == 'no'
-
- def test_api_parameters(self):
- args = load_fixture('load_ltm_dns_zone_1.json')
- p = ApiParameters(params=args)
- assert p.name == 'foo'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create(self, *args):
- # Configure the arguments that would be sent to the Ansible module
- set_module_args(dict(
- name='foo',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(return_value=False)
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_file_copy.py b/test/units/modules/network/f5/test_bigip_file_copy.py
deleted file mode 100644
index c52886065e..0000000000
--- a/test/units/modules/network/f5/test_bigip_file_copy.py
+++ /dev/null
@@ -1,121 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2018, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_file_copy import ApiParameters
- from library.modules.bigip_file_copy import IFileManager
- from library.modules.bigip_file_copy import ModuleParameters
- from library.modules.bigip_file_copy import ModuleManager
- from library.modules.bigip_file_copy import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_file_copy import ApiParameters
- from ansible.modules.network.f5.bigip_file_copy import IFileManager
- from ansible.modules.network.f5.bigip_file_copy import ModuleParameters
- from ansible.modules.network.f5.bigip_file_copy import ModuleManager
- from ansible.modules.network.f5.bigip_file_copy import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- source='file.txt',
- force=True
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.source == 'file.txt'
- assert p.force is True
-
- def test_api_parameters(self):
- args = load_fixture('load_sys_file_external-monitor_1.json')
- p = ApiParameters(params=args)
- assert p.checksum == '0c78e6641632e47d11802b29cfd119d2233cb80a'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create(self, *args):
- # Configure the arguments that would be sent to the Ansible module
- set_module_args(dict(
- name='foo',
- source='file.txt',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- required_if=self.spec.required_if
- )
-
- tm = IFileManager(module=module)
- tm.exists = Mock(return_value=False)
- tm.create_on_device = Mock(return_value=True)
- tm.upload_to_device = Mock(return_value=True)
- tm.remove_uploaded_file_from_device = Mock(return_value=True)
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.get_manager = Mock(return_value=tm)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_firewall_address_list.py b/test/units/modules/network/f5/test_bigip_firewall_address_list.py
deleted file mode 100644
index 17457a240b..0000000000
--- a/test/units/modules/network/f5/test_bigip_firewall_address_list.py
+++ /dev/null
@@ -1,140 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2017, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_firewall_address_list import ApiParameters
- from library.modules.bigip_firewall_address_list import ModuleParameters
- from library.modules.bigip_firewall_address_list import ModuleManager
- from library.modules.bigip_firewall_address_list import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_firewall_address_list import ApiParameters
- from ansible.modules.network.f5.bigip_firewall_address_list import ModuleParameters
- from ansible.modules.network.f5.bigip_firewall_address_list import ModuleManager
- from ansible.modules.network.f5.bigip_firewall_address_list import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- description='this is a description',
- addresses=['1.1.1.1', '2.2.2.2'],
- address_ranges=['3.3.3.3-4.4.4.4', '5.5.5.5-6.6.6.6'],
- address_lists=['/Common/foo', 'foo']
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.description == 'this is a description'
- assert len(p.addresses) == 2
- assert len(p.address_ranges) == 2
- assert len(p.address_lists) == 2
-
- def test_api_parameters(self):
- args = load_fixture('load_security_address_list_1.json')
-
- p = ApiParameters(params=args)
- assert len(p.addresses) == 2
- assert len(p.address_ranges) == 2
- assert len(p.address_lists) == 1
- assert len(p.fqdns) == 1
- assert len(p.geo_locations) == 5
- assert sorted(p.addresses) == ['1.1.1.1', '2700:bc00:1f10:101::6']
- assert sorted(p.address_ranges) == ['2.2.2.2-3.3.3.3', '5.5.5.5-6.6.6.6']
- assert p.address_lists[0] == '/Common/foo'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create(self, *args):
- set_module_args(dict(
- name='foo',
- description='this is a description',
- addresses=['1.1.1.1', '2.2.2.2'],
- address_ranges=['3.3.3.3-4.4.4.4', '5.5.5.5-6.6.6.6'],
- address_lists=['/Common/foo', 'foo'],
- geo_locations=[
- dict(country='US', region='Los Angeles'),
- dict(country='China'),
- dict(country='EU')
- ],
- fqdns=['google.com', 'mit.edu'],
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(return_value=False)
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert 'addresses' in results
- assert 'address_lists' in results
- assert 'address_ranges' in results
- assert len(results['addresses']) == 2
- assert len(results['address_ranges']) == 2
- assert len(results['address_lists']) == 2
- assert results['description'] == 'this is a description'
diff --git a/test/units/modules/network/f5/test_bigip_firewall_dos_profile.py b/test/units/modules/network/f5/test_bigip_firewall_dos_profile.py
deleted file mode 100644
index 8f0bdd6914..0000000000
--- a/test/units/modules/network/f5/test_bigip_firewall_dos_profile.py
+++ /dev/null
@@ -1,110 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2018, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_firewall_dos_profile import ModuleParameters
- from library.modules.bigip_firewall_dos_profile import ModuleManager
- from library.modules.bigip_firewall_dos_profile import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_firewall_dos_profile import ModuleParameters
- from ansible.modules.network.f5.bigip_firewall_dos_profile import ModuleManager
- from ansible.modules.network.f5.bigip_firewall_dos_profile import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- description='my description',
- threshold_sensitivity='low',
- default_whitelist='whitelist1'
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.description == 'my description'
- assert p.threshold_sensitivity == 'low'
- assert p.default_whitelist == '/Common/whitelist1'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create(self, *args):
- set_module_args(dict(
- name='foo',
- description='this is a description',
- threshold_sensitivity='low',
- default_whitelist='whitelist1',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['description'] == 'this is a description'
diff --git a/test/units/modules/network/f5/test_bigip_firewall_dos_vector.py b/test/units/modules/network/f5/test_bigip_firewall_dos_vector.py
deleted file mode 100644
index dbcad842d6..0000000000
--- a/test/units/modules/network/f5/test_bigip_firewall_dos_vector.py
+++ /dev/null
@@ -1,110 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2018, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_firewall_dos_vector import ModuleParameters
- from library.modules.bigip_firewall_dos_vector import ModuleManager
- from library.modules.bigip_firewall_dos_vector import ArgumentSpec
- from library.modules.bigip_firewall_dos_vector import ProtocolDnsManager
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_firewall_dos_vector import ModuleParameters
- from ansible.modules.network.f5.bigip_firewall_dos_vector import ModuleManager
- from ansible.modules.network.f5.bigip_firewall_dos_vector import ArgumentSpec
- from ansible.modules.network.f5.bigip_firewall_dos_vector import ProtocolDnsManager
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- state='mitigate'
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.state == 'mitigate'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create_dns(self, *args):
- set_module_args(dict(
- name='aaaa',
- state='mitigate',
- profile='foo',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- m1 = ProtocolDnsManager(module=module)
- m1.read_current_from_device = Mock(return_value=[])
- m1.update_on_device = Mock(return_value=True)
-
- mm = ModuleManager(module=module)
- mm.get_manager = Mock(return_value=m1)
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_firewall_global_rules.py b/test/units/modules/network/f5/test_bigip_firewall_global_rules.py
deleted file mode 100644
index be3442a225..0000000000
--- a/test/units/modules/network/f5/test_bigip_firewall_global_rules.py
+++ /dev/null
@@ -1,115 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2018, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_firewall_global_rules import ApiParameters
- from library.modules.bigip_firewall_global_rules import ModuleParameters
- from library.modules.bigip_firewall_global_rules import ModuleManager
- from library.modules.bigip_firewall_global_rules import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_firewall_global_rules import ApiParameters
- from ansible.modules.network.f5.bigip_firewall_global_rules import ModuleParameters
- from ansible.modules.network.f5.bigip_firewall_global_rules import ModuleManager
- from ansible.modules.network.f5.bigip_firewall_global_rules import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- enforced_policy='enforced1',
- staged_policy='staged1',
- service_policy='service1',
- )
- p = ModuleParameters(params=args)
- assert p.enforced_policy == '/Common/enforced1'
- assert p.staged_policy == '/Common/staged1'
- assert p.service_policy == '/Common/service1'
-
- def test_api_parameters(self):
- p = ApiParameters(params=load_fixture('load_security_firewall_global_rules_1.json'))
- assert p.enforced_policy == '/Common/foo'
- assert p.service_policy == '/Common/bar'
- assert p.staged_policy == '/Common/baz'
-
-
-class TestUntypedManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_update(self, *args):
- set_module_args(dict(
- enforced_policy='enforced1',
- staged_policy='staged1',
- service_policy='service1',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- current = ApiParameters(params=load_fixture('load_security_firewall_global_rules_1.json'))
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.update_on_device = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_firewall_log_profile.py b/test/units/modules/network/f5/test_bigip_firewall_log_profile.py
deleted file mode 100644
index 2c4743140c..0000000000
--- a/test/units/modules/network/f5/test_bigip_firewall_log_profile.py
+++ /dev/null
@@ -1,146 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2019, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_firewall_log_profile import ApiParameters
- from library.modules.bigip_firewall_log_profile import ModuleParameters
- from library.modules.bigip_firewall_log_profile import ModuleManager
- from library.modules.bigip_firewall_log_profile import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_firewall_log_profile import ApiParameters
- from ansible.modules.network.f5.bigip_firewall_log_profile import ModuleParameters
- from ansible.modules.network.f5.bigip_firewall_log_profile import ModuleManager
- from ansible.modules.network.f5.bigip_firewall_log_profile import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- description='my description',
- partition='Common',
- ip_intelligence=dict(
- log_publisher='foobar',
- rate_limit='300000',
- log_translation_fields='yes',
- log_rtbh='yes',
- log_shun='yes',
- ),
- port_misuse=dict(
- log_publisher='/Part/bazbar',
- rate_limit='indefinite',
- ),
- dos_protection=dict(
- sip_publisher='sip-pub',
- dns_publisher='/Temp/dns-pub',
- network_publisher='net-pub'
- )
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.description == 'my description'
- assert p.ip_rate_limit == 300000
- assert p.ip_log_publisher == '/Common/foobar'
- assert p.ip_log_translation_fields == 'enabled'
- assert p.ip_log_shun is None
- assert p.ip_log_rtbh == 'enabled'
- assert p.port_log_publisher == '/Part/bazbar'
- assert p.port_rate_limit == 4294967295
- assert p.dns_publisher == '/Temp/dns-pub'
- assert p.sip_publisher == '/Common/sip-pub'
- assert p.network_publisher == '/Common/net-pub'
-
- def test_api_parameters(self):
- args = load_fixture('load_afm_log_global_network_profile.json')
-
- p = ApiParameters(params=args)
- assert p.name == 'global-network'
- assert p.description == 'Default logging profile for network events'
- assert p.ip_log_shun == 'disabled'
- assert p.ip_log_translation_fields == 'disabled'
- assert p.ip_rate_limit == 4294967295
- assert p.port_rate_limit == 4294967295
- assert p.ip_log_publisher is None
- assert p.port_log_publisher is None
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create(self, *args):
- set_module_args(dict(
- name='foo',
- description='this is a description',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['description'] == 'this is a description'
diff --git a/test/units/modules/network/f5/test_bigip_firewall_log_profile_network.py b/test/units/modules/network/f5/test_bigip_firewall_log_profile_network.py
deleted file mode 100644
index a17fc05fba..0000000000
--- a/test/units/modules/network/f5/test_bigip_firewall_log_profile_network.py
+++ /dev/null
@@ -1,171 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2019, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_firewall_log_profile_network import ApiParameters
- from library.modules.bigip_firewall_log_profile_network import ModuleParameters
- from library.modules.bigip_firewall_log_profile_network import ModuleManager
- from library.modules.bigip_firewall_log_profile_network import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_firewall_log_profile_network import ApiParameters
- from ansible.modules.network.f5.bigip_firewall_log_profile_network import ModuleParameters
- from ansible.modules.network.f5.bigip_firewall_log_profile_network import ModuleManager
- from ansible.modules.network.f5.bigip_firewall_log_profile_network import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- profile_name='foo',
- rate_limit=150000,
- log_publisher='/Common/foobar',
- log_tcp_errors=dict(
- enabled='yes',
- rate_limit=10000,
- ),
- log_tcp_events=dict(
- enabled='yes',
- rate_limit=30000,
- ),
- log_ip_errors=dict(
- enabled='yes',
- rate_limit=60000,
- ),
- log_matches_accept_rule=dict(
- enabled='yes',
- rate_limit=80000,
- ),
- log_matches_drop_rule=dict(
- enabled='no',
- rate_limit='indefinite',
- ),
- log_matches_reject_rule=dict(
- enabled='no',
- rate_limit='indefinite',
- ),
- log_format_delimiter='.',
- log_storage_format='field-list',
- log_message_fields=['vlan', 'translated_vlan', 'src_ip']
- )
-
- p = ModuleParameters(params=args)
- assert p.profile_name == 'foo'
- assert p.rate_limit == 150000
- assert p.log_publisher == '/Common/foobar'
- assert p.log_tcp_events == 'enabled'
- assert p.rate_tcp_events == 30000
- assert p.log_ip_errors == 'enabled'
- assert p.rate_ip_errors == 60000
- assert p.log_tcp_errors == 'enabled'
- assert p.rate_tcp_errors == 10000
- assert p.log_acl_match_accept == 'enabled'
- assert p.rate_acl_match_accept == 80000
- assert p.log_acl_match_drop == 'disabled'
- assert p.rate_acl_match_drop == 4294967295
- assert p.log_acl_match_reject == 'disabled'
- assert p.rate_acl_match_reject == 4294967295
- assert p.log_format_delimiter == '.'
- assert p.log_storage_format == 'field-list'
-
- def test_api_parameters(self):
- args = load_fixture('load_afm_global_network_log_network.json')
-
- p = ApiParameters(params=args)
- assert p.rate_limit == 4294967295
- assert p.log_tcp_events == 'disabled'
- assert p.rate_tcp_events == 4294967295
- assert p.log_ip_errors == 'disabled'
- assert p.rate_ip_errors == 4294967295
- assert p.log_tcp_errors == 'disabled'
- assert p.rate_tcp_errors == 4294967295
- assert p.log_acl_match_accept == 'disabled'
- assert p.rate_acl_match_accept == 4294967295
- assert p.log_acl_match_drop == 'disabled'
- assert p.rate_acl_match_drop == 4294967295
- assert p.log_acl_match_reject == 'disabled'
- assert p.rate_acl_match_reject == 4294967295
- assert p.log_format_delimiter == ','
- assert p.log_storage_format == 'none'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create(self, *args):
- set_module_args(dict(
- profile_name='foo',
- rate_limit=150000,
- log_publisher='/Common/foobar',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['rate_limit'] == 150000
- assert results['log_publisher'] == '/Common/foobar'
diff --git a/test/units/modules/network/f5/test_bigip_firewall_policy.py b/test/units/modules/network/f5/test_bigip_firewall_policy.py
deleted file mode 100644
index a5742bc81f..0000000000
--- a/test/units/modules/network/f5/test_bigip_firewall_policy.py
+++ /dev/null
@@ -1,119 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2017, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_firewall_policy import ApiParameters
- from library.modules.bigip_firewall_policy import ModuleParameters
- from library.modules.bigip_firewall_policy import ModuleManager
- from library.modules.bigip_firewall_policy import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_firewall_policy import ApiParameters
- from ansible.modules.network.f5.bigip_firewall_policy import ModuleParameters
- from ansible.modules.network.f5.bigip_firewall_policy import ModuleManager
- from ansible.modules.network.f5.bigip_firewall_policy import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- description='my description',
- rules=['rule1', 'rule2', 'rule3']
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.description == 'my description'
- assert p.rules == ['rule1', 'rule2', 'rule3']
-
- def test_api_parameters(self):
- args = load_fixture('load_security_firewall_policy_1.json')
-
- p = ApiParameters(params=args)
- assert p.name == 'foo'
- assert p.description == 'my description'
- assert p.rules == ['rule1', 'rule2', 'rule3']
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create(self, *args):
- set_module_args(dict(
- name='foo',
- description='this is a description',
- rules=['rule1', 'rule2', 'rule3'],
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert 'rules' in results
- assert len(results['rules']) == 3
- assert results['description'] == 'this is a description'
diff --git a/test/units/modules/network/f5/test_bigip_firewall_port_list.py b/test/units/modules/network/f5/test_bigip_firewall_port_list.py
deleted file mode 100644
index 17547815c5..0000000000
--- a/test/units/modules/network/f5/test_bigip_firewall_port_list.py
+++ /dev/null
@@ -1,147 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2017, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_firewall_port_list import ApiParameters
- from library.modules.bigip_firewall_port_list import ModuleParameters
- from library.modules.bigip_firewall_port_list import ModuleManager
- from library.modules.bigip_firewall_port_list import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
- from test.units.compat.mock import patch
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_firewall_port_list import ApiParameters
- from ansible.modules.network.f5.bigip_firewall_port_list import ModuleParameters
- from ansible.modules.network.f5.bigip_firewall_port_list import ModuleManager
- from ansible.modules.network.f5.bigip_firewall_port_list import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
- from units.compat.mock import patch
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- description='this is a description',
- ports=[1, 2, 3, 4],
- port_ranges=['10-20', '30-40', '50-60'],
- port_lists=['/Common/foo', 'foo']
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.description == 'this is a description'
- assert len(p.ports) == 4
- assert len(p.port_ranges) == 3
- assert len(p.port_lists) == 2
-
- def test_api_parameters(self):
- args = load_fixture('load_security_port_list_1.json')
-
- p = ApiParameters(params=args)
- assert len(p.ports) == 4
- assert len(p.port_ranges) == 3
- assert len(p.port_lists) == 1
- assert sorted(p.ports) == [1, 2, 3, 4]
- assert sorted(p.port_ranges) == ['10-20', '30-40', '50-60']
- assert p.port_lists[0] == '/Common/_sys_self_allow_tcp_defaults'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- try:
- self.p1 = patch('library.modules.bigip_firewall_port_list.module_provisioned')
- self.m1 = self.p1.start()
- self.m1.return_value = True
- except Exception:
- self.p1 = patch('ansible.modules.network.f5.bigip_firewall_port_list.module_provisioned')
- self.m1 = self.p1.start()
- self.m1.return_value = True
-
- def tearDown(self):
- self.p1.stop()
-
- def test_create(self, *args):
- set_module_args(dict(
- name='foo',
- description='this is a description',
- ports=[1, 2, 3, 4],
- port_ranges=['10-20', '30-40', '50-60'],
- port_lists=['/Common/foo', 'foo'],
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
- mm.module_provisioned = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert 'ports' in results
- assert 'port_lists' in results
- assert 'port_ranges' in results
- assert len(results['ports']) == 4
- assert len(results['port_ranges']) == 3
- assert len(results['port_lists']) == 2
- assert results['description'] == 'this is a description'
diff --git a/test/units/modules/network/f5/test_bigip_firewall_rule.py b/test/units/modules/network/f5/test_bigip_firewall_rule.py
deleted file mode 100644
index 39d45ab178..0000000000
--- a/test/units/modules/network/f5/test_bigip_firewall_rule.py
+++ /dev/null
@@ -1,156 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2018, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_firewall_rule import ModuleParameters
- from library.modules.bigip_firewall_rule import ModuleManager
- from library.modules.bigip_firewall_rule import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_firewall_rule import ModuleParameters
- from ansible.modules.network.f5.bigip_firewall_rule import ModuleManager
- from ansible.modules.network.f5.bigip_firewall_rule import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- parent_policy='policy1',
- protocol='tcp',
- source=[
- dict(address='1.2.3.4'),
- dict(address='::1'),
- dict(address_list='foo-list1'),
- dict(address_range='1.1.1.1-2.2.2.2.'),
- dict(vlan='vlan1'),
- dict(country='US'),
- dict(port='22'),
- dict(port_list='port-list1'),
- dict(port_range='80-443'),
- ],
- destination=[
- dict(address='1.2.3.4'),
- dict(address='::1'),
- dict(address_list='foo-list1'),
- dict(address_range='1.1.1.1-2.2.2.2.'),
- dict(country='US'),
- dict(port='22'),
- dict(port_list='port-list1'),
- dict(port_range='80-443'),
- ],
- irule='irule1',
- action='accept',
- logging=True,
- )
-
- p = ModuleParameters(params=args)
- assert p.irule == '/Common/irule1'
- assert p.action == 'accept'
- assert p.logging is True
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create_monitor(self, *args):
- set_module_args(dict(
- name='foo',
- parent_policy='policy1',
- protocol='tcp',
- source=[
- dict(address='1.2.3.4'),
- dict(address='::1'),
- dict(address_list='foo-list1'),
- dict(address_range='1.1.1.1-2.2.2.2.'),
- dict(vlan='vlan1'),
- dict(country='US'),
- dict(port='22'),
- dict(port_list='port-list1'),
- dict(port_range='80-443'),
- ],
- destination=[
- dict(address='1.2.3.4'),
- dict(address='::1'),
- dict(address_list='foo-list1'),
- dict(address_range='1.1.1.1-2.2.2.2.'),
- dict(country='US'),
- dict(port='22'),
- dict(port_list='port-list1'),
- dict(port_range='80-443'),
- ],
- irule='irule1',
- action='accept',
- logging='yes',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive,
- required_one_of=self.spec.required_one_of
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_firewall_rule_list.py b/test/units/modules/network/f5/test_bigip_firewall_rule_list.py
deleted file mode 100644
index 4c6b2d9a34..0000000000
--- a/test/units/modules/network/f5/test_bigip_firewall_rule_list.py
+++ /dev/null
@@ -1,109 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2017, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_firewall_rule_list import ModuleParameters
- from library.modules.bigip_firewall_rule_list import ModuleManager
- from library.modules.bigip_firewall_rule_list import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_firewall_rule_list import ModuleParameters
- from ansible.modules.network.f5.bigip_firewall_rule_list import ModuleManager
- from ansible.modules.network.f5.bigip_firewall_rule_list import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- description='my description',
- rules=['rule1', 'rule2', 'rule3']
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.description == 'my description'
- assert p.rules == ['rule1', 'rule2', 'rule3']
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create(self, *args):
- set_module_args(dict(
- name='foo',
- description='this is a description',
- rules=['rule1', 'rule2', 'rule3'],
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert 'rules' in results
- assert len(results['rules']) == 3
- assert results['description'] == 'this is a description'
diff --git a/test/units/modules/network/f5/test_bigip_firewall_schedule.py b/test/units/modules/network/f5/test_bigip_firewall_schedule.py
deleted file mode 100644
index 35ff7ab508..0000000000
--- a/test/units/modules/network/f5/test_bigip_firewall_schedule.py
+++ /dev/null
@@ -1,128 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2019, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_firewall_schedule import ApiParameters
- from library.modules.bigip_firewall_schedule import ModuleParameters
- from library.modules.bigip_firewall_schedule import ModuleManager
- from library.modules.bigip_firewall_schedule import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_firewall_schedule import ApiParameters
- from ansible.modules.network.f5.bigip_firewall_schedule import ModuleParameters
- from ansible.modules.network.f5.bigip_firewall_schedule import ModuleManager
- from ansible.modules.network.f5.bigip_firewall_schedule import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- description='my description',
- daily_hour_end='21:00',
- daily_hour_start='11:00',
- date_valid_end='2019-03-11:15:30:00',
- date_valid_start='2019-03-01:15:30:00',
- days_of_week='all',
- )
- p = ModuleParameters(params=args)
-
- assert p.name == 'foo'
- assert p.description == 'my description'
- assert p.daily_hour_end == '21:00'
- assert p.daily_hour_start == '11:00'
- assert p.date_valid_end == '2019-03-11T15:30:00Z'
- assert p.date_valid_start == '2019-03-01T15:30:00Z'
- assert 'monday' in p.days_of_week
-
- def test_api_parameters(self):
- args = load_fixture('load_afm_schedule.json')
-
- p = ApiParameters(params=args)
- assert p.name == 'foobar'
- assert p.description == 'some description'
- assert p.daily_hour_end == '12:00'
- assert p.daily_hour_start == '6:00'
- assert p.date_valid_end == '2019-06-13T16:00:00Z'
- assert p.date_valid_start == '2019-05-31T07:00:00Z'
- assert 'sunday' in p.days_of_week
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create(self, *args):
- set_module_args(dict(
- name='foo',
- description='this is a description',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['description'] == 'this is a description'
diff --git a/test/units/modules/network/f5/test_bigip_gtm_datacenter.py b/test/units/modules/network/f5/test_bigip_gtm_datacenter.py
deleted file mode 100644
index 5352c5ec15..0000000000
--- a/test/units/modules/network/f5/test_bigip_gtm_datacenter.py
+++ /dev/null
@@ -1,245 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_gtm_datacenter import ApiParameters
- from library.modules.bigip_gtm_datacenter import ModuleParameters
- from library.modules.bigip_gtm_datacenter import ModuleManager
- from library.modules.bigip_gtm_datacenter import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
- from test.units.compat.mock import patch
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_gtm_datacenter import ApiParameters
- from ansible.modules.network.f5.bigip_gtm_datacenter import ModuleParameters
- from ansible.modules.network.f5.bigip_gtm_datacenter import ModuleManager
- from ansible.modules.network.f5.bigip_gtm_datacenter import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
- from units.compat.mock import patch
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- state='present',
- contact='foo',
- description='bar',
- location='baz',
- name='datacenter'
- )
- p = ModuleParameters(params=args)
- assert p.state == 'present'
-
- def test_api_parameters(self):
- args = load_fixture('load_gtm_datacenter_default.json')
- p = ApiParameters(params=args)
- assert p.name == 'asd'
-
- def test_module_parameters_state_present(self):
- args = dict(
- state='present'
- )
- p = ModuleParameters(params=args)
- assert p.state == 'present'
- assert p.enabled is True
-
- def test_module_parameters_state_absent(self):
- args = dict(
- state='absent'
- )
- p = ModuleParameters(params=args)
- assert p.state == 'absent'
-
- def test_module_parameters_state_enabled(self):
- args = dict(
- state='enabled'
- )
- p = ModuleParameters(params=args)
- assert p.state == 'enabled'
- assert p.enabled is True
- assert p.disabled is None
-
- def test_module_parameters_state_disabled(self):
- args = dict(
- state='disabled'
- )
- p = ModuleParameters(params=args)
- assert p.state == 'disabled'
- assert p.enabled is None
- assert p.disabled is True
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- try:
- self.p1 = patch('library.modules.bigip_gtm_datacenter.module_provisioned')
- self.m1 = self.p1.start()
- self.m1.return_value = True
- except Exception:
- self.p1 = patch('ansible.modules.network.f5.bigip_gtm_datacenter.module_provisioned')
- self.m1 = self.p1.start()
- self.m1.return_value = True
-
- def tearDown(self):
- self.p1.stop()
-
- def test_create_datacenter(self, *args):
- set_module_args(dict(
- name='foo',
- state='present',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
- mm.module_provisioned = Mock(return_value=True)
-
- results = mm.exec_module()
- assert results['changed'] is True
- assert results['state'] == 'present'
-
- def test_create_disabled_datacenter(self, *args):
- set_module_args(dict(
- name='foo',
- state='disabled',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
-
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
- mm.module_provisioned = Mock(return_value=True)
-
- results = mm.exec_module()
- assert results['changed'] is True
- assert results['enabled'] is False
- assert results['disabled'] is True
-
- def test_create_enabled_datacenter(self, *args):
- set_module_args(dict(
- name='foo',
- state='enabled',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
-
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
- mm.module_provisioned = Mock(return_value=True)
-
- results = mm.exec_module()
- assert results['changed'] is True
- assert results['enabled'] is True
- assert results['disabled'] is False
-
- def test_idempotent_disable_datacenter(self, *args):
- set_module_args(dict(
- name='foo',
- state='disabled',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
-
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- current = ApiParameters(params=load_fixture('load_gtm_datacenter_disabled.json'))
-
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(return_value=True)
- mm.update_on_device = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.module_provisioned = Mock(return_value=True)
-
- results = mm.exec_module()
- assert results['changed'] is False
diff --git a/test/units/modules/network/f5/test_bigip_gtm_global.py b/test/units/modules/network/f5/test_bigip_gtm_global.py
deleted file mode 100644
index e80347e364..0000000000
--- a/test/units/modules/network/f5/test_bigip_gtm_global.py
+++ /dev/null
@@ -1,120 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2017, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_gtm_global import ApiParameters
- from library.modules.bigip_gtm_global import ModuleParameters
- from library.modules.bigip_gtm_global import ModuleManager
- from library.modules.bigip_gtm_global import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_gtm_global import ApiParameters
- from ansible.modules.network.f5.bigip_gtm_global import ModuleParameters
- from ansible.modules.network.f5.bigip_gtm_global import ModuleManager
- from ansible.modules.network.f5.bigip_gtm_global import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- synchronization=True,
- synchronization_group_name='foo',
- synchronize_zone_files=True
- )
-
- p = ModuleParameters(params=args)
- assert p.synchronization is True
- assert p.synchronization_group_name == 'foo'
- assert p.synchronize_zone_files is True
-
- def test_api_parameters(self):
- args = load_fixture('load_gtm_global_settings_general_1.json')
-
- p = ApiParameters(params=args)
- assert p.synchronization is False
- assert p.synchronization_group_name == 'default'
- assert p.synchronize_zone_files is False
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def update(self, *args):
- set_module_args(dict(
- synchronization="yes",
- synchronization_group_name='foo',
- synchronize_zone_files="yes",
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = ApiParameters(params=load_fixture('load_gtm_global_settings_general_1.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.update_on_device = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['synchronization'] == 'yes'
- assert results['synchronization_group_name'] == 'foo'
- assert results['synchronize_zone_files'] == 'yes'
diff --git a/test/units/modules/network/f5/test_bigip_gtm_monitor_bigip.py b/test/units/modules/network/f5/test_bigip_gtm_monitor_bigip.py
deleted file mode 100644
index 08b5e838c7..0000000000
--- a/test/units/modules/network/f5/test_bigip_gtm_monitor_bigip.py
+++ /dev/null
@@ -1,179 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2017, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_gtm_monitor_bigip import ApiParameters
- from library.modules.bigip_gtm_monitor_bigip import ModuleParameters
- from library.modules.bigip_gtm_monitor_bigip import ModuleManager
- from library.modules.bigip_gtm_monitor_bigip import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
- from test.units.compat.mock import patch
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_gtm_monitor_bigip import ApiParameters
- from ansible.modules.network.f5.bigip_gtm_monitor_bigip import ModuleParameters
- from ansible.modules.network.f5.bigip_gtm_monitor_bigip import ModuleManager
- from ansible.modules.network.f5.bigip_gtm_monitor_bigip import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
- from units.compat.mock import patch
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- parent='parent',
- ip='10.10.10.10',
- port=80,
- interval=20,
- timeout=30,
- aggregate_dynamic_ratios='average-members',
- partition='Common'
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.parent == '/Common/parent'
- assert p.ip == '10.10.10.10'
- assert p.port == 80
- assert p.type == 'bigip'
- assert p.destination == '10.10.10.10:80'
- assert p.interval == 20
- assert p.timeout == 30
- assert p.aggregate_dynamic_ratios == 'average-members'
-
- def test_module_parameters_ints_as_strings(self):
- args = dict(
- name='foo',
- parent='parent',
- ip='10.10.10.10',
- port='80',
- interval='20',
- timeout='30',
- partition='Common'
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.parent == '/Common/parent'
- assert p.ip == '10.10.10.10'
- assert p.port == 80
- assert p.type == 'bigip'
- assert p.destination == '10.10.10.10:80'
- assert p.interval == 20
- assert p.timeout == 30
-
- def test_api_parameters(self):
- args = dict(
- name='foo',
- defaultsFrom='/Common/parent',
- destination='10.10.10.10:80',
- interval=20,
- timeout=30,
- ignoreDownResponse='disabled',
- aggregateDynamicRatios='none',
- )
-
- p = ApiParameters(params=args)
- assert p.name == 'foo'
- assert p.parent == '/Common/parent'
- assert p.ip == '10.10.10.10'
- assert p.port == 80
- assert p.type == 'bigip'
- assert p.destination == '10.10.10.10:80'
- assert p.interval == 20
- assert p.timeout == 30
- assert p.aggregate_dynamic_ratios == 'none'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- try:
- self.p1 = patch('library.modules.bigip_gtm_monitor_bigip.module_provisioned')
- self.m1 = self.p1.start()
- self.m1.return_value = True
- except Exception:
- self.p1 = patch('ansible.modules.network.f5.bigip_gtm_monitor_bigip.module_provisioned')
- self.m1 = self.p1.start()
- self.m1.return_value = True
-
- def tearDown(self):
- self.p1.stop()
-
- def test_create_monitor(self, *args):
- set_module_args(dict(
- name='foo',
- ip='10.10.10.10',
- port=80,
- interval=20,
- timeout=30,
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
- mm.module_provisioned = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_gtm_monitor_external.py b/test/units/modules/network/f5/test_bigip_gtm_monitor_external.py
deleted file mode 100644
index bc647057f6..0000000000
--- a/test/units/modules/network/f5/test_bigip_gtm_monitor_external.py
+++ /dev/null
@@ -1,135 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2017, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_gtm_monitor_external import ModuleParameters
- from library.modules.bigip_gtm_monitor_external import ModuleManager
- from library.modules.bigip_gtm_monitor_external import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
- from test.units.compat.mock import patch
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_gtm_monitor_external import ModuleParameters
- from ansible.modules.network.f5.bigip_gtm_monitor_external import ModuleManager
- from ansible.modules.network.f5.bigip_gtm_monitor_external import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
- from units.compat.mock import patch
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- parent='parent',
- ip='10.10.10.10',
- port=80,
- interval=20,
- timeout=30,
- partition='Common'
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.parent == '/Common/parent'
- assert p.ip == '10.10.10.10'
- assert p.type == 'external'
- assert p.port == 80
- assert p.destination == '10.10.10.10:80'
- assert p.interval == 20
- assert p.timeout == 30
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- try:
- self.p1 = patch('library.modules.bigip_gtm_monitor_external.module_provisioned')
- self.m1 = self.p1.start()
- self.m1.return_value = True
- except Exception:
- self.p1 = patch('ansible.modules.network.f5.bigip_gtm_monitor_external.module_provisioned')
- self.m1 = self.p1.start()
- self.m1.return_value = True
-
- def tearDown(self):
- self.p1.stop()
-
- def test_create_monitor(self, *args):
- set_module_args(dict(
- name='foo',
- parent='parent',
- ip='10.10.10.10',
- port=80,
- interval=20,
- timeout=30,
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
- mm.module_provisioned = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['parent'] == '/Common/parent'
diff --git a/test/units/modules/network/f5/test_bigip_gtm_monitor_firepass.py b/test/units/modules/network/f5/test_bigip_gtm_monitor_firepass.py
deleted file mode 100644
index b0cad64b5b..0000000000
--- a/test/units/modules/network/f5/test_bigip_gtm_monitor_firepass.py
+++ /dev/null
@@ -1,156 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2017, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_gtm_monitor_firepass import ApiParameters
- from library.modules.bigip_gtm_monitor_firepass import ModuleParameters
- from library.modules.bigip_gtm_monitor_firepass import ModuleManager
- from library.modules.bigip_gtm_monitor_firepass import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
- from test.units.compat.mock import patch
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_gtm_monitor_firepass import ApiParameters
- from ansible.modules.network.f5.bigip_gtm_monitor_firepass import ModuleParameters
- from ansible.modules.network.f5.bigip_gtm_monitor_firepass import ModuleManager
- from ansible.modules.network.f5.bigip_gtm_monitor_firepass import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
- from units.compat.mock import patch
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- parent='/Common/my-http',
- max_load_average='60',
- concurrency_limit='70',
- ip='1.1.1.1',
- port='80',
- interval='10',
- timeout='20',
- ignore_down_response=True,
- probe_timeout='30'
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.parent == '/Common/my-http'
- assert p.max_load_average == 60
- assert p.concurrency_limit == 70
- assert p.destination == '1.1.1.1:80'
- assert p.ip == '1.1.1.1'
- assert p.port == 80
- assert p.interval == 10
- assert p.timeout == 20
- assert p.ignore_down_response is True
- assert p.probe_timeout == 30
-
- def test_api_parameters(self):
- args = load_fixture('load_gtm_monitor_firepass_1.json')
-
- p = ApiParameters(params=args)
- assert p.name == 'foo'
- assert p.parent == '/Common/firepass_gtm'
- assert p.max_load_average == 12
- assert p.concurrency_limit == 95
- assert p.destination == '1.1.1.1:80'
- assert p.ip == '1.1.1.1'
- assert p.port == 80
- assert p.interval == 30
- assert p.timeout == 90
- assert p.ignore_down_response is True
- assert p.probe_timeout == 5
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- try:
- self.p1 = patch('library.modules.bigip_gtm_monitor_firepass.module_provisioned')
- self.m1 = self.p1.start()
- self.m1.return_value = True
- except Exception:
- self.p1 = patch('ansible.modules.network.f5.bigip_gtm_monitor_firepass.module_provisioned')
- self.m1 = self.p1.start()
- self.m1.return_value = True
-
- def tearDown(self):
- self.p1.stop()
-
- def test_create_monitor(self, *args):
- set_module_args(dict(
- name='foo',
- ip='10.10.10.10',
- port=80,
- interval=20,
- timeout=30,
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
- mm.module_provisioned = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_gtm_monitor_http.py b/test/units/modules/network/f5/test_bigip_gtm_monitor_http.py
deleted file mode 100644
index 5e66fa31e3..0000000000
--- a/test/units/modules/network/f5/test_bigip_gtm_monitor_http.py
+++ /dev/null
@@ -1,162 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2017, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_gtm_monitor_http import ApiParameters
- from library.modules.bigip_gtm_monitor_http import ModuleParameters
- from library.modules.bigip_gtm_monitor_http import ModuleManager
- from library.modules.bigip_gtm_monitor_http import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
- from test.units.compat.mock import patch
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_gtm_monitor_http import ApiParameters
- from ansible.modules.network.f5.bigip_gtm_monitor_http import ModuleParameters
- from ansible.modules.network.f5.bigip_gtm_monitor_http import ModuleManager
- from ansible.modules.network.f5.bigip_gtm_monitor_http import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
- from units.compat.mock import patch
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- parent='/Common/my-http',
- send='the send string',
- receive='the receive string',
- ip='1.1.1.1',
- port='80',
- interval='10',
- timeout='20',
- ignore_down_response=True,
- transparent=False,
- probe_timeout='30',
- reverse=True
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.parent == '/Common/my-http'
- assert p.send == 'the send string'
- assert p.receive == 'the receive string'
- assert p.destination == '1.1.1.1:80'
- assert p.ip == '1.1.1.1'
- assert p.port == 80
- assert p.interval == 10
- assert p.timeout == 20
- assert p.ignore_down_response is True
- assert p.transparent is False
- assert p.probe_timeout == 30
- assert p.reverse is True
-
- def test_api_parameters(self):
- args = load_fixture('load_gtm_monitor_http_1.json')
-
- p = ApiParameters(params=args)
- assert p.name == 'foo'
- assert p.parent == '/Common/http'
- assert p.send == 'GET /'
- assert p.receive == 'the receive string'
- assert p.destination == '3.3.3.3:8080'
- assert p.ip == '3.3.3.3'
- assert p.port == 8080
- assert p.interval == 30
- assert p.timeout == 120
- assert p.ignore_down_response is False
- assert p.transparent is True
- assert p.probe_timeout == 5
- assert p.reverse is True
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- try:
- self.p1 = patch('library.modules.bigip_gtm_monitor_http.module_provisioned')
- self.m1 = self.p1.start()
- self.m1.return_value = True
- except Exception:
- self.p1 = patch('ansible.modules.network.f5.bigip_gtm_monitor_http.module_provisioned')
- self.m1 = self.p1.start()
- self.m1.return_value = True
-
- def tearDown(self):
- self.p1.stop()
-
- def test_create_monitor(self, *args):
- set_module_args(dict(
- name='foo',
- ip='10.10.10.10',
- port=80,
- interval=20,
- timeout=30,
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
- mm.module_provisioned = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_gtm_monitor_https.py b/test/units/modules/network/f5/test_bigip_gtm_monitor_https.py
deleted file mode 100644
index 25d7afd48d..0000000000
--- a/test/units/modules/network/f5/test_bigip_gtm_monitor_https.py
+++ /dev/null
@@ -1,170 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2017, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_gtm_monitor_https import ApiParameters
- from library.modules.bigip_gtm_monitor_https import ModuleParameters
- from library.modules.bigip_gtm_monitor_https import ModuleManager
- from library.modules.bigip_gtm_monitor_https import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
- from test.units.compat.mock import patch
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_gtm_monitor_https import ApiParameters
- from ansible.modules.network.f5.bigip_gtm_monitor_https import ModuleParameters
- from ansible.modules.network.f5.bigip_gtm_monitor_https import ModuleManager
- from ansible.modules.network.f5.bigip_gtm_monitor_https import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
- from units.compat.mock import patch
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- parent='/Common/my-http',
- send='the send string',
- receive='the receive string',
- ip='1.1.1.1',
- port='80',
- interval='10',
- timeout='20',
- client_cert='default',
- client_key='default',
- target_username='user1',
- target_password='secret1',
- ignore_down_response=True,
- transparent=False,
- probe_timeout='30',
- reverse=True
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.parent == '/Common/my-http'
- assert p.send == 'the send string'
- assert p.receive == 'the receive string'
- assert p.destination == '1.1.1.1:80'
- assert p.ip == '1.1.1.1'
- assert p.port == 80
- assert p.interval == 10
- assert p.timeout == 20
- assert p.client_cert == '/Common/default.crt'
- assert p.client_key == '/Common/default.key'
- assert p.target_username == 'user1'
- assert p.target_password == 'secret1'
- assert p.ignore_down_response is True
- assert p.transparent is False
- assert p.probe_timeout == 30
- assert p.reverse is True
-
- def test_api_parameters(self):
- args = load_fixture('load_gtm_monitor_http_1.json')
-
- p = ApiParameters(params=args)
- assert p.name == 'foo'
- assert p.parent == '/Common/http'
- assert p.send == 'GET /'
- assert p.receive == 'the receive string'
- assert p.destination == '3.3.3.3:8080'
- assert p.ip == '3.3.3.3'
- assert p.port == 8080
- assert p.interval == 30
- assert p.timeout == 120
- assert p.ignore_down_response is False
- assert p.transparent is True
- assert p.probe_timeout == 5
- assert p.reverse is True
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- try:
- self.p1 = patch('library.modules.bigip_gtm_monitor_https.module_provisioned')
- self.m1 = self.p1.start()
- self.m1.return_value = True
- except Exception:
- self.p1 = patch('ansible.modules.network.f5.bigip_gtm_monitor_https.module_provisioned')
- self.m1 = self.p1.start()
- self.m1.return_value = True
-
- def tearDown(self):
- self.p1.stop()
-
- def test_create_monitor(self, *args):
- set_module_args(dict(
- name='foo',
- ip='10.10.10.10',
- port=80,
- interval=20,
- timeout=30,
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
- mm.module_provisioned = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_gtm_monitor_tcp.py b/test/units/modules/network/f5/test_bigip_gtm_monitor_tcp.py
deleted file mode 100644
index 89d6c43185..0000000000
--- a/test/units/modules/network/f5/test_bigip_gtm_monitor_tcp.py
+++ /dev/null
@@ -1,223 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2017, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_gtm_monitor_tcp import ApiParameters
- from library.modules.bigip_gtm_monitor_tcp import ModuleParameters
- from library.modules.bigip_gtm_monitor_tcp import ModuleManager
- from library.modules.bigip_gtm_monitor_tcp import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
- from test.units.compat.mock import patch
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_gtm_monitor_tcp import ApiParameters
- from ansible.modules.network.f5.bigip_gtm_monitor_tcp import ModuleParameters
- from ansible.modules.network.f5.bigip_gtm_monitor_tcp import ModuleManager
- from ansible.modules.network.f5.bigip_gtm_monitor_tcp import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
- from units.compat.mock import patch
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- parent='/Common/my-tcp',
- send='the send string',
- receive='the receive string',
- ip='1.1.1.1',
- port='80',
- interval='10',
- timeout='20',
- ignore_down_response=True,
- transparent=False,
- probe_timeout='30',
- reverse=True
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.parent == '/Common/my-tcp'
- assert p.send == 'the send string'
- assert p.receive == 'the receive string'
- assert p.destination == '1.1.1.1:80'
- assert p.ip == '1.1.1.1'
- assert p.port == 80
- assert p.interval == 10
- assert p.timeout == 20
- assert p.ignore_down_response is True
- assert p.transparent is False
- assert p.probe_timeout == 30
- assert p.reverse is True
-
- def test_api_parameters(self):
- args = load_fixture('load_gtm_monitor_tcp_1.json')
-
- p = ApiParameters(params=args)
- assert p.name == 'foo'
- assert p.parent == '/Common/tcp'
- assert p.send == 'the send string'
- assert p.receive == 'the receive string'
- assert p.destination == '1.1.1.1:80'
- assert p.ip == '1.1.1.1'
- assert p.port == 80
- assert p.interval == 30
- assert p.timeout == 120
- assert p.ignore_down_response is False
- assert p.transparent is True
- assert p.probe_timeout == 5
- assert p.reverse is True
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- try:
- self.p1 = patch('library.modules.bigip_gtm_monitor_tcp.module_provisioned')
- self.m1 = self.p1.start()
- self.m1.return_value = True
- except Exception:
- self.p1 = patch('ansible.modules.network.f5.bigip_gtm_monitor_tcp.module_provisioned')
- self.m1 = self.p1.start()
- self.m1.return_value = True
-
- def tearDown(self):
- self.p1.stop()
-
- def test_create_monitor(self, *args):
- set_module_args(dict(
- name='foo',
- ip='10.10.10.10',
- port=80,
- interval=20,
- timeout=30,
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
- mm.module_provisioned = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
-
- def test_change_ip(self, *args):
- set_module_args(dict(
- name='foo',
- ip='10.10.10.10',
- port=80,
- interval=20,
- timeout=30,
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = ApiParameters(params=load_fixture('load_gtm_monitor_tcp_1.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(side_effect=[True, True])
- mm.update_on_device = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.module_provisioned = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['ip'] == '10.10.10.10'
-
- def test_change_ignore_down_response(self, *args):
- set_module_args(dict(
- name='foo',
- ignore_down_response=True,
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = ApiParameters(params=load_fixture('load_gtm_monitor_tcp_1.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(side_effect=[True, True])
- mm.update_on_device = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.module_provisioned = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['ignore_down_response'] is True
diff --git a/test/units/modules/network/f5/test_bigip_gtm_monitor_tcp_half_open.py b/test/units/modules/network/f5/test_bigip_gtm_monitor_tcp_half_open.py
deleted file mode 100644
index b39b9f1b1e..0000000000
--- a/test/units/modules/network/f5/test_bigip_gtm_monitor_tcp_half_open.py
+++ /dev/null
@@ -1,193 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2017, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_gtm_monitor_tcp_half_open import ApiParameters
- from library.modules.bigip_gtm_monitor_tcp_half_open import ModuleParameters
- from library.modules.bigip_gtm_monitor_tcp_half_open import ModuleManager
- from library.modules.bigip_gtm_monitor_tcp_half_open import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
- from test.units.compat.mock import patch
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_gtm_monitor_tcp_half_open import ApiParameters
- from ansible.modules.network.f5.bigip_gtm_monitor_tcp_half_open import ModuleParameters
- from ansible.modules.network.f5.bigip_gtm_monitor_tcp_half_open import ModuleManager
- from ansible.modules.network.f5.bigip_gtm_monitor_tcp_half_open import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
- from units.compat.mock import patch
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- parent='parent',
- ip='10.10.10.10',
- port=80,
- interval=20,
- timeout=30,
- probe_interval=10,
- probe_timeout=20,
- probe_attempts=30,
- partition='Common'
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.parent == '/Common/parent'
- assert p.ip == '10.10.10.10'
- assert p.port == 80
- assert p.type == 'tcp_half_open'
- assert p.destination == '10.10.10.10:80'
- assert p.interval == 20
- assert p.timeout == 30
- assert p.probe_interval == 10
- assert p.probe_timeout == 20
- assert p.probe_attempts == 30
-
- def test_module_parameters_ints_as_strings(self):
- args = dict(
- name='foo',
- parent='parent',
- ip='10.10.10.10',
- port='80',
- interval='20',
- timeout='30',
- probe_interval='10',
- probe_timeout='20',
- probe_attempts='30',
- partition='Common'
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.parent == '/Common/parent'
- assert p.ip == '10.10.10.10'
- assert p.port == 80
- assert p.type == 'tcp_half_open'
- assert p.destination == '10.10.10.10:80'
- assert p.interval == 20
- assert p.timeout == 30
- assert p.probe_interval == 10
- assert p.probe_timeout == 20
- assert p.probe_attempts == 30
-
- def test_api_parameters(self):
- args = dict(
- name='foo',
- defaultsFrom='/Common/parent',
- destination='10.10.10.10:80',
- interval=20,
- timeout=30,
- probeInterval=10,
- probeTimeout=20,
- probeAttempts=30,
- ignoreDownResponse='disabled'
- )
-
- p = ApiParameters(params=args)
- assert p.name == 'foo'
- assert p.parent == '/Common/parent'
- assert p.ip == '10.10.10.10'
- assert p.port == 80
- assert p.type == 'tcp_half_open'
- assert p.destination == '10.10.10.10:80'
- assert p.interval == 20
- assert p.timeout == 30
- assert p.probe_interval == 10
- assert p.probe_timeout == 20
- assert p.probe_attempts == 30
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- try:
- self.p1 = patch('library.modules.bigip_gtm_monitor_tcp_half_open.module_provisioned')
- self.m1 = self.p1.start()
- self.m1.return_value = True
- except Exception:
- self.p1 = patch('ansible.modules.network.f5.bigip_gtm_monitor_tcp_half_open.module_provisioned')
- self.m1 = self.p1.start()
- self.m1.return_value = True
-
- def tearDown(self):
- self.p1.stop()
-
- def test_create_monitor(self, *args):
- set_module_args(dict(
- name='foo',
- ip='10.10.10.10',
- port=80,
- interval=20,
- timeout=30,
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
- mm.module_provisioned = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_gtm_pool.py b/test/units/modules/network/f5/test_bigip_gtm_pool.py
deleted file mode 100644
index 4f01b0ee9f..0000000000
--- a/test/units/modules/network/f5/test_bigip_gtm_pool.py
+++ /dev/null
@@ -1,385 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_gtm_pool import ApiParameters
- from library.modules.bigip_gtm_pool import ModuleParameters
- from library.modules.bigip_gtm_pool import ModuleManager
- from library.modules.bigip_gtm_pool import ArgumentSpec
- from library.modules.bigip_gtm_pool import UntypedManager
- from library.modules.bigip_gtm_pool import TypedManager
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
- from test.units.compat.mock import patch
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_gtm_pool import ApiParameters
- from ansible.modules.network.f5.bigip_gtm_pool import ModuleParameters
- from ansible.modules.network.f5.bigip_gtm_pool import ModuleManager
- from ansible.modules.network.f5.bigip_gtm_pool import ArgumentSpec
- from ansible.modules.network.f5.bigip_gtm_pool import UntypedManager
- from ansible.modules.network.f5.bigip_gtm_pool import TypedManager
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
- from units.compat.mock import patch
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- preferred_lb_method='topology',
- alternate_lb_method='ratio',
- fallback_lb_method='fewest-hops',
- fallback_ip='10.10.10.10',
- type='a'
- )
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.preferred_lb_method == 'topology'
- assert p.alternate_lb_method == 'ratio'
- assert p.fallback_lb_method == 'fewest-hops'
- assert p.fallback_ip == '10.10.10.10'
- assert p.type == 'a'
-
- def test_module_parameters_members(self):
- args = dict(
- partition='Common',
- members=[
- dict(
- server='foo',
- virtual_server='bar'
- )
- ]
- )
- p = ModuleParameters(params=args)
- assert len(p.members) == 1
- assert p.members[0] == '/Common/foo:bar'
-
- def test_api_parameters(self):
- args = dict(
- name='foo',
- loadBalancingMode='topology',
- alternateMode='ratio',
- fallbackMode='fewest-hops',
- fallbackIp='10.10.10.10'
- )
- p = ApiParameters(params=args)
- assert p.name == 'foo'
- assert p.preferred_lb_method == 'topology'
- assert p.alternate_lb_method == 'ratio'
- assert p.fallback_lb_method == 'fewest-hops'
- assert p.fallback_ip == '10.10.10.10'
-
- def test_api_parameters_members(self):
- args = load_fixture('load_gtm_pool_a_with_members_1.json')
- p = ApiParameters(params=args)
- assert len(p.members) == 3
- assert p.members[0] == '/Common/server1:vs1'
- assert p.members[1] == '/Common/server1:vs2'
- assert p.members[2] == '/Common/server1:vs3'
-
-
-class TestUntypedManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- try:
- self.p1 = patch('library.modules.bigip_gtm_pool.module_provisioned')
- self.m1 = self.p1.start()
- self.m1.return_value = True
- except Exception:
- self.p1 = patch('ansible.modules.network.f5.bigip_gtm_pool.module_provisioned')
- self.m1 = self.p1.start()
- self.m1.return_value = True
-
- def tearDown(self):
- self.p1.stop()
-
- def test_create_pool(self, *args):
- set_module_args(dict(
- name='foo',
- preferred_lb_method='round-robin',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- required_if=self.spec.required_if
- )
-
- # Override methods in the specific type of manager
- tm = UntypedManager(module=module)
- tm.exists = Mock(side_effect=[False, True])
- tm.create_on_device = Mock(return_value=True)
- tm.version_is_less_than_12 = Mock(return_value=True)
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.version_is_less_than_12 = Mock(return_value=True)
- mm.get_manager = Mock(return_value=tm)
- mm.gtm_provisioned = Mock(return_value=True)
- mm.module_provisioned = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['preferred_lb_method'] == 'round-robin'
-
- def test_update_pool(self, *args):
- set_module_args(dict(
- name='foo',
- preferred_lb_method='topology',
- alternate_lb_method='drop-packet',
- fallback_lb_method='cpu',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- required_if=self.spec.required_if
- )
-
- current = ApiParameters(params=load_fixture('load_gtm_pool_untyped_default.json'))
-
- # Override methods in the specific type of manager
- tm = UntypedManager(module=module)
- tm.exists = Mock(side_effect=[True, True])
- tm.update_on_device = Mock(return_value=True)
- tm.version_is_less_than_12 = Mock(return_value=True)
- tm.read_current_from_device = Mock(return_value=current)
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.version_is_less_than_12 = Mock(return_value=True)
- mm.get_manager = Mock(return_value=tm)
- mm.gtm_provisioned = Mock(return_value=True)
- mm.module_provisioned = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['preferred_lb_method'] == 'topology'
- assert results['alternate_lb_method'] == 'drop-packet'
- assert results['fallback_lb_method'] == 'cpu'
-
- def test_delete_pool(self, *args):
- set_module_args(dict(
- name='foo',
- state='absent',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- required_if=self.spec.required_if
- )
-
- # Override methods in the specific type of manager
- tm = UntypedManager(module=module)
- tm.exists = Mock(side_effect=[True, False])
- tm.version_is_less_than_12 = Mock(return_value=True)
- tm.remove_from_device = Mock(return_value=True)
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.version_is_less_than_12 = Mock(return_value=True)
- mm.get_manager = Mock(return_value=tm)
- mm.gtm_provisioned = Mock(return_value=True)
- mm.module_provisioned = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
-
-
-class TestTypedManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- try:
- self.p1 = patch('library.modules.bigip_gtm_pool.module_provisioned')
- self.m1 = self.p1.start()
- self.m1.return_value = True
- except Exception:
- self.p1 = patch('ansible.modules.network.f5.bigip_gtm_pool.module_provisioned')
- self.m1 = self.p1.start()
- self.m1.return_value = True
-
- def tearDown(self):
- self.p1.stop()
-
- def test_create_pool(self, *args):
- set_module_args(dict(
- name='foo',
- preferred_lb_method='round-robin',
- type='a',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- required_if=self.spec.required_if
- )
-
- # Override methods in the specific type of manager
- tm = TypedManager(module=module)
- tm.exists = Mock(side_effect=[False, True])
- tm.create_on_device = Mock(return_value=True)
- tm.version_is_less_than_12 = Mock(return_value=False)
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.version_is_less_than_12 = Mock(return_value=False)
- mm.get_manager = Mock(return_value=tm)
- mm.gtm_provisioned = Mock(return_value=True)
- mm.module_provisioned = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['preferred_lb_method'] == 'round-robin'
-
- def test_update_pool(self, *args):
- set_module_args(dict(
- name='foo',
- preferred_lb_method='topology',
- alternate_lb_method='drop-packet',
- fallback_lb_method='cpu',
- type='a',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- required_if=self.spec.required_if
- )
-
- current = ApiParameters(params=load_fixture('load_gtm_pool_a_default.json'))
-
- # Override methods in the specific type of manager
- tm = TypedManager(module=module)
- tm.exists = Mock(side_effect=[True, True])
- tm.update_on_device = Mock(return_value=True)
- tm.version_is_less_than_12 = Mock(return_value=False)
- tm.read_current_from_device = Mock(return_value=current)
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.version_is_less_than_12 = Mock(return_value=False)
- mm.get_manager = Mock(return_value=tm)
- mm.gtm_provisioned = Mock(return_value=True)
- mm.module_provisioned = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['preferred_lb_method'] == 'topology'
- assert results['alternate_lb_method'] == 'drop-packet'
- assert results['fallback_lb_method'] == 'cpu'
-
- def test_delete_pool(self, *args):
- set_module_args(dict(
- name='foo',
- type='a',
- state='absent',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- required_if=self.spec.required_if
- )
-
- # Override methods in the specific type of manager
- tm = TypedManager(module=module)
- tm.exists = Mock(side_effect=[True, False])
- tm.version_is_less_than_12 = Mock(return_value=False)
- tm.remove_from_device = Mock(return_value=True)
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.version_is_less_than_12 = Mock(return_value=False)
- mm.get_manager = Mock(return_value=tm)
- mm.gtm_provisioned = Mock(return_value=True)
- mm.module_provisioned = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_gtm_pool_member.py b/test/units/modules/network/f5/test_bigip_gtm_pool_member.py
deleted file mode 100644
index d0cc9819b9..0000000000
--- a/test/units/modules/network/f5/test_bigip_gtm_pool_member.py
+++ /dev/null
@@ -1,219 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2017, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_gtm_pool_member import ApiParameters
- from library.modules.bigip_gtm_pool_member import ModuleParameters
- from library.modules.bigip_gtm_pool_member import ModuleManager
- from library.modules.bigip_gtm_pool_member import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
- from test.units.compat.mock import patch
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_gtm_pool_member import ApiParameters
- from ansible.modules.network.f5.bigip_gtm_pool_member import ModuleParameters
- from ansible.modules.network.f5.bigip_gtm_pool_member import ModuleManager
- from ansible.modules.network.f5.bigip_gtm_pool_member import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
- from units.compat.mock import patch
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- pool='pool1',
- server_name='server1',
- virtual_server='vs1',
- type='a',
- state='enabled',
- limits=dict(
- bits_enabled=True,
- packets_enabled=True,
- connections_enabled=True,
- bits_limit=100,
- packets_limit=200,
- connections_limit=300
- ),
- description='foo description',
- ratio=10,
- monitor='tcp',
- member_order=2
- )
-
- p = ModuleParameters(params=args)
- assert p.pool == 'pool1'
- assert p.server_name == 'server1'
- assert p.virtual_server == 'vs1'
- assert p.type == 'a'
- assert p.state == 'enabled'
- assert p.bits_enabled == 'enabled'
- assert p.packets_enabled == 'enabled'
- assert p.connections_enabled == 'enabled'
- assert p.bits_limit == 100
- assert p.packets_limit == 200
- assert p.connections_limit == 300
-
- def test_api_parameters(self):
- args = load_fixture('load_gtm_pool_a_member_1.json')
-
- p = ApiParameters(params=args)
- assert p.ratio == 1
- assert p.monitor == 'default'
- assert p.member_order == 1
- assert p.packets_enabled == 'disabled'
- assert p.packets_limit == 0
- assert p.bits_enabled == 'disabled'
- assert p.bits_limit == 0
- assert p.connections_enabled == 'disabled'
- assert p.connections_limit == 0
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- try:
- self.p1 = patch('library.modules.bigip_gtm_pool_member.module_provisioned')
- self.m1 = self.p1.start()
- self.m1.return_value = True
- except Exception:
- self.p1 = patch('ansible.modules.network.f5.bigip_gtm_pool_member.module_provisioned')
- self.m1 = self.p1.start()
- self.m1.return_value = True
-
- def tearDown(self):
- self.p1.stop()
-
- def test_create_monitor(self, *args):
- set_module_args(dict(
- pool='pool1',
- server_name='server1',
- virtual_server='vs1',
- type='a',
- state='enabled',
- limits=dict(
- bits_enabled='yes',
- packets_enabled='yes',
- connections_enabled='yes',
- bits_limit=100,
- packets_limit=200,
- connections_limit=300
- ),
- description='foo description',
- ratio=10,
- monitor='tcp',
- member_order=2,
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive,
- required_one_of=self.spec.required_one_of,
- required_together=self.spec.required_together,
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
- mm.module_provisioned = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
-
- def test_create_aggregate_pool_members(self, *args):
- set_module_args(dict(
- pool='fake_pool',
- type='a',
- aggregate=[
- dict(
- server_name='my-name1',
- virtual_server='some-vs2',
- state='present',
- partition='Common',
-
- ),
- dict(
- server_name='my-name1',
- virtual_server='some-vs1',
- state='present',
- partition='Common'
- )
- ],
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive,
- required_one_of=self.spec.required_one_of,
- required_together=self.spec.required_together,
- )
-
- mm = ModuleManager(module=module)
- mm.create_on_device = Mock(return_value=True)
- mm.exists = Mock(return_value=False)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_gtm_server.py b/test/units/modules/network/f5/test_bigip_gtm_server.py
deleted file mode 100644
index d9dee9c03b..0000000000
--- a/test/units/modules/network/f5/test_bigip_gtm_server.py
+++ /dev/null
@@ -1,341 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_gtm_server import ApiParameters
- from library.modules.bigip_gtm_server import ModuleParameters
- from library.modules.bigip_gtm_server import ModuleManager
- from library.modules.bigip_gtm_server import V1Manager
- from library.modules.bigip_gtm_server import V2Manager
- from library.modules.bigip_gtm_server import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
- from test.units.compat.mock import patch
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_gtm_server import ApiParameters
- from ansible.modules.network.f5.bigip_gtm_server import ModuleParameters
- from ansible.modules.network.f5.bigip_gtm_server import ModuleManager
- from ansible.modules.network.f5.bigip_gtm_server import V1Manager
- from ansible.modules.network.f5.bigip_gtm_server import V2Manager
- from ansible.modules.network.f5.bigip_gtm_server import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
- from units.compat.mock import patch
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='GTM_Server',
- datacenter='New York',
- partition='Common',
- server_type='bigip',
- link_discovery='disabled',
- virtual_server_discovery='disabled',
- devices=[
- dict(
- name='server_1',
- address='1.1.1.1'
- ),
- dict(
- name='server_2',
- address='2.2.2.1',
- translation='192.168.2.1'
- ),
- dict(
- name='server_2',
- address='2.2.2.2'
- ),
- dict(
- name='server_3',
- addresses=[
- dict(
- address='3.3.3.1'
- ),
- dict(
- address='3.3.3.2'
- )
- ]
- ),
- dict(
- name='server_4',
- addresses=[
- dict(
- address='4.4.4.1',
- translation='192.168.14.1'
- ),
- dict(
- address='4.4.4.2'
- )
- ]
- )
- ]
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'GTM_Server'
- assert p.datacenter == '/Common/New York'
- assert p.server_type == 'bigip'
- assert p.link_discovery == 'disabled'
- assert p.virtual_server_discovery == 'disabled'
-
- def test_api_parameters(self):
- args = load_fixture('load_gtm_server_1.json')
-
- p = ApiParameters(params=args)
- assert p.name == 'baz'
- assert p.datacenter == '/Common/foo'
- assert p.server_type == 'bigip'
- assert p.link_discovery == 'disabled'
- assert p.virtual_server_discovery == 'disabled'
-
-
-class TestV1Manager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- try:
- self.p1 = patch('library.modules.bigip_gtm_server.module_provisioned')
- self.m1 = self.p1.start()
- self.m1.return_value = True
- except Exception:
- self.p1 = patch('ansible.modules.network.f5.bigip_gtm_server.module_provisioned')
- self.m1 = self.p1.start()
- self.m1.return_value = True
-
- try:
- self.p2 = patch('library.modules.bigip_gtm_server.tmos_version')
- self.m2 = self.p2.start()
- self.m2.return_value = '13.0.0'
- except Exception:
- self.p2 = patch('ansible.modules.network.f5.bigip_gtm_server.tmos_version')
- self.m2 = self.p2.start()
- self.m2.return_value = '13.0.0'
-
- def tearDown(self):
- self.p1.stop()
- self.p2.stop()
-
- def test_create(self, *args):
- set_module_args(dict(
- name='GTM_Server',
- datacenter='/Common/New York',
- server_type='bigip',
- link_discovery='disabled',
- virtual_server_discovery='disabled',
- devices=[
- dict(
- name='server_1',
- address='1.1.1.1'
- ),
- dict(
- name='server_2',
- address='2.2.2.1',
- translation='192.168.2.1'
- ),
- dict(
- name='server_2',
- address='2.2.2.2'
- ),
- dict(
- name='server_3',
- addresses=[
- dict(
- address='3.3.3.1'
- ),
- dict(
- address='3.3.3.2'
- )
- ]
- ),
- dict(
- name='server_4',
- addresses=[
- dict(
- address='4.4.4.1',
- translation='192.168.14.1'
- ),
- dict(
- address='4.4.4.2'
- )
- ]
- )
- ],
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- m1 = V1Manager(module=module, params=module.params)
- m1.exists = Mock(side_effect=[False, True])
- m1.create_on_device = Mock(return_value=True)
- m1.client = Mock()
- m1.client.api.tmos_version = '12.0.0'
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.get_manager = Mock(return_value=m1)
- mm.version_is_less_than = Mock(return_value=True)
- mm.gtm_provisioned = Mock(return_value=True)
- mm.module_provisioned = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['server_type'] == 'bigip'
-
-
-class TestV2Manager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- try:
- self.p1 = patch('library.modules.bigip_gtm_server.module_provisioned')
- self.m1 = self.p1.start()
- self.m1.return_value = True
- except Exception:
- self.p1 = patch('ansible.modules.network.f5.bigip_gtm_server.module_provisioned')
- self.m1 = self.p1.start()
- self.m1.return_value = True
-
- try:
- self.p2 = patch('library.modules.bigip_gtm_server.tmos_version')
- self.m2 = self.p2.start()
- self.m2.return_value = '13.0.0'
- except Exception:
- self.p2 = patch('ansible.modules.network.f5.bigip_gtm_server.tmos_version')
- self.m2 = self.p2.start()
- self.m2.return_value = '13.0.0'
-
- def tearDown(self):
- self.p1.stop()
- self.p2.stop()
-
- def test_create(self, *args):
- set_module_args(dict(
- name='GTM_Server',
- datacenter='/Common/New York',
- server_type='bigip',
- link_discovery='disabled',
- virtual_server_discovery='disabled',
- devices=[
- dict(
- name='server_1',
- address='1.1.1.1'
- ),
- dict(
- name='server_2',
- address='2.2.2.1',
- translation='192.168.2.1'
- ),
- dict(
- name='server_2',
- address='2.2.2.2'
- ),
- dict(
- name='server_3',
- addresses=[
- dict(
- address='3.3.3.1'
- ),
- dict(
- address='3.3.3.2'
- )
- ]
- ),
- dict(
- name='server_4',
- addresses=[
- dict(
- address='4.4.4.1',
- translation='192.168.14.1'
- ),
- dict(
- address='4.4.4.2'
- )
- ]
- )
- ],
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- m1 = V2Manager(module=module)
- m1.exists = Mock(side_effect=[False, True])
- m1.create_on_device = Mock(return_value=True)
- m1.client = Mock()
- m1.client.api.tmos_version = '13.1.0'
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.get_manager = Mock(return_value=m1)
- mm.version_is_less_than = Mock(return_value=False)
- mm.gtm_provisioned = Mock(return_value=True)
- mm.module_provisioned = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['server_type'] == 'bigip'
diff --git a/test/units/modules/network/f5/test_bigip_gtm_topology_record.py b/test/units/modules/network/f5/test_bigip_gtm_topology_record.py
deleted file mode 100644
index 68f5199ca9..0000000000
--- a/test/units/modules/network/f5/test_bigip_gtm_topology_record.py
+++ /dev/null
@@ -1,132 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2018, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_gtm_topology_record import ApiParameters
- from library.modules.bigip_gtm_topology_record import ModuleParameters
- from library.modules.bigip_gtm_topology_record import ModuleManager
- from library.modules.bigip_gtm_topology_record import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_gtm_topology_record import ApiParameters
- from ansible.modules.network.f5.bigip_gtm_topology_record import ModuleParameters
- from ansible.modules.network.f5.bigip_gtm_topology_record import ModuleManager
- from ansible.modules.network.f5.bigip_gtm_topology_record import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- source=dict(
- subnet='192.168.1.0/24',
- negate=True
- ),
- destination=dict(
- region='Foobar',
- ),
- weight=10
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'ldns: not subnet 192.168.1.0/24 server: region /Common/Foobar'
- assert p.weight == 10
-
- def test_api_parameters(self):
- args = dict(
- source=dict(
- subnet='192.168.1.0/24',
- negate=True
- ),
- destination=dict(
- region='Foobar',
- ),
- score=10
- )
-
- p = ApiParameters(params=args)
- assert p.weight == 10
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create_topology_record(self, *args):
- set_module_args(dict(
- source=dict(
- subnet='192.168.1.0/24',
- negate=True
- ),
- destination=dict(
- region='Foobar',
- ),
- weight=10,
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_gtm_topology_region.py b/test/units/modules/network/f5/test_bigip_gtm_topology_region.py
deleted file mode 100644
index 629604db84..0000000000
--- a/test/units/modules/network/f5/test_bigip_gtm_topology_region.py
+++ /dev/null
@@ -1,144 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2018, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_gtm_topology_region import ApiParameters
- from library.modules.bigip_gtm_topology_region import ModuleParameters
- from library.modules.bigip_gtm_topology_region import ModuleManager
- from library.modules.bigip_gtm_topology_region import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_gtm_topology_region import ApiParameters
- from ansible.modules.network.f5.bigip_gtm_topology_region import ModuleParameters
- from ansible.modules.network.f5.bigip_gtm_topology_region import ModuleManager
- from ansible.modules.network.f5.bigip_gtm_topology_region import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foobar',
- region_members=[
- dict(
- country='Poland',
- negate=True
- ),
- dict(
- datacenter='bazcenter'
- )
- ],
- partition='Common'
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foobar'
- assert p.partition == 'Common'
- assert p.region_members == ['not country PL', 'datacenter /Common/bazcenter']
-
- def test_api_parameters(self):
- args = dict(
- name='foobar',
- region_members=[
- dict(
- name='not country PL'
- ),
- dict(
- name='datacenter /Common/bazcenter'
- )
- ],
- partition='Common'
- )
-
- p = ApiParameters(params=args)
- assert p.name == 'foobar'
- assert p.partition == 'Common'
- assert p.region_members == ['not country PL', 'datacenter /Common/bazcenter']
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create_topology_region(self, *args):
- set_module_args(dict(
- name='foobar',
- region_members=[
- dict(
- country='Poland',
- negate=True
- ),
- dict(
- datacenter='bazcenter'
- )
- ],
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- )
- )
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=False)
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_gtm_virtual_server.py b/test/units/modules/network/f5/test_bigip_gtm_virtual_server.py
deleted file mode 100644
index b911a1ad38..0000000000
--- a/test/units/modules/network/f5/test_bigip_gtm_virtual_server.py
+++ /dev/null
@@ -1,178 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2017, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_gtm_virtual_server import ApiParameters
- from library.modules.bigip_gtm_virtual_server import ModuleParameters
- from library.modules.bigip_gtm_virtual_server import ModuleManager
- from library.modules.bigip_gtm_virtual_server import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
- from test.units.compat.mock import patch
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_gtm_virtual_server import ApiParameters
- from ansible.modules.network.f5.bigip_gtm_virtual_server import ModuleParameters
- from ansible.modules.network.f5.bigip_gtm_virtual_server import ModuleManager
- from ansible.modules.network.f5.bigip_gtm_virtual_server import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
- from units.compat.mock import patch
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- server_name='server1',
- address='1.1.1.1',
- port=22,
- translation_address='2.2.2.2',
- translation_port=443,
- availability_requirements=dict(
- type='at_least',
- at_least=2,
- ),
- monitors=['http', 'tcp', 'gtp'],
- virtual_server_dependencies=[
- dict(
- server='server2',
- virtual_server='vs2'
- )
- ],
- link='link1',
- limits=dict(
- bits_enabled=True,
- packets_enabled=True,
- connections_enabled=True,
- bits_limit=100,
- packets_limit=200,
- connections_limit=300
- ),
- state='present'
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.server_name == 'server1'
- assert p.address == '1.1.1.1'
- assert p.port == 22
- assert p.translation_address == '2.2.2.2'
- assert p.translation_port == 443
- assert p.availability_requirement_type == 'at_least'
- assert p.at_least == 2
- assert p.monitors == 'min 2 of { /Common/http /Common/tcp /Common/gtp }'
- assert len(p.virtual_server_dependencies) == 1
- assert p.link == '/Common/link1'
- assert p.bits_enabled == 'enabled'
- assert p.bits_limit == 100
- assert p.packets_enabled == 'enabled'
- assert p.packets_limit == 200
- assert p.connections_enabled == 'enabled'
- assert p.connections_limit == 300
-
- def test_api_parameters(self):
- args = load_fixture('load_gtm_server_virtual_2.json')
-
- p = ApiParameters(params=args)
- assert p.name == 'vs2'
- assert p.address == '6.6.6.6'
- assert p.port == 8080
- assert p.translation_address == 'none'
- assert p.translation_port == 0
- assert p.availability_requirement_type == 'all'
- assert p.monitors == '/Common/gtp'
- assert p.bits_enabled == 'enabled'
- assert p.bits_limit == 100
- assert p.packets_enabled == 'enabled'
- assert p.packets_limit == 200
- assert p.connections_enabled == 'enabled'
- assert p.connections_limit == 300
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- try:
- self.p1 = patch('library.modules.bigip_gtm_virtual_server.module_provisioned')
- self.m1 = self.p1.start()
- self.m1.return_value = True
- except Exception:
- self.p1 = patch('ansible.modules.network.f5.bigip_gtm_virtual_server.module_provisioned')
- self.m1 = self.p1.start()
- self.m1.return_value = True
-
- def tearDown(self):
- self.p1.stop()
-
- def test_create_datacenter(self, *args):
- set_module_args(dict(
- server_name='foo',
- name='vs1',
- address='1.1.1.1',
- state='present',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_gtm_wide_ip.py b/test/units/modules/network/f5/test_bigip_gtm_wide_ip.py
deleted file mode 100644
index 020a46262d..0000000000
--- a/test/units/modules/network/f5/test_bigip_gtm_wide_ip.py
+++ /dev/null
@@ -1,351 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_gtm_wide_ip import ApiParameters
- from library.modules.bigip_gtm_wide_ip import ModuleParameters
- from library.modules.bigip_gtm_wide_ip import ModuleManager
- from library.modules.bigip_gtm_wide_ip import ArgumentSpec
- from library.modules.bigip_gtm_wide_ip import UntypedManager
- from library.modules.bigip_gtm_wide_ip import TypedManager
-
- from library.module_utils.network.f5.common import F5ModuleError
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
- from test.units.compat.mock import patch
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_gtm_wide_ip import ApiParameters
- from ansible.modules.network.f5.bigip_gtm_wide_ip import ModuleParameters
- from ansible.modules.network.f5.bigip_gtm_wide_ip import ModuleManager
- from ansible.modules.network.f5.bigip_gtm_wide_ip import ArgumentSpec
- from ansible.modules.network.f5.bigip_gtm_wide_ip import UntypedManager
- from ansible.modules.network.f5.bigip_gtm_wide_ip import TypedManager
-
- from ansible.module_utils.network.f5.common import F5ModuleError
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
- from units.compat.mock import patch
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo.baz.bar',
- pool_lb_method='round-robin',
- )
- p = ModuleParameters(params=args)
- assert p.name == 'foo.baz.bar'
- assert p.pool_lb_method == 'round-robin'
-
- def test_module_pools(self):
- args = dict(
- pools=[
- dict(
- name='foo',
- ratio='100'
- )
- ]
- )
- p = ModuleParameters(params=args)
- assert len(p.pools) == 1
-
- def test_api_parameters(self):
- args = dict(
- name='foo.baz.bar',
- poolLbMode='round-robin'
- )
- p = ApiParameters(params=args)
- assert p.name == 'foo.baz.bar'
- assert p.pool_lb_method == 'round-robin'
-
- def test_api_pools(self):
- args = load_fixture('load_gtm_wide_ip_with_pools.json')
- p = ApiParameters(params=args)
- assert len(p.pools) == 1
- assert 'name' in p.pools[0]
- assert 'ratio' in p.pools[0]
- assert p.pools[0]['name'] == '/Common/baz'
- assert p.pools[0]['ratio'] == 10
-
- def test_module_not_fqdn_name(self):
- args = dict(
- name='foo',
- lb_method='round-robin'
- )
- with pytest.raises(F5ModuleError) as excinfo:
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert 'The provided name must be a valid FQDN' in str(excinfo.value)
-
-
-class TestUntypedManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
- try:
- self.p1 = patch('library.modules.bigip_gtm_wide_ip.module_provisioned')
- self.m1 = self.p1.start()
- self.m1.return_value = True
- except Exception:
- self.p1 = patch('ansible.modules.network.f5.bigip_gtm_wide_ip.module_provisioned')
- self.m1 = self.p1.start()
- self.m1.return_value = True
-
- def tearDown(self):
- self.p1.stop()
-
- def test_create_wideip(self, *args):
- set_module_args(dict(
- name='foo.baz.bar',
- lb_method='round-robin',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- tm = UntypedManager(module=module, params=module.params)
- tm.exists = Mock(return_value=False)
- tm.create_on_device = Mock(return_value=True)
- tm.version_is_less_than_12 = Mock(return_value=True)
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.version_is_less_than_12 = Mock(return_value=True)
- mm.get_manager = Mock(return_value=tm)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['name'] == 'foo.baz.bar'
- assert results['state'] == 'present'
- assert results['lb_method'] == 'round-robin'
-
-
-class TestTypedManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
- try:
- self.p1 = patch('library.modules.bigip_gtm_wide_ip.module_provisioned')
- self.m1 = self.p1.start()
- self.m1.return_value = True
- except Exception:
- self.p1 = patch('ansible.modules.network.f5.bigip_gtm_wide_ip.module_provisioned')
- self.m1 = self.p1.start()
- self.m1.return_value = True
-
- def tearDown(self):
- self.p1.stop()
-
- def test_create_wideip(self, *args):
- set_module_args(dict(
- name='foo.baz.bar',
- lb_method='round-robin',
- type='a',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- tm = TypedManager(module=module, params=module.params)
- tm.exists = Mock(return_value=False)
- tm.create_on_device = Mock(return_value=True)
- tm.version_is_less_than_12 = Mock(return_value=False)
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.version_is_less_than_12 = Mock(return_value=False)
- mm.get_manager = Mock(return_value=tm)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['name'] == 'foo.baz.bar'
- assert results['state'] == 'present'
- assert results['lb_method'] == 'round-robin'
-
- def test_create_wideip_with_pool(self, *args):
- set_module_args(dict(
- name='foo.baz.bar',
- lb_method='round-robin',
- type='a',
- pools=[
- dict(
- name='foo',
- ratio=10
- )
- ],
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- tm = TypedManager(module=module, params=module.params)
- tm.exists = Mock(return_value=False)
- tm.create_on_device = Mock(return_value=True)
- tm.version_is_less_than_12 = Mock(return_value=False)
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.version_is_less_than_12 = Mock(return_value=False)
- mm.get_manager = Mock(return_value=tm)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['name'] == 'foo.baz.bar'
- assert results['state'] == 'present'
- assert results['lb_method'] == 'round-robin'
-
- def test_create_wideip_with_pool_idempotent(self, *args):
- set_module_args(dict(
- name='foo.bar.com',
- lb_method='round-robin',
- type='a',
- pools=[
- dict(
- name='baz',
- ratio=10
- )
- ],
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = ApiParameters(params=load_fixture('load_gtm_wide_ip_with_pools.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- tm = TypedManager(module=module, params=module.params)
- tm.exists = Mock(return_value=True)
- tm.read_current_from_device = Mock(return_value=current)
- tm.version_is_less_than_12 = Mock(return_value=False)
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.version_is_less_than_12 = Mock(return_value=False)
- mm.get_manager = Mock(return_value=tm)
-
- results = mm.exec_module()
-
- assert results['changed'] is False
-
- def test_update_wideip_with_pool(self, *args):
- set_module_args(dict(
- name='foo.bar.com',
- lb_method='round-robin',
- type='a',
- pools=[
- dict(
- name='baz',
- ratio=10
- ),
- dict(
- name='alec',
- ratio=100
- )
- ],
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = ApiParameters(params=load_fixture('load_gtm_wide_ip_with_pools.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- tm = TypedManager(module=module, params=module.params)
- tm.exists = Mock(return_value=True)
- tm.read_current_from_device = Mock(return_value=current)
- tm.update_on_device = Mock(return_value=True)
- tm.version_is_less_than_12 = Mock(return_value=False)
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.version_is_less_than_12 = Mock(return_value=False)
- mm.get_manager = Mock(return_value=tm)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert 'pools' in results
diff --git a/test/units/modules/network/f5/test_bigip_hostname.py b/test/units/modules/network/f5/test_bigip_hostname.py
deleted file mode 100644
index c625e73884..0000000000
--- a/test/units/modules/network/f5/test_bigip_hostname.py
+++ /dev/null
@@ -1,109 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_hostname import ApiParameters
- from library.modules.bigip_hostname import ModuleParameters
- from library.modules.bigip_hostname import ModuleManager
- from library.modules.bigip_hostname import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_hostname import ApiParameters
- from ansible.modules.network.f5.bigip_hostname import ModuleParameters
- from ansible.modules.network.f5.bigip_hostname import ModuleManager
- from ansible.modules.network.f5.bigip_hostname import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- hostname='foo.internal.com'
- )
- p = ModuleParameters(params=args)
- assert p.hostname == 'foo.internal.com'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_update_hostname(self, *args):
- set_module_args(dict(
- hostname='foo2.internal.com',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- # Configure the parameters that would be returned by querying the
- # remote device
- current = ApiParameters(
- params=dict(
- hostname='foo.internal.com'
- )
- )
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.update_on_device = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['hostname'] == 'foo2.internal.com'
diff --git a/test/units/modules/network/f5/test_bigip_iapp_service.py b/test/units/modules/network/f5/test_bigip_iapp_service.py
deleted file mode 100644
index 4b46c7a981..0000000000
--- a/test/units/modules/network/f5/test_bigip_iapp_service.py
+++ /dev/null
@@ -1,376 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_iapp_service import Parameters
- from library.modules.bigip_iapp_service import ApiParameters
- from library.modules.bigip_iapp_service import ModuleParameters
- from library.modules.bigip_iapp_service import ModuleManager
- from library.modules.bigip_iapp_service import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_iapp_service import Parameters
- from ansible.modules.network.f5.bigip_iapp_service import ApiParameters
- from ansible.modules.network.f5.bigip_iapp_service import ModuleParameters
- from ansible.modules.network.f5.bigip_iapp_service import ModuleManager
- from ansible.modules.network.f5.bigip_iapp_service import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
-
- def test_module_parameters_keys(self):
- args = load_fixture('create_iapp_service_parameters_f5_http.json')
- p = ModuleParameters(params=args)
-
- # Assert the top-level keys
- assert p.name == 'http_example'
- assert p.partition == 'Common'
- assert p.template == '/Common/f5.http'
- assert p.device_group is None
- assert p.inheritedTrafficGroup == 'true'
- assert p.inheritedDevicegroup == 'true'
- assert p.traffic_group == '/Common/traffic-group-local-only'
-
- def test_module_parameters_lists(self):
- args = load_fixture('create_iapp_service_parameters_f5_http.json')
- p = ModuleParameters(params=args)
-
- assert 'lists' in p._values
-
- assert p.lists[0]['name'] == 'irules__irules'
- assert p.lists[0]['encrypted'] == 'no'
- assert len(p.lists[0]['value']) == 1
- assert p.lists[0]['value'][0] == '/Common/lgyft'
-
- assert p.lists[1]['name'] == 'net__client_vlan'
- assert p.lists[1]['encrypted'] == 'no'
- assert len(p.lists[1]['value']) == 1
- assert p.lists[1]['value'][0] == '/Common/net2'
-
- def test_module_parameters_tables(self):
- args = load_fixture('create_iapp_service_parameters_f5_http.json')
- p = ModuleParameters(params=args)
-
- assert 'tables' in p._values
-
- assert 'columnNames' in p.tables[0]
- assert len(p.tables[0]['columnNames']) == 1
- assert p.tables[0]['columnNames'][0] == 'name'
-
- assert 'name' in p.tables[0]
- assert p.tables[0]['name'] == 'pool__hosts'
-
- assert 'rows' in p.tables[0]
- assert len(p.tables[0]['rows']) == 1
- assert 'row' in p.tables[0]['rows'][0]
- assert len(p.tables[0]['rows'][0]['row']) == 1
- assert p.tables[0]['rows'][0]['row'][0] == 'demo.example.com'
-
- assert len(p.tables[1]['rows']) == 2
- assert 'row' in p.tables[0]['rows'][0]
- assert len(p.tables[1]['rows'][0]['row']) == 2
- assert p.tables[1]['rows'][0]['row'][0] == '10.1.1.1'
- assert p.tables[1]['rows'][0]['row'][1] == '0'
- assert p.tables[1]['rows'][1]['row'][0] == '10.1.1.2'
- assert p.tables[1]['rows'][1]['row'][1] == '0'
-
- def test_module_parameters_variables(self):
- args = load_fixture('create_iapp_service_parameters_f5_http.json')
- p = ModuleParameters(params=args)
-
- assert 'variables' in p._values
- assert len(p.variables) == 34
-
- # Assert one configuration value
- assert 'name' in p.variables[0]
- assert 'value' in p.variables[0]
- assert p.variables[0]['name'] == 'afm__dos_security_profile'
- assert p.variables[0]['value'] == '/#do_not_use#'
-
- # Assert a second configuration value
- assert 'name' in p.variables[1]
- assert 'value' in p.variables[1]
- assert p.variables[1]['name'] == 'afm__policy'
- assert p.variables[1]['value'] == '/#do_not_use#'
-
- def test_module_strict_updates_from_top_level(self):
- # Assumes the user did not provide any parameters
-
- args = dict(
- strict_updates=True
- )
- p = ModuleParameters(params=args)
- assert p.strict_updates == 'enabled'
-
- args = dict(
- strict_updates=False
- )
- p = ModuleParameters(params=args)
- assert p.strict_updates == 'disabled'
-
- def test_module_strict_updates_override_from_top_level(self):
- args = dict(
- strict_updates=True,
- parameters=dict(
- strictUpdates='disabled'
- )
- )
- p = ModuleParameters(params=args)
- assert p.strict_updates == 'enabled'
-
- args = dict(
- strict_updates=False,
- parameters=dict(
- strictUpdates='enabled'
- )
- )
- p = ModuleParameters(params=args)
- assert p.strict_updates == 'disabled'
-
- def test_module_strict_updates_only_parameters(self):
- args = dict(
- parameters=dict(
- strictUpdates='disabled'
- )
- )
- p = ModuleParameters(params=args)
- assert p.strict_updates == 'disabled'
-
- args = dict(
- parameters=dict(
- strictUpdates='enabled'
- )
- )
- p = ModuleParameters(params=args)
- assert p.strict_updates == 'enabled'
-
- def test_api_strict_updates_from_top_level(self):
- args = dict(
- strictUpdates='enabled'
- )
- p = ApiParameters(params=args)
- assert p.strict_updates == 'enabled'
-
- args = dict(
- strictUpdates='disabled'
- )
- p = ApiParameters(params=args)
- assert p.strict_updates == 'disabled'
-
- def test_api_parameters_variables(self):
- args = dict(
- variables=[
- dict(
- name="client__http_compression",
- encrypted="no",
- value="/#create_new#"
- )
- ]
- )
- p = ApiParameters(params=args)
- assert p.variables[0]['name'] == 'client__http_compression'
-
- def test_api_parameters_tables(self):
- args = dict(
- tables=[
- {
- "name": "pool__members",
- "columnNames": [
- "addr",
- "port",
- "connection_limit"
- ],
- "rows": [
- {
- "row": [
- "12.12.12.12",
- "80",
- "0"
- ]
- },
- {
- "row": [
- "13.13.13.13",
- "443",
- 10
- ]
- }
- ]
- }
- ]
- )
- p = ApiParameters(params=args)
- assert p.tables[0]['name'] == 'pool__members'
- assert p.tables[0]['columnNames'] == ['addr', 'port', 'connection_limit']
- assert len(p.tables[0]['rows']) == 2
- assert 'row' in p.tables[0]['rows'][0]
- assert 'row' in p.tables[0]['rows'][1]
- assert p.tables[0]['rows'][0]['row'] == ['12.12.12.12', '80', '0']
- assert p.tables[0]['rows'][1]['row'] == ['13.13.13.13', '443', '10']
-
- def test_api_parameters_device_group(self):
- args = dict(
- deviceGroup='none'
- )
- p = ApiParameters(params=args)
- assert p.device_group is None
-
- def test_api_parameters_inherited_traffic_group(self):
- args = dict(
- inheritedTrafficGroup='true'
- )
- p = ApiParameters(params=args)
- assert p.inheritedTrafficGroup == 'true'
-
- def test_api_parameters_inherited_devicegroup(self):
- args = dict(
- inheritedDevicegroup='true'
- )
- p = ApiParameters(params=args)
- assert p.inheritedDevicegroup == 'true'
-
- def test_api_parameters_traffic_group(self):
- args = dict(
- trafficGroup='/Common/traffic-group-local-only'
- )
- p = ApiParameters(params=args)
- assert p.traffic_group == '/Common/traffic-group-local-only'
-
- def test_module_template_same_partition(self):
- args = dict(
- template='foo',
- partition='bar'
- )
- p = ModuleParameters(params=args)
- assert p.template == '/bar/foo'
-
- def test_module_template_same_partition_full_path(self):
- args = dict(
- template='/bar/foo',
- partition='bar'
- )
- p = ModuleParameters(params=args)
- assert p.template == '/bar/foo'
-
- def test_module_template_different_partition_full_path(self):
- args = dict(
- template='/Common/foo',
- partition='bar'
- )
- p = ModuleParameters(params=args)
- assert p.template == '/Common/foo'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create_service(self, *args):
- parameters = load_fixture('create_iapp_service_parameters_f5_http.json')
- set_module_args(dict(
- name='foo',
- template='f5.http',
- parameters=parameters,
- state='present',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(return_value=False)
- mm.create_on_device = Mock(return_value=True)
- mm.template_exists = Mock(return_value=True)
-
- results = mm.exec_module()
- assert results['changed'] is True
-
- def test_update_agent_status_traps(self, *args):
- parameters = load_fixture('update_iapp_service_parameters_f5_http.json')
- set_module_args(dict(
- name='foo',
- template='f5.http',
- parameters=parameters,
- state='present',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- # Configure the parameters that would be returned by querying the
- # remote device
- parameters = load_fixture('create_iapp_service_parameters_f5_http.json')
- current = Parameters(parameters)
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(return_value=True)
- mm.update_on_device = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_iapp_template.py b/test/units/modules/network/f5/test_bigip_iapp_template.py
deleted file mode 100644
index cf86e41224..0000000000
--- a/test/units/modules/network/f5/test_bigip_iapp_template.py
+++ /dev/null
@@ -1,202 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_iapp_template import Parameters
- from library.modules.bigip_iapp_template import ModuleManager
- from library.modules.bigip_iapp_template import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_iapp_template import Parameters
- from ansible.modules.network.f5.bigip_iapp_template import ArgumentSpec
- from ansible.modules.network.f5.bigip_iapp_template import ModuleManager
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- iapp = load_fixture('create_iapp_template.iapp')
- args = dict(
- content=iapp
- )
- p = Parameters(params=args)
- assert p.name == 'foo.iapp'
-
- def test_module_parameters_custom_name(self):
- iapp = load_fixture('create_iapp_template.iapp')
- args = dict(
- content=iapp,
- name='foobar'
- )
- p = Parameters(params=args)
- assert p.name == 'foobar'
- assert 'sys application template /Common/foobar' in p.content
-
- def test_module_parameters_custom_partition(self):
- iapp = load_fixture('create_iapp_template.iapp')
- args = dict(
- content=iapp,
- partition='foobar'
- )
- p = Parameters(params=args)
- assert p.name == 'foo.iapp'
- assert 'sys application template /foobar/foo.iapp' in p.content
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create_iapp_template(self, *args):
- # Configure the arguments that would be sent to the Ansible module
- set_module_args(dict(
- content=load_fixture('basic-iapp.tmpl'),
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
-
- def test_update_iapp_template(self, *args):
- # Configure the arguments that would be sent to the Ansible module
- set_module_args(dict(
- content=load_fixture('basic-iapp.tmpl'),
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current1 = Parameters(params=load_fixture('load_sys_application_template_w_new_checksum.json'))
- current2 = Parameters(params=load_fixture('load_sys_application_template_w_old_checksum.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(side_effect=[True, True])
- mm.create_on_device = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current1)
- mm.template_in_use = Mock(return_value=False)
- mm._get_temporary_template = Mock(return_value=current2)
- mm._remove_iapp_checksum = Mock(return_value=None)
- mm._generate_template_checksum_on_device = Mock(return_value=None)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
-
- def test_delete_iapp_template(self, *args):
- set_module_args(dict(
- content=load_fixture('basic-iapp.tmpl'),
- state='absent',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(side_effect=[True, False])
- mm.remove_from_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
-
- def test_delete_iapp_template_idempotent(self, *args):
- set_module_args(dict(
- content=load_fixture('basic-iapp.tmpl'),
- state='absent',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(side_effect=[False, False])
-
- results = mm.exec_module()
-
- assert results['changed'] is False
diff --git a/test/units/modules/network/f5/test_bigip_ike_peer.py b/test/units/modules/network/f5/test_bigip_ike_peer.py
deleted file mode 100644
index 4edc5e6298..0000000000
--- a/test/units/modules/network/f5/test_bigip_ike_peer.py
+++ /dev/null
@@ -1,111 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2018, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_ike_peer import ApiParameters
- from library.modules.bigip_ike_peer import ModuleParameters
- from library.modules.bigip_ike_peer import ModuleManager
- from library.modules.bigip_ike_peer import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_ike_peer import ApiParameters
- from ansible.modules.network.f5.bigip_ike_peer import ModuleParameters
- from ansible.modules.network.f5.bigip_ike_peer import ModuleManager
- from ansible.modules.network.f5.bigip_ike_peer import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='ike1',
- )
- p = ModuleParameters(params=args)
- assert p.name == 'ike1'
-
- def test_api_parameters(self):
- args = dict(
- name='ike1',
- )
- p = ApiParameters(params=args)
- assert p.name == 'ike1'
-
-
-class TestUntypedManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create(self, *args):
- set_module_args(dict(
- name='ike1',
- version=['v1'],
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- required_if=self.spec.required_if,
- required_together=self.spec.required_together
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.create_on_device = Mock(return_value=True)
- mm.exists = Mock(return_value=False)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_imish_config.py b/test/units/modules/network/f5/test_bigip_imish_config.py
deleted file mode 100644
index 92197fb037..0000000000
--- a/test/units/modules/network/f5/test_bigip_imish_config.py
+++ /dev/null
@@ -1,104 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2018, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_imish_config import ModuleManager
- from library.modules.bigip_imish_config import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_imish_config import ModuleManager
- from ansible.modules.network.f5.bigip_imish_config import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create(self, *args):
- set_module_args(dict(
- lines=[
- 'bgp graceful-restart restart-time 120',
- 'redistribute kernel route-map rhi',
- 'neighbor 10.10.10.11 remote-as 65000',
- 'neighbor 10.10.10.11 fall-over bfd',
- 'neighbor 10.10.10.11 remote-as 65000',
- 'neighbor 10.10.10.11 fall-over bfd'
- ],
- parents='router bgp 64664',
- before='bfd slow-timer 2000',
- match='exact',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = load_fixture('load_imish_output_1.json')
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive,
- required_if=self.spec.required_if,
- add_file_common_args=self.spec.add_file_common_args
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.read_current_from_device = Mock(return_value=current['commandResult'])
- mm.upload_file_to_device = Mock(return_value=True)
- mm.load_config_on_device = Mock(return_value=True)
- mm.remove_uploaded_file_from_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_ipsec_policy.py b/test/units/modules/network/f5/test_bigip_ipsec_policy.py
deleted file mode 100644
index 4fc769f082..0000000000
--- a/test/units/modules/network/f5/test_bigip_ipsec_policy.py
+++ /dev/null
@@ -1,109 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2018, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_ipsec_policy import ApiParameters
- from library.modules.bigip_ipsec_policy import ModuleParameters
- from library.modules.bigip_ipsec_policy import ModuleManager
- from library.modules.bigip_ipsec_policy import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_ipsec_policy import ApiParameters
- from ansible.modules.network.f5.bigip_ipsec_policy import ModuleParameters
- from ansible.modules.network.f5.bigip_ipsec_policy import ModuleManager
- from ansible.modules.network.f5.bigip_ipsec_policy import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='ipsec1',
- )
- p = ModuleParameters(params=args)
- assert p.name == 'ipsec1'
-
- def test_api_parameters(self):
- args = dict(
- name='ipsec1',
- )
- p = ApiParameters(params=args)
- assert p.name == 'ipsec1'
-
-
-class TestUntypedManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create(self, *args):
- set_module_args(dict(
- name='ipsec1',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- required_if=self.spec.required_if
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.create_on_device = Mock(return_value=True)
- mm.exists = Mock(return_value=False)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_irule.py b/test/units/modules/network/f5/test_bigip_irule.py
deleted file mode 100644
index 3e80c3f8ac..0000000000
--- a/test/units/modules/network/f5/test_bigip_irule.py
+++ /dev/null
@@ -1,266 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-from ansible.module_utils.six import PY3
-
-try:
- from library.modules.bigip_irule import Parameters
- from library.modules.bigip_irule import ModuleManager
- from library.modules.bigip_irule import ArgumentSpec
- from library.modules.bigip_irule import GtmManager
- from library.modules.bigip_irule import LtmManager
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
- from test.units.compat.mock import patch
- from test.units.compat.mock import mock_open
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_irule import Parameters
- from ansible.modules.network.f5.bigip_irule import ModuleManager
- from ansible.modules.network.f5.bigip_irule import ArgumentSpec
- from ansible.modules.network.f5.bigip_irule import GtmManager
- from ansible.modules.network.f5.bigip_irule import LtmManager
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
- from units.compat.mock import patch
- from units.compat.mock import mock_open
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class BigIpObj(object):
- def __init__(self, **kwargs):
- self.__dict__.update(kwargs)
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters_ltm(self):
- content = load_fixture('create_ltm_irule.tcl')
- args = dict(
- content=content,
- module='ltm',
- name='foo',
- state='present'
- )
- p = Parameters(params=args)
- assert p.content == content
-
- def test_module_parameters_gtm(self):
- content = load_fixture('create_gtm_irule.tcl')
- args = dict(
- content=content,
- module='gtm',
- name='foo',
- state='present'
- )
- p = Parameters(params=args)
- assert p.content == content
-
- def test_api_parameters_ltm(self):
- content = load_fixture('create_ltm_irule.tcl')
- args = dict(
- apiAnonymous=content
- )
- p = Parameters(params=args)
- assert p.content == content
-
- def test_return_api_params(self):
- content = load_fixture('create_ltm_irule.tcl')
- args = dict(
- content=content,
- module='ltm',
- name='foo',
- state='present'
- )
- p = Parameters(params=args)
- params = p.api_params()
-
- assert 'apiAnonymous' in params
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
- self.ltm_irules = []
- self.gtm_irules = []
-
- members = load_fixture('load_ltm_irules.json')
- for item in members:
- self.ltm_irules.append(BigIpObj(**item))
-
- members = load_fixture('load_gtm_irules.json')
- for item in members:
- self.gtm_irules.append(BigIpObj(**item))
-
- def test_create_ltm_irule(self, *args):
- set_module_args(dict(
- name='foo',
- module='ltm',
- content='this is my content',
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive,
- )
-
- # Override methods in the specific type of manager
- tm = LtmManager(module=module, params=module.params)
- tm.exists = Mock(side_effect=[False, True])
- tm.create_on_device = Mock(return_value=True)
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.get_manager = Mock(return_value=tm)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['content'] == 'this is my content'
-
- def test_create_gtm_irule(self, *args):
- set_module_args(dict(
- name='foo',
- module='gtm',
- content='this is my content',
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive,
- )
-
- # Override methods in the specific type of manager
- tm = GtmManager(module=module, params=module.params)
- tm.exists = Mock(side_effect=[False, True])
- tm.create_on_device = Mock(return_value=True)
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.get_manager = Mock(return_value=tm)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['content'] == 'this is my content'
-
- def test_create_gtm_irule_src(self, *args):
- set_module_args(dict(
- name='foo',
- module='gtm',
- src='{0}/create_ltm_irule.tcl'.format(fixture_path),
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive,
- )
-
- if PY3:
- builtins_name = 'builtins'
- else:
- builtins_name = '__builtin__'
-
- with patch(builtins_name + '.open', mock_open(read_data='this is my content'), create=True):
- # Override methods in the specific type of manager
- tm = GtmManager(module=module, params=module.params)
- tm.exists = Mock(side_effect=[False, True])
- tm.create_on_device = Mock(return_value=True)
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.get_manager = Mock(return_value=tm)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['content'] == 'this is my content'
- assert results['module'] == 'gtm'
- assert results['src'] == '{0}/create_ltm_irule.tcl'.format(fixture_path)
- assert len(results.keys()) == 4
-
- def test_module_mutual_exclusion(self, *args):
- set_module_args(dict(
- content='foo',
- module='ltm',
- name='foo',
- state='present',
- src='/path/to/irules/foo.tcl',
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- with patch('ansible.module_utils.basic.AnsibleModule.fail_json', unsafe=True) as mo:
- AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive,
- )
- mo.assert_called_once()
diff --git a/test/units/modules/network/f5/test_bigip_log_destination.py b/test/units/modules/network/f5/test_bigip_log_destination.py
deleted file mode 100644
index 5a02fde620..0000000000
--- a/test/units/modules/network/f5/test_bigip_log_destination.py
+++ /dev/null
@@ -1,131 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2017, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_log_destination import V1ApiParameters
- from library.modules.bigip_log_destination import V1ModuleParameters
- from library.modules.bigip_log_destination import ModuleManager
- from library.modules.bigip_log_destination import V1Manager
- from library.modules.bigip_log_destination import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_log_destination import V1ApiParameters
- from ansible.modules.network.f5.bigip_log_destination import V1ModuleParameters
- from ansible.modules.network.f5.bigip_log_destination import ModuleManager
- from ansible.modules.network.f5.bigip_log_destination import V1Manager
- from ansible.modules.network.f5.bigip_log_destination import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestV1Parameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- syslog_settings=dict(
- forward_to='pool1',
- syslog_format='rfc5424'
- ),
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- )
- p = V1ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.forward_to == '/Common/pool1'
- assert p.syslog_format == 'rfc5424'
-
- def test_api_parameters(self):
- args = load_fixture('load_sys_log_config_destination_1.json')
- p = V1ApiParameters(params=args)
- assert p.name == 'foo'
- assert p.syslog_format == 'rfc5424'
- assert p.forward_to == '/Common/pool1'
-
-
-class TestV1Manager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create_policy(self, *args):
- set_module_args(dict(
- name="foo",
- type='remote-syslog',
- syslog_settings=dict(
- forward_to='pool1',
- ),
- state='present',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive
- )
-
- # Override methods in the specific type of manager
- tm = V1Manager(module=module, params=module.params)
- tm.exists = Mock(return_value=False)
- tm.create_on_device = Mock(return_value=True)
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.get_manager = Mock(return_value=tm)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_log_publisher.py b/test/units/modules/network/f5/test_bigip_log_publisher.py
deleted file mode 100644
index c45e31b79d..0000000000
--- a/test/units/modules/network/f5/test_bigip_log_publisher.py
+++ /dev/null
@@ -1,132 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2017, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_log_publisher import ApiParameters
- from library.modules.bigip_log_publisher import ModuleParameters
- from library.modules.bigip_log_publisher import ModuleManager
- from library.modules.bigip_log_publisher import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_log_publisher import ApiParameters
- from ansible.modules.network.f5.bigip_log_publisher import ModuleParameters
- from ansible.modules.network.f5.bigip_log_publisher import ModuleManager
- from ansible.modules.network.f5.bigip_log_publisher import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- description='my desc',
- destinations=[
- 'dest1',
- 'dest2'
- ],
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- )
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.description == 'my desc'
- assert p.destinations == ['/Common/dest1', '/Common/dest2']
-
- def test_api_parameters(self):
- args = load_fixture('load_sys_log_config_publisher_1.json')
- p = ApiParameters(params=args)
- assert p.name == 'foo'
- assert p.description == 'my description'
- assert p.destinations == [
- '/Common/SECURITYLOGSERVERS-LOGGING',
- '/Common/local-db',
- '/Common/local-syslog',
- ]
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create_policy(self, *args):
- set_module_args(dict(
- name="foo",
- description='foo description',
- destinations=[
- 'dest1',
- 'dest2'
- ],
- state='present',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=False)
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['description'] == 'foo description'
- assert results['destinations'] == ['/Common/dest1', '/Common/dest2']
diff --git a/test/units/modules/network/f5/test_bigip_lx_package.py b/test/units/modules/network/f5/test_bigip_lx_package.py
deleted file mode 100644
index d98c8014bb..0000000000
--- a/test/units/modules/network/f5/test_bigip_lx_package.py
+++ /dev/null
@@ -1,123 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_lx_package import Parameters
- from library.modules.bigip_lx_package import ModuleManager
- from library.modules.bigip_lx_package import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
- from test.units.compat.mock import patch
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_lx_package import Parameters
- from ansible.modules.network.f5.bigip_lx_package import ArgumentSpec
- from ansible.modules.network.f5.bigip_lx_package import ModuleManager
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
- from units.compat.mock import patch
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- package='MyApp-0.1.0-0001.noarch.rpm',
- state='present'
- )
- p = Parameters(params=args)
- assert p.package == 'MyApp-0.1.0-0001.noarch.rpm'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
- self.patcher1 = patch('time.sleep')
- self.patcher1.start()
-
- try:
- self.p1 = patch('library.modules.bigip_lx_package.tmos_version')
- self.m1 = self.p1.start()
- self.m1.return_value = '12.1.3'
- except Exception:
- self.p1 = patch('ansible.modules.network.f5.bigip_lx_package.tmos_version')
- self.m1 = self.p1.start()
- self.m1.return_value = '12.1.3'
-
- def tearDown(self):
- self.patcher1.stop()
-
- def test_create_iapp_template(self, *args):
- package_name = os.path.join(fixture_path, 'MyApp-0.1.0-0001.noarch.rpm')
- # Configure the arguments that would be sent to the Ansible module
- set_module_args(dict(
- package=package_name,
- state='present',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- required_if=self.spec.required_if
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
- mm.upload_to_device = Mock(return_value=True)
- mm.enable_iapplx_on_device = Mock(return_value=True)
- mm.remove_package_file_from_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_management_route.py b/test/units/modules/network/f5/test_bigip_management_route.py
deleted file mode 100644
index a3d6501710..0000000000
--- a/test/units/modules/network/f5/test_bigip_management_route.py
+++ /dev/null
@@ -1,124 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2017, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_management_route import ApiParameters
- from library.modules.bigip_management_route import ModuleParameters
- from library.modules.bigip_management_route import ModuleManager
- from library.modules.bigip_management_route import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_management_route import ApiParameters
- from ansible.modules.network.f5.bigip_management_route import ModuleParameters
- from ansible.modules.network.f5.bigip_management_route import ModuleManager
- from ansible.modules.network.f5.bigip_management_route import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- gateway='1.1.1.1',
- network='default',
- description='my description'
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.gateway == '1.1.1.1'
- assert p.network == 'default'
- assert p.description == 'my description'
-
- def test_api_parameters(self):
- args = load_fixture('load_sys_management_route_1.json')
-
- p = ApiParameters(params=args)
- assert p.name == 'default'
- assert p.gateway == '10.0.2.2'
- assert p.network == 'default'
- assert p.description == 'configured-by-dhcp'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create_monitor(self, *args):
- set_module_args(dict(
- name='foo',
- gateway='1.1.1.1',
- network='default',
- description='my description',
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['gateway'] == '1.1.1.1'
- assert results['network'] == 'default'
- assert results['description'] == 'my description'
diff --git a/test/units/modules/network/f5/test_bigip_message_routing_peer.py b/test/units/modules/network/f5/test_bigip_message_routing_peer.py
deleted file mode 100644
index 9c67fdbb9a..0000000000
--- a/test/units/modules/network/f5/test_bigip_message_routing_peer.py
+++ /dev/null
@@ -1,194 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2019, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_message_routing_peer import ApiParameters
- from library.modules.bigip_message_routing_peer import ModuleParameters
- from library.modules.bigip_message_routing_peer import ModuleManager
- from library.modules.bigip_message_routing_peer import GenericModuleManager
- from library.modules.bigip_message_routing_peer import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_message_routing_peer import ApiParameters
- from ansible.modules.network.f5.bigip_message_routing_peer import ModuleParameters
- from ansible.modules.network.f5.bigip_message_routing_peer import ModuleManager
- from ansible.modules.network.f5.bigip_message_routing_peer import GenericModuleManager
- from ansible.modules.network.f5.bigip_message_routing_peer import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- partition='foobar',
- description='my description',
- auto_init='yes',
- auto_init_interval=1234,
- connection_mode='per-peer',
- number_of_connections=20,
- pool='/Common/example',
- ratio=10,
- transport_config='/Common/virtual'
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.partition == 'foobar'
- assert p.description == 'my description'
- assert p.auto_init == 'enabled'
- assert p.auto_init_interval == 1234
- assert p.connection_mode == 'per-peer'
- assert p.number_of_connections == 20
- assert p.pool == '/Common/example'
- assert p.ratio == 10
- assert p.transport_config == '/Common/virtual'
-
- def test_api_parameters(self):
- args = load_fixture('load_generic_peer.json')
-
- p = ApiParameters(params=args)
- assert p.name == 'test'
- assert p.partition == 'Common'
- assert p.description == 'foobar'
- assert p.auto_init == 'disabled'
- assert p.auto_init_interval == 5000
- assert p.connection_mode == 'per-peer'
- assert p.number_of_connections == 1
- assert p.pool == '/Common/example'
- assert p.ratio == 1
- assert p.transport_config == '/Common/test_tranport'
-
-
-class TestManager(unittest.TestCase):
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create_generic_peer(self, *args):
- set_module_args(dict(
- name='foo',
- partition='foobar',
- description='my description',
- auto_init='yes',
- auto_init_interval=1234,
- connection_mode='per-peer',
- number_of_connections=20,
- pool='/Common/example',
- ratio=10,
- transport_config='/Common/virtual',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- required_if=self.spec.required_if
- )
-
- # Override methods in the specific type of manager
- gm = GenericModuleManager(module=module)
- gm.exists = Mock(return_value=False)
- gm.create_on_device = Mock(return_value=True)
-
- mm = ModuleManager(module=module)
- mm.version_less_than_14 = Mock(return_value=False)
- mm.get_manager = Mock(return_value=gm)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['auto_init'] == 'yes'
- assert results['description'] == 'my description'
- assert results['auto_init_interval'] == 1234
- assert results['connection_mode'] == 'per-peer'
- assert results['number_of_connections'] == 20
- assert results['pool'] == '/Common/example'
- assert results['ratio'] == 10
- assert results['transport_config'] == '/Common/virtual'
-
- def test_update_generic_peer(self, *args):
- set_module_args(dict(
- name='test',
- auto_init_interval=3000,
- ratio=120,
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = ApiParameters(params=load_fixture('load_generic_peer.json'))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- required_if=self.spec.required_if
- )
-
- # Override methods in the specific type of manager
- gm = GenericModuleManager(module=module)
- gm.exists = Mock(return_value=True)
- gm.update_on_device = Mock(return_value=True)
- gm.read_current_from_device = Mock(return_value=current)
-
- mm = ModuleManager(module=module)
- mm.version_less_than_14 = Mock(return_value=False)
- mm.get_manager = Mock(return_value=gm)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['auto_init_interval'] == 3000
- assert results['ratio'] == 120
diff --git a/test/units/modules/network/f5/test_bigip_message_routing_protocol.py b/test/units/modules/network/f5/test_bigip_message_routing_protocol.py
deleted file mode 100644
index 0a59d5e9de..0000000000
--- a/test/units/modules/network/f5/test_bigip_message_routing_protocol.py
+++ /dev/null
@@ -1,179 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2019, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_message_routing_protocol import ApiParameters
- from library.modules.bigip_message_routing_protocol import ModuleParameters
- from library.modules.bigip_message_routing_protocol import ModuleManager
- from library.modules.bigip_message_routing_protocol import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_message_routing_protocol import ApiParameters
- from ansible.modules.network.f5.bigip_message_routing_protocol import ModuleParameters
- from ansible.modules.network.f5.bigip_message_routing_protocol import ModuleManager
- from ansible.modules.network.f5.bigip_message_routing_protocol import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- partition='foobar',
- description='my description',
- parent='barfoo',
- disable_parser=True,
- max_egress_buffer=10000,
- max_msg_size=2000,
- msg_terminator='%%%%',
- no_response=False,
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.partition == 'foobar'
- assert p.description == 'my description'
- assert p.parent == '/foobar/barfoo'
- assert p.disable_parser == 'yes'
- assert p.max_egress_buffer == 10000
- assert p.max_msg_size == 2000
- assert p.msg_terminator == '%%%%'
- assert p.no_response == 'no'
-
- def test_api_parameters(self):
- args = load_fixture('load_generic_parser.json')
-
- p = ApiParameters(params=args)
- assert p.name == 'foobar'
- assert p.partition == 'Common'
- assert p.parent == '/Common/genericmsg'
- assert p.disable_parser == 'no'
- assert p.max_egress_buffer == 32768
- assert p.max_msg_size == 32768
- assert p.no_response == 'no'
-
-
-class TestManager(unittest.TestCase):
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create_generic_protocol(self, *args):
- set_module_args(dict(
- name='foo',
- partition='foobar',
- description='my description',
- parent='barfoo',
- disable_parser=True,
- max_egress_buffer=10000,
- max_msg_size=2000,
- msg_terminator='%%%%',
- no_response=False,
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=False)
- mm.create_on_device = Mock(return_value=True)
- mm.version_less_than_14 = Mock(return_value=False)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['description'] == 'my description'
- assert results['parent'] == '/foobar/barfoo'
- assert results['disable_parser'] == 'yes'
- assert results['max_egress_buffer'] == 10000
- assert results['max_msg_size'] == 2000
- assert results['msg_terminator'] == '%%%%'
- assert results['no_response'] == 'no'
-
- def test_update_generic_protocol(self, *args):
- set_module_args(dict(
- name='foobar',
- disable_parser=True,
- max_egress_buffer=10000,
- max_msg_size=2000,
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = ApiParameters(params=load_fixture('load_generic_parser.json'))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.update_on_device = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.version_less_than_14 = Mock(return_value=False)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['disable_parser'] == 'yes'
- assert results['max_egress_buffer'] == 10000
- assert results['max_msg_size'] == 2000
diff --git a/test/units/modules/network/f5/test_bigip_message_routing_route.py b/test/units/modules/network/f5/test_bigip_message_routing_route.py
deleted file mode 100644
index db68ae1edf..0000000000
--- a/test/units/modules/network/f5/test_bigip_message_routing_route.py
+++ /dev/null
@@ -1,178 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2019, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_message_routing_route import ApiParameters
- from library.modules.bigip_message_routing_route import ModuleParameters
- from library.modules.bigip_message_routing_route import ModuleManager
- from library.modules.bigip_message_routing_route import GenericModuleManager
- from library.modules.bigip_message_routing_route import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_message_routing_route import ApiParameters
- from ansible.modules.network.f5.bigip_message_routing_route import ModuleParameters
- from ansible.modules.network.f5.bigip_message_routing_route import ModuleManager
- from ansible.modules.network.f5.bigip_message_routing_route import GenericModuleManager
- from ansible.modules.network.f5.bigip_message_routing_route import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- partition='foobar',
- description='my description',
- dst_address='some_destination',
- src_address='some_address',
- peer_selection_mode='ratio',
- peers=['/Common/example']
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.partition == 'foobar'
- assert p.description == 'my description'
- assert p.dst_address == 'some_destination'
- assert p.src_address == 'some_address'
- assert p.peer_selection_mode == 'ratio'
- assert p.peers == ['/Common/example']
-
- def test_api_parameters(self):
- args = load_fixture('load_generic_route.json')
-
- p = ApiParameters(params=args)
- assert p.name == 'some'
- assert p.partition == 'Common'
- assert p.dst_address == 'annoying_user'
- assert p.src_address == '99.99.99.99'
- assert p.peer_selection_mode == 'sequential'
- assert p.peers == ['/Common/testy']
-
-
-class TestManager(unittest.TestCase):
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create_generic_route(self, *args):
- set_module_args(dict(
- name='some',
- partition='foobar',
- description='my description',
- dst_address='some_destination',
- src_address='some_address',
- peer_selection_mode='ratio',
- peers=['/Common/example'],
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- gm = GenericModuleManager(module=module)
- gm.exists = Mock(return_value=False)
- gm.create_on_device = Mock(return_value=True)
-
- mm = ModuleManager(module=module)
- mm.version_less_than_14 = Mock(return_value=False)
- mm.get_manager = Mock(return_value=gm)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['description'] == 'my description'
- assert results['dst_address'] == 'some_destination'
- assert results['src_address'] == 'some_address'
- assert results['peer_selection_mode'] == 'ratio'
- assert results['peers'] == ['/Common/example']
-
- def test_update_generic_peer(self, *args):
- set_module_args(dict(
- name='some',
- dst_address="blackhole",
- peer_selection_mode='ratio',
- peers=['/Common/example'],
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = ApiParameters(params=load_fixture('load_generic_route.json'))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- gm = GenericModuleManager(module=module)
- gm.exists = Mock(return_value=True)
- gm.update_on_device = Mock(return_value=True)
- gm.read_current_from_device = Mock(return_value=current)
-
- mm = ModuleManager(module=module)
- mm.version_less_than_14 = Mock(return_value=False)
- mm.get_manager = Mock(return_value=gm)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['dst_address'] == 'blackhole'
- assert results['peer_selection_mode'] == 'ratio'
- assert results['peers'] == ['/Common/example']
diff --git a/test/units/modules/network/f5/test_bigip_message_routing_router.py b/test/units/modules/network/f5/test_bigip_message_routing_router.py
deleted file mode 100644
index 6bd5525a26..0000000000
--- a/test/units/modules/network/f5/test_bigip_message_routing_router.py
+++ /dev/null
@@ -1,206 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2019, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_message_routing_router import ApiParameters
- from library.modules.bigip_message_routing_router import ModuleParameters
- from library.modules.bigip_message_routing_router import GenericModuleManager
- from library.modules.bigip_message_routing_router import ModuleManager
- from library.modules.bigip_message_routing_router import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_message_routing_router import ApiParameters
- from ansible.modules.network.f5.bigip_message_routing_router import ModuleParameters
- from ansible.modules.network.f5.bigip_message_routing_router import ModuleManager
- from ansible.modules.network.f5.bigip_message_routing_router import GenericModuleManager
- from ansible.modules.network.f5.bigip_message_routing_router import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- partition='foobar',
- description='my description',
- ignore_client_port='no',
- inherited_traffic_group='yes',
- use_local_connection='no',
- max_pending_bytes=20000,
- max_pending_messages=300,
- max_retries=32,
- mirror='yes',
- mirrored_msg_sweeper_interval=3000,
- routes=['test1', 'test2'],
- traffic_group='footraffic',
- )
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.partition == 'foobar'
- assert p.description == 'my description'
- assert p.ignore_client_port == 'no'
- assert p.inherited_traffic_group == 'true'
- assert p.use_local_connection == 'no'
- assert p.max_pending_bytes == 20000
- assert p.max_pending_messages == 300
- assert p.max_retries == 32
- assert p.mirror == 'enabled'
- assert p.mirrored_msg_sweeper_interval == 3000
- assert p.routes == ['/foobar/test1', '/foobar/test2']
- assert p.traffic_group == '/Common/footraffic'
-
- def test_api_parameters(self):
- args = load_fixture('load_generic_router.json')
-
- p = ApiParameters(params=args)
- assert p.name == 'messagerouter'
- assert p.partition == 'Common'
- assert p.ignore_client_port == 'no'
- assert p.inherited_traffic_group == 'true'
- assert p.use_local_connection == 'yes'
- assert p.max_pending_bytes == 23768
- assert p.max_pending_messages == 64
- assert p.max_retries == 1
- assert p.mirror == 'disabled'
- assert p.mirrored_msg_sweeper_interval == 1000
- assert p.traffic_group == '/Common/traffic-group-1'
-
-
-class TestManager(unittest.TestCase):
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create_generic_router(self, *args):
- set_module_args(dict(
- name='foo',
- partition='foobar',
- description='my description',
- ignore_client_port='no',
- inherited_traffic_group='yes',
- use_local_connection='no',
- max_pending_bytes=20000,
- max_pending_messages=300,
- max_retries=32,
- mirror='yes',
- mirrored_msg_sweeper_interval=3000,
- routes=['test1', 'test2'],
- traffic_group='footraffic',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- gm = GenericModuleManager(module=module)
- gm.exists = Mock(return_value=False)
- gm.create_on_device = Mock(return_value=True)
-
- mm = ModuleManager(module=module)
- mm.version_less_than_14 = Mock(return_value=False)
- mm.get_manager = Mock(return_value=gm)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['description'] == 'my description'
- assert results['ignore_client_port'] == 'no'
- assert results['inherited_traffic_group'] == 'yes'
- assert results['use_local_connection'] == 'no'
- assert results['max_pending_bytes'] == 20000
- assert results['max_pending_messages'] == 300
- assert results['max_retries'] == 32
- assert results['mirror'] == 'yes'
- assert results['mirrored_msg_sweeper_interval'] == 3000
- assert results['traffic_group'] == '/Common/footraffic'
- assert results['routes'] == ['/foobar/test1', '/foobar/test2']
-
- def test_update_generic_router(self, *args):
- set_module_args(dict(
- name='messagerouter',
- use_local_connection='no',
- mirror='yes',
- routes=['/Common/example'],
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = ApiParameters(params=load_fixture('load_generic_router.json'))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- gm = GenericModuleManager(module=module)
- gm.exists = Mock(return_value=True)
- gm.update_on_device = Mock(return_value=True)
- gm.read_current_from_device = Mock(return_value=current)
-
- mm = ModuleManager(module=module)
- mm.version_less_than_14 = Mock(return_value=False)
- mm.get_manager = Mock(return_value=gm)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['use_local_connection'] == 'no'
- assert results['mirror'] == 'yes'
- assert results['routes'] == ['/Common/example']
diff --git a/test/units/modules/network/f5/test_bigip_message_routing_transport_config.py b/test/units/modules/network/f5/test_bigip_message_routing_transport_config.py
deleted file mode 100644
index d532005d7e..0000000000
--- a/test/units/modules/network/f5/test_bigip_message_routing_transport_config.py
+++ /dev/null
@@ -1,183 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2019, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_message_routing_transport_config import ApiParameters
- from library.modules.bigip_message_routing_transport_config import ModuleParameters
- from library.modules.bigip_message_routing_transport_config import ModuleManager
- from library.modules.bigip_message_routing_transport_config import GenericModuleManager
- from library.modules.bigip_message_routing_transport_config import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_message_routing_transport_config import ApiParameters
- from ansible.modules.network.f5.bigip_message_routing_transport_config import ModuleParameters
- from ansible.modules.network.f5.bigip_message_routing_transport_config import ModuleManager
- from ansible.modules.network.f5.bigip_message_routing_transport_config import GenericModuleManager
- from ansible.modules.network.f5.bigip_message_routing_transport_config import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- partition='foobar',
- description='my description',
- profiles=['genericmsg', 'foo_udp'],
- src_addr_translation=dict(
- type='snat',
- pool='some_pool1'
- ),
- src_port=1023,
- rules=['rule1', 'rule2'],
- )
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.partition == 'foobar'
- assert p.description == 'my description'
- assert p.profiles == ['/foobar/genericmsg', '/foobar/foo_udp']
- assert p.snat_type == 'snat'
- assert p.snat_pool == '/foobar/some_pool1'
- assert p.src_port == 1023
- assert p.rules == ['/foobar/rule1', '/foobar/rule2']
-
- def test_api_parameters(self):
- args = load_fixture('load_generic_transport_config.json')
-
- p = ApiParameters(params=args)
- assert p.name == 'gen1'
- assert p.partition == 'Common'
- assert p.profiles == ['/Common/diametersession', '/Common/tcp']
- assert p.snat_type == 'snat'
- assert p.src_port == 0
- assert p.snat_pool == '/Common/test_snat'
- assert p.rules == ['/Common/test']
-
-
-class TestManager(unittest.TestCase):
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create_generic_transport(self, *args):
- set_module_args(dict(
- name='foo',
- partition='foobar',
- description='my description',
- profiles=['genericmsg', 'foo_udp'],
- src_addr_translation=dict(
- type='snat',
- pool='some_pool1'
- ),
- src_port=1023,
- rules=['rule1', 'rule2'],
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- gm = GenericModuleManager(module=module)
- gm.exists = Mock(return_value=False)
- gm.create_on_device = Mock(return_value=True)
-
- mm = ModuleManager(module=module)
- mm.version_less_than_14 = Mock(return_value=False)
- mm.get_manager = Mock(return_value=gm)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['description'] == 'my description'
- assert results['src_addr_translation'] == dict(type='snat', pool='/foobar/some_pool1')
- assert results['src_port'] == 1023
- assert results['rules'] == ['/foobar/rule1', '/foobar/rule2']
- assert results['profiles'] == ['/foobar/genericmsg', '/foobar/foo_udp']
-
- def test_update_generic_transport(self, *args):
- set_module_args(dict(
- name='gen1',
- src_port=1024,
- rules=['/Common/barfoo'],
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = ApiParameters(params=load_fixture('load_generic_transport_config.json'))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- )
-
- # Override methods in the specific type of manager
- gm = GenericModuleManager(module=module)
- gm.exists = Mock(return_value=True)
- gm.update_on_device = Mock(return_value=True)
- gm.read_current_from_device = Mock(return_value=current)
-
- mm = ModuleManager(module=module)
- mm.version_less_than_14 = Mock(return_value=False)
- mm.get_manager = Mock(return_value=gm)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['src_port'] == 1024
- assert results['rules'] == ['/Common/barfoo']
diff --git a/test/units/modules/network/f5/test_bigip_monitor_dns.py b/test/units/modules/network/f5/test_bigip_monitor_dns.py
deleted file mode 100644
index ad473e5540..0000000000
--- a/test/units/modules/network/f5/test_bigip_monitor_dns.py
+++ /dev/null
@@ -1,157 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2017, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_monitor_dns import ApiParameters
- from library.modules.bigip_monitor_dns import ModuleParameters
- from library.modules.bigip_monitor_dns import ModuleManager
- from library.modules.bigip_monitor_dns import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_monitor_dns import ApiParameters
- from ansible.modules.network.f5.bigip_monitor_dns import ModuleParameters
- from ansible.modules.network.f5.bigip_monitor_dns import ModuleManager
- from ansible.modules.network.f5.bigip_monitor_dns import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- parent='/Common/dns',
- interval=10,
- time_until_up=0,
- timeout=30,
- )
-
- p = ModuleParameters(params=args)
- assert p.parent == '/Common/dns'
- assert p.interval == 10
- assert p.time_until_up == 0
- assert p.timeout == 30
-
- def test_api_parameters(self):
- args = dict(
- defaultsFrom='/Common/dns',
- interval=10,
- timeUntilUp=0,
- timeout=30,
- )
-
- p = ApiParameters(params=args)
- assert p.parent == '/Common/dns'
- assert p.interval == 10
- assert p.time_until_up == 0
- assert p.timeout == 30
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create(self, *args):
- set_module_args(dict(
- name='foo',
- parent='/Common/dns',
- query_name='foo',
- interval=20,
- timeout=30,
- time_until_up=60,
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
-
- def test_create_with_description(self, *args):
- set_module_args(dict(
- name='foo',
- parent='/Common/dns',
- query_name='foo',
- interval=20,
- timeout=30,
- time_until_up=60,
- description='Important Description',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_monitor_external.py b/test/units/modules/network/f5/test_bigip_monitor_external.py
deleted file mode 100644
index 3f29036321..0000000000
--- a/test/units/modules/network/f5/test_bigip_monitor_external.py
+++ /dev/null
@@ -1,120 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2017, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_monitor_external import ModuleParameters
- from library.modules.bigip_monitor_external import ModuleManager
- from library.modules.bigip_monitor_external import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_monitor_external import ModuleParameters
- from ansible.modules.network.f5.bigip_monitor_external import ModuleManager
- from ansible.modules.network.f5.bigip_monitor_external import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- parent='parent',
- ip='10.10.10.10',
- port=80,
- interval=20,
- timeout=30,
- partition='Common'
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.parent == '/Common/parent'
- assert p.ip == '10.10.10.10'
- assert p.type == 'external'
- assert p.port == 80
- assert p.destination == '10.10.10.10:80'
- assert p.interval == 20
- assert p.timeout == 30
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create_monitor(self, *args):
- set_module_args(dict(
- name='foo',
- parent='parent',
- ip='10.10.10.10',
- port=80,
- interval=20,
- timeout=30,
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['parent'] == '/Common/parent'
diff --git a/test/units/modules/network/f5/test_bigip_monitor_gateway_icmp.py b/test/units/modules/network/f5/test_bigip_monitor_gateway_icmp.py
deleted file mode 100644
index f327bfc80f..0000000000
--- a/test/units/modules/network/f5/test_bigip_monitor_gateway_icmp.py
+++ /dev/null
@@ -1,155 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2017, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_monitor_gateway_icmp import ApiParameters
- from library.modules.bigip_monitor_gateway_icmp import ModuleParameters
- from library.modules.bigip_monitor_gateway_icmp import ModuleManager
- from library.modules.bigip_monitor_gateway_icmp import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_monitor_gateway_icmp import ApiParameters
- from ansible.modules.network.f5.bigip_monitor_gateway_icmp import ModuleParameters
- from ansible.modules.network.f5.bigip_monitor_gateway_icmp import ModuleManager
- from ansible.modules.network.f5.bigip_monitor_gateway_icmp import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- parent='/Common/gateway-icmp',
- interval=10,
- time_until_up=0,
- timeout=30,
- )
-
- p = ModuleParameters(params=args)
- assert p.parent == '/Common/gateway-icmp'
- assert p.interval == 10
- assert p.time_until_up == 0
- assert p.timeout == 30
-
- def test_api_parameters(self):
- args = dict(
- defaultsFrom='/Common/gateway-icmp',
- interval=10,
- timeUntilUp=0,
- timeout=30,
- )
-
- p = ApiParameters(params=args)
- assert p.parent == '/Common/gateway-icmp'
- assert p.interval == 10
- assert p.time_until_up == 0
- assert p.timeout == 30
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create(self, *args):
- set_module_args(dict(
- name='foo',
- parent='/Common/gateway-icmp',
- interval=20,
- timeout=30,
- time_until_up=60,
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
-
- def test_create_with_description(self, *args):
- set_module_args(dict(
- name='foo',
- parent='/Common/gateway-icmp',
- interval=20,
- timeout=30,
- time_until_up=60,
- description='Important Description',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_monitor_http.py b/test/units/modules/network/f5/test_bigip_monitor_http.py
deleted file mode 100644
index 0c9a66005c..0000000000
--- a/test/units/modules/network/f5/test_bigip_monitor_http.py
+++ /dev/null
@@ -1,452 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_monitor_http import Parameters
- from library.modules.bigip_monitor_http import ModuleManager
- from library.modules.bigip_monitor_http import ArgumentSpec
-
- from library.module_utils.network.f5.common import F5ModuleError
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_monitor_http import Parameters
- from ansible.modules.network.f5.bigip_monitor_http import ModuleManager
- from ansible.modules.network.f5.bigip_monitor_http import ArgumentSpec
-
- from ansible.module_utils.network.f5.common import F5ModuleError
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- parent='parent',
- send='this is a send string',
- receive='this is a receive string',
- ip='10.10.10.10',
- port=80,
- interval=20,
- timeout=30,
- time_until_up=60,
- partition='Common'
- )
-
- p = Parameters(params=args)
- assert p.name == 'foo'
- assert p.parent == '/Common/parent'
- assert p.send == 'this is a send string'
- assert p.receive == 'this is a receive string'
- assert p.ip == '10.10.10.10'
- assert p.type == 'http'
- assert p.port == 80
- assert p.destination == '10.10.10.10:80'
- assert p.interval == 20
- assert p.timeout == 30
- assert p.time_until_up == 60
-
- def test_module_parameters_ints_as_strings(self):
- args = dict(
- name='foo',
- parent='parent',
- send='this is a send string',
- receive='this is a receive string',
- ip='10.10.10.10',
- port='80',
- interval='20',
- timeout='30',
- time_until_up='60',
- partition='Common'
- )
-
- p = Parameters(params=args)
- assert p.name == 'foo'
- assert p.parent == '/Common/parent'
- assert p.send == 'this is a send string'
- assert p.receive == 'this is a receive string'
- assert p.ip == '10.10.10.10'
- assert p.type == 'http'
- assert p.port == 80
- assert p.destination == '10.10.10.10:80'
- assert p.interval == 20
- assert p.timeout == 30
- assert p.time_until_up == 60
-
- def test_api_parameters(self):
- args = dict(
- name='foo',
- defaultsFrom='/Common/parent',
- send='this is a send string',
- recv='this is a receive string',
- destination='10.10.10.10:80',
- interval=20,
- timeout=30,
- timeUntilUp=60
- )
-
- p = Parameters(params=args)
- assert p.name == 'foo'
- assert p.parent == '/Common/parent'
- assert p.send == 'this is a send string'
- assert p.receive == 'this is a receive string'
- assert p.ip == '10.10.10.10'
- assert p.type == 'http'
- assert p.port == 80
- assert p.destination == '10.10.10.10:80'
- assert p.interval == 20
- assert p.timeout == 30
- assert p.time_until_up == 60
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create_monitor(self, *args):
- set_module_args(dict(
- name='foo',
- parent='parent',
- send='this is a send string',
- receive='this is a receive string',
- ip='10.10.10.10',
- port=80,
- interval=20,
- timeout=30,
- time_until_up=60,
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['parent'] == '/Common/parent'
-
- def test_create_monitor_idempotent(self, *args):
- set_module_args(dict(
- name='asdf',
- parent='http',
- send='GET /\\r\\n',
- receive='hello world',
- ip='1.1.1.1',
- port=389,
- interval=5,
- timeout=16,
- time_until_up=0,
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = Parameters(params=load_fixture('load_ltm_monitor_http.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
-
- assert results['changed'] is False
-
- def test_update_port(self, *args):
- set_module_args(dict(
- name='asdf',
- port=800,
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = Parameters(params=load_fixture('load_ltm_monitor_http.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['port'] == 800
-
- def test_update_interval(self, *args):
- set_module_args(dict(
- name='foo',
- interval=10,
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = Parameters(params=load_fixture('load_ltm_monitor_http.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['interval'] == 10
-
- def test_update_interval_larger_than_existing_timeout(self, *args):
- set_module_args(dict(
- name='asdf',
- interval=30,
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = Parameters(params=load_fixture('load_ltm_monitor_http.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
-
- with pytest.raises(F5ModuleError) as ex:
- mm.exec_module()
-
- assert "must be less than" in str(ex.value)
-
- def test_update_interval_larger_than_new_timeout(self, *args):
- set_module_args(dict(
- name='asdf',
- interval=10,
- timeout=5,
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = Parameters(params=load_fixture('load_ltm_monitor_http.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
-
- with pytest.raises(F5ModuleError) as ex:
- mm.exec_module()
-
- assert "must be less than" in str(ex.value)
-
- def test_update_send(self, *args):
- set_module_args(dict(
- name='asdf',
- send='this is another send string',
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = Parameters(params=load_fixture('load_ltm_monitor_http.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['send'] == 'this is another send string'
-
- def test_update_receive(self, *args):
- set_module_args(dict(
- name='asdf',
- receive='this is another receive string',
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = Parameters(params=load_fixture('load_ltm_monitor_http.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['receive'] == 'this is another receive string'
-
- def test_update_timeout(self, *args):
- set_module_args(dict(
- name='asdf',
- timeout=300,
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = Parameters(params=load_fixture('load_ltm_monitor_http.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['timeout'] == 300
-
- def test_update_time_until_up(self, *args):
- set_module_args(dict(
- name='asdf',
- time_until_up=300,
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = Parameters(params=load_fixture('load_ltm_monitor_http.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['time_until_up'] == 300
diff --git a/test/units/modules/network/f5/test_bigip_monitor_https.py b/test/units/modules/network/f5/test_bigip_monitor_https.py
deleted file mode 100644
index 214bec50f5..0000000000
--- a/test/units/modules/network/f5/test_bigip_monitor_https.py
+++ /dev/null
@@ -1,452 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_monitor_https import Parameters
- from library.modules.bigip_monitor_https import ModuleManager
- from library.modules.bigip_monitor_https import ArgumentSpec
-
- from library.module_utils.network.f5.common import F5ModuleError
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_monitor_https import Parameters
- from ansible.modules.network.f5.bigip_monitor_https import ModuleManager
- from ansible.modules.network.f5.bigip_monitor_https import ArgumentSpec
-
- from ansible.module_utils.network.f5.common import F5ModuleError
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- parent='parent',
- send='this is a send string',
- receive='this is a receive string',
- ip='10.10.10.10',
- port=80,
- interval=20,
- timeout=30,
- time_until_up=60,
- partition='Common'
- )
-
- p = Parameters(params=args)
- assert p.name == 'foo'
- assert p.parent == '/Common/parent'
- assert p.send == 'this is a send string'
- assert p.receive == 'this is a receive string'
- assert p.ip == '10.10.10.10'
- assert p.type == 'https'
- assert p.port == 80
- assert p.destination == '10.10.10.10:80'
- assert p.interval == 20
- assert p.timeout == 30
- assert p.time_until_up == 60
-
- def test_module_parameters_ints_as_strings(self):
- args = dict(
- name='foo',
- parent='parent',
- send='this is a send string',
- receive='this is a receive string',
- ip='10.10.10.10',
- port='80',
- interval='20',
- timeout='30',
- time_until_up='60',
- partition='Common'
- )
-
- p = Parameters(params=args)
- assert p.name == 'foo'
- assert p.parent == '/Common/parent'
- assert p.send == 'this is a send string'
- assert p.receive == 'this is a receive string'
- assert p.ip == '10.10.10.10'
- assert p.type == 'https'
- assert p.port == 80
- assert p.destination == '10.10.10.10:80'
- assert p.interval == 20
- assert p.timeout == 30
- assert p.time_until_up == 60
-
- def test_api_parameters(self):
- args = dict(
- name='foo',
- defaultsFrom='/Common/parent',
- send='this is a send string',
- recv='this is a receive string',
- destination='10.10.10.10:80',
- interval=20,
- timeout=30,
- timeUntilUp=60
- )
-
- p = Parameters(params=args)
- assert p.name == 'foo'
- assert p.parent == '/Common/parent'
- assert p.send == 'this is a send string'
- assert p.receive == 'this is a receive string'
- assert p.ip == '10.10.10.10'
- assert p.type == 'https'
- assert p.port == 80
- assert p.destination == '10.10.10.10:80'
- assert p.interval == 20
- assert p.timeout == 30
- assert p.time_until_up == 60
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create_monitor(self, *args):
- set_module_args(dict(
- name='foo',
- parent='parent',
- send='this is a send string',
- receive='this is a receive string',
- ip='10.10.10.10',
- port=80,
- interval=20,
- timeout=30,
- time_until_up=60,
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['parent'] == '/Common/parent'
-
- def test_create_monitor_idempotent(self, *args):
- set_module_args(dict(
- name='asdf',
- parent='https',
- send='GET /\\r\\n',
- receive='hello world',
- ip='1.1.1.1',
- port=389,
- interval=5,
- timeout=16,
- time_until_up=0,
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = Parameters(params=load_fixture('load_ltm_monitor_https.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
-
- assert results['changed'] is False
-
- def test_update_port(self, *args):
- set_module_args(dict(
- name='asdf',
- port=800,
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = Parameters(params=load_fixture('load_ltm_monitor_https.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['port'] == 800
-
- def test_update_interval(self, *args):
- set_module_args(dict(
- name='foo',
- interval=10,
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = Parameters(params=load_fixture('load_ltm_monitor_https.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['interval'] == 10
-
- def test_update_interval_larger_than_existing_timeout(self, *args):
- set_module_args(dict(
- name='asdf',
- interval=30,
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = Parameters(params=load_fixture('load_ltm_monitor_https.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
-
- with pytest.raises(F5ModuleError) as ex:
- mm.exec_module()
-
- assert "must be less than" in str(ex.value)
-
- def test_update_interval_larger_than_new_timeout(self, *args):
- set_module_args(dict(
- name='asdf',
- interval=10,
- timeout=5,
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = Parameters(params=load_fixture('load_ltm_monitor_https.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
-
- with pytest.raises(F5ModuleError) as ex:
- mm.exec_module()
-
- assert "must be less than" in str(ex.value)
-
- def test_update_send(self, *args):
- set_module_args(dict(
- name='asdf',
- send='this is another send string',
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = Parameters(params=load_fixture('load_ltm_monitor_https.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['send'] == 'this is another send string'
-
- def test_update_receive(self, *args):
- set_module_args(dict(
- name='asdf',
- receive='this is another receive string',
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = Parameters(params=load_fixture('load_ltm_monitor_https.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['receive'] == 'this is another receive string'
-
- def test_update_timeout(self, *args):
- set_module_args(dict(
- name='asdf',
- timeout=300,
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = Parameters(params=load_fixture('load_ltm_monitor_https.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['timeout'] == 300
-
- def test_update_time_until_up(self, *args):
- set_module_args(dict(
- name='asdf',
- time_until_up=300,
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = Parameters(params=load_fixture('load_ltm_monitor_https.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['time_until_up'] == 300
diff --git a/test/units/modules/network/f5/test_bigip_monitor_ldap.py b/test/units/modules/network/f5/test_bigip_monitor_ldap.py
deleted file mode 100644
index a81fd34d96..0000000000
--- a/test/units/modules/network/f5/test_bigip_monitor_ldap.py
+++ /dev/null
@@ -1,110 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2018, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_monitor_ldap import ApiParameters
- from library.modules.bigip_monitor_ldap import ModuleManager
- from library.modules.bigip_monitor_ldap import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_monitor_ldap import ApiParameters
- from ansible.modules.network.f5.bigip_monitor_ldap import ModuleManager
- from ansible.modules.network.f5.bigip_monitor_ldap import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- parent='/Common/ldap',
- interval=10,
- time_until_up=0,
- timeout=30,
- )
-
- p = ApiParameters(params=args)
- assert p.parent == '/Common/ldap'
- assert p.interval == 10
- assert p.time_until_up == 0
- assert p.timeout == 30
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create(self, *args):
- set_module_args(dict(
- name='foo',
- parent='/Common/ldap',
- interval=20,
- timeout=30,
- time_until_up=60,
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_monitor_snmp_dca.py b/test/units/modules/network/f5/test_bigip_monitor_snmp_dca.py
deleted file mode 100644
index 8c45bddbb7..0000000000
--- a/test/units/modules/network/f5/test_bigip_monitor_snmp_dca.py
+++ /dev/null
@@ -1,175 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_monitor_snmp_dca import Parameters
- from library.modules.bigip_monitor_snmp_dca import ModuleManager
- from library.modules.bigip_monitor_snmp_dca import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_monitor_snmp_dca import Parameters
- from ansible.modules.network.f5.bigip_monitor_snmp_dca import ModuleManager
- from ansible.modules.network.f5.bigip_monitor_snmp_dca import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- agent_type='UCD',
- community='public',
- cpu_coefficient='1.5',
- cpu_threshold='80',
- parent='/Common/snmp_dca',
- disk_coefficient='2.0',
- disk_threshold='90',
- interval=10,
- memory_coefficient='1.0',
- memory_threshold='70',
- time_until_up=0,
- timeout=30,
- version='v1'
- )
-
- p = Parameters(params=args)
- assert p.agent_type == 'UCD'
- assert p.community == 'public'
- assert p.cpu_coefficient == 1.5
- assert p.cpu_threshold == 80
- assert p.parent == '/Common/snmp_dca'
- assert p.disk_coefficient == 2.0
- assert p.disk_threshold == 90
- assert p.interval == 10
- assert p.memory_coefficient == 1.0
- assert p.memory_threshold == 70
- assert p.time_until_up == 0
- assert p.timeout == 30
- assert p.version == 'v1'
-
- def test_api_parameters(self):
- args = dict(
- agentType='UCD',
- community='public',
- cpuCoefficient='1.5',
- cpuThreshold='80',
- defaultsFrom='/Common/snmp_dca',
- diskCoefficient='2.0',
- diskThreshold='90',
- interval=10,
- memoryCoefficient='1.0',
- memoryThreshold='70',
- timeUntilUp=0,
- timeout=30,
- apiRawValues={
- "userDefined asdasd": "{ foo }",
- "userDefined bar": "tim rupp",
- "user-defined baz-": "nia",
- "userDefined userDefined": "23234"
- },
- version='v1'
- )
-
- p = Parameters(params=args)
- assert p.agent_type == 'UCD'
- assert p.community == 'public'
- assert p.cpu_coefficient == 1.5
- assert p.cpu_threshold == 80
- assert p.parent == '/Common/snmp_dca'
- assert p.disk_coefficient == 2.0
- assert p.disk_threshold == 90
- assert p.interval == 10
- assert p.memory_coefficient == 1.0
- assert p.memory_threshold == 70
- assert p.time_until_up == 0
- assert p.timeout == 30
- assert p.version == 'v1'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create(self, *args):
- set_module_args(dict(
- name='foo',
- agent_type='UCD',
- community='public',
- cpu_coefficient='1.5',
- cpu_threshold='80',
- parent='/Common/snmp_dca',
- disk_coefficient='2.0',
- disk_threshold='90',
- memory_coefficient='1.0',
- memory_threshold='70',
- version='v1',
- interval=20,
- timeout=30,
- time_until_up=60,
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_monitor_tcp.py b/test/units/modules/network/f5/test_bigip_monitor_tcp.py
deleted file mode 100644
index de64d3ef42..0000000000
--- a/test/units/modules/network/f5/test_bigip_monitor_tcp.py
+++ /dev/null
@@ -1,454 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_monitor_tcp import Parameters
- from library.modules.bigip_monitor_tcp import ModuleManager
- from library.modules.bigip_monitor_tcp import ArgumentSpec
-
- from library.module_utils.network.f5.common import F5ModuleError
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_monitor_tcp import Parameters
- from ansible.modules.network.f5.bigip_monitor_tcp import ModuleManager
- from ansible.modules.network.f5.bigip_monitor_tcp import ArgumentSpec
-
- from ansible.module_utils.network.f5.common import F5ModuleError
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- parent='parent',
- send='this is a send string',
- receive='this is a receive string',
- ip='10.10.10.10',
- type='TTYPE_TCP',
- port=80,
- interval=20,
- timeout=30,
- time_until_up=60,
- partition='Common'
- )
-
- p = Parameters(params=args)
- assert p.name == 'foo'
- assert p.parent == '/Common/parent'
- assert p.send == 'this is a send string'
- assert p.receive == 'this is a receive string'
- assert p.ip == '10.10.10.10'
- assert p.type == 'tcp'
- assert p.port == 80
- assert p.destination == '10.10.10.10:80'
- assert p.interval == 20
- assert p.timeout == 30
- assert p.time_until_up == 60
-
- def test_module_parameters_ints_as_strings(self):
- args = dict(
- name='foo',
- parent='parent',
- send='this is a send string',
- receive='this is a receive string',
- ip='10.10.10.10',
- type='TTYPE_TCP',
- port='80',
- interval='20',
- timeout='30',
- time_until_up='60',
- partition='Common'
- )
-
- p = Parameters(params=args)
- assert p.name == 'foo'
- assert p.parent == '/Common/parent'
- assert p.send == 'this is a send string'
- assert p.receive == 'this is a receive string'
- assert p.ip == '10.10.10.10'
- assert p.type == 'tcp'
- assert p.port == 80
- assert p.destination == '10.10.10.10:80'
- assert p.interval == 20
- assert p.timeout == 30
- assert p.time_until_up == 60
-
- def test_api_parameters(self):
- args = dict(
- name='foo',
- defaultsFrom='/Common/parent',
- send='this is a send string',
- recv='this is a receive string',
- destination='10.10.10.10:80',
- interval=20,
- timeout=30,
- timeUntilUp=60
- )
-
- p = Parameters(params=args)
- assert p.name == 'foo'
- assert p.parent == '/Common/parent'
- assert p.send == 'this is a send string'
- assert p.receive == 'this is a receive string'
- assert p.ip == '10.10.10.10'
- assert p.type == 'tcp'
- assert p.port == 80
- assert p.destination == '10.10.10.10:80'
- assert p.interval == 20
- assert p.timeout == 30
- assert p.time_until_up == 60
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create_monitor(self, *args):
- set_module_args(dict(
- name='foo',
- parent='parent',
- send='this is a send string',
- receive='this is a receive string',
- ip='10.10.10.10',
- port=80,
- interval=20,
- timeout=30,
- time_until_up=60,
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['parent'] == '/Common/parent'
-
- def test_create_monitor_idempotent(self, *args):
- set_module_args(dict(
- name='foo',
- parent='tcp',
- send='this is a send string',
- receive='this is a receive string',
- ip='10.10.10.10',
- port=80,
- interval=20,
- timeout=30,
- time_until_up=60,
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = Parameters(params=load_fixture('load_ltm_monitor_tcp.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
-
- assert results['changed'] is False
-
- def test_update_port(self, *args):
- set_module_args(dict(
- name='foo',
- port=800,
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = Parameters(params=load_fixture('load_ltm_monitor_tcp.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['port'] == 800
-
- def test_update_interval(self, *args):
- set_module_args(dict(
- name='foo',
- interval=10,
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = Parameters(params=load_fixture('load_ltm_monitor_tcp.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['interval'] == 10
-
- def test_update_interval_larger_than_existing_timeout(self, *args):
- set_module_args(dict(
- name='foo',
- interval=30,
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = Parameters(params=load_fixture('load_ltm_monitor_tcp.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
-
- with pytest.raises(F5ModuleError) as ex:
- mm.exec_module()
-
- assert "must be less than" in str(ex.value)
-
- def test_update_interval_larger_than_new_timeout(self, *args):
- set_module_args(dict(
- name='foo',
- interval=10,
- timeout=5,
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = Parameters(params=load_fixture('load_ltm_monitor_tcp.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
-
- with pytest.raises(F5ModuleError) as ex:
- mm.exec_module()
-
- assert "must be less than" in str(ex.value)
-
- def test_update_send(self, *args):
- set_module_args(dict(
- name='foo',
- send='this is another send string',
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = Parameters(params=load_fixture('load_ltm_monitor_tcp.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['send'] == 'this is another send string'
-
- def test_update_receive(self, *args):
- set_module_args(dict(
- name='foo',
- receive='this is another receive string',
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = Parameters(params=load_fixture('load_ltm_monitor_tcp.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['receive'] == 'this is another receive string'
-
- def test_update_timeout(self, *args):
- set_module_args(dict(
- name='foo',
- timeout=300,
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = Parameters(params=load_fixture('load_ltm_monitor_tcp.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['timeout'] == 300
-
- def test_update_time_until_up(self, *args):
- set_module_args(dict(
- name='foo',
- time_until_up=300,
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = Parameters(params=load_fixture('load_ltm_monitor_tcp.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['time_until_up'] == 300
diff --git a/test/units/modules/network/f5/test_bigip_monitor_tcp_echo.py b/test/units/modules/network/f5/test_bigip_monitor_tcp_echo.py
deleted file mode 100644
index a33a1c495b..0000000000
--- a/test/units/modules/network/f5/test_bigip_monitor_tcp_echo.py
+++ /dev/null
@@ -1,331 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_monitor_tcp_echo import Parameters
- from library.modules.bigip_monitor_tcp_echo import ModuleManager
- from library.modules.bigip_monitor_tcp_echo import ArgumentSpec
-
- from library.module_utils.network.f5.common import F5ModuleError
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_monitor_tcp_echo import Parameters
- from ansible.modules.network.f5.bigip_monitor_tcp_echo import ModuleManager
- from ansible.modules.network.f5.bigip_monitor_tcp_echo import ArgumentSpec
-
- from ansible.module_utils.network.f5.common import F5ModuleError
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- parent='parent',
- ip='10.10.10.10',
- interval=20,
- timeout=30,
- time_until_up=60,
- partition='Common'
- )
-
- p = Parameters(params=args)
- assert p.name == 'foo'
- assert p.parent == '/Common/parent'
- assert p.ip == '10.10.10.10'
- assert p.type == 'tcp_echo'
- assert p.destination == '10.10.10.10'
- assert p.interval == 20
- assert p.timeout == 30
- assert p.time_until_up == 60
-
- def test_module_parameters_ints_as_strings(self):
- args = dict(
- name='foo',
- parent='parent',
- ip='10.10.10.10',
- interval='20',
- timeout='30',
- time_until_up='60',
- partition='Common'
- )
-
- p = Parameters(params=args)
- assert p.name == 'foo'
- assert p.parent == '/Common/parent'
- assert p.ip == '10.10.10.10'
- assert p.type == 'tcp_echo'
- assert p.destination == '10.10.10.10'
- assert p.interval == 20
- assert p.timeout == 30
- assert p.time_until_up == 60
-
- def test_api_parameters(self):
- args = dict(
- name='foo',
- defaultsFrom='/Common/parent',
- destination='10.10.10.10',
- interval=20,
- timeout=30,
- timeUntilUp=60
- )
-
- p = Parameters(params=args)
- assert p.name == 'foo'
- assert p.parent == '/Common/parent'
- assert p.ip == '10.10.10.10'
- assert p.type == 'tcp_echo'
- assert p.destination == '10.10.10.10'
- assert p.interval == 20
- assert p.timeout == 30
- assert p.time_until_up == 60
-
-
-class TestManagerEcho(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create_monitor(self, *args):
- set_module_args(dict(
- name='foo',
- ip='10.10.10.10',
- interval=20,
- timeout=30,
- time_until_up=60,
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
-
- def test_create_monitor_idempotent(self, *args):
- set_module_args(dict(
- name='foo',
- ip='10.10.10.10',
- interval=20,
- timeout=30,
- time_until_up=60,
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = Parameters(params=load_fixture('load_ltm_monitor_tcp_echo.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
-
- assert results['changed'] is False
-
- def test_update_interval(self, *args):
- set_module_args(dict(
- name='foo',
- interval=10,
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = Parameters(params=load_fixture('load_ltm_monitor_tcp_echo.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['interval'] == 10
-
- def test_update_interval_larger_than_existing_timeout(self, *args):
- set_module_args(dict(
- name='foo',
- interval=30,
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = Parameters(params=load_fixture('load_ltm_monitor_tcp_echo.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
-
- with pytest.raises(F5ModuleError) as ex:
- mm.exec_module()
-
- assert "must be less than" in str(ex.value)
-
- def test_update_interval_larger_than_new_timeout(self, *args):
- set_module_args(dict(
- name='foo',
- interval=10,
- timeout=5,
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = Parameters(params=load_fixture('load_ltm_monitor_tcp_echo.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
-
- with pytest.raises(F5ModuleError) as ex:
- mm.exec_module()
-
- assert "must be less than" in str(ex.value)
-
- def test_update_timeout(self, *args):
- set_module_args(dict(
- name='foo',
- timeout=300,
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = Parameters(params=load_fixture('load_ltm_monitor_tcp_echo.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
- assert results['changed'] is True
- assert results['timeout'] == 300
-
- def test_update_time_until_up(self, *args):
- set_module_args(dict(
- name='foo',
- time_until_up=300,
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = Parameters(params=load_fixture('load_ltm_monitor_tcp_echo.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['time_until_up'] == 300
diff --git a/test/units/modules/network/f5/test_bigip_monitor_tcp_half_open.py b/test/units/modules/network/f5/test_bigip_monitor_tcp_half_open.py
deleted file mode 100644
index b009ddbca5..0000000000
--- a/test/units/modules/network/f5/test_bigip_monitor_tcp_half_open.py
+++ /dev/null
@@ -1,338 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_monitor_tcp_half_open import Parameters
- from library.modules.bigip_monitor_tcp_half_open import ModuleManager
- from library.modules.bigip_monitor_tcp_half_open import ArgumentSpec
-
- from library.module_utils.network.f5.common import F5ModuleError
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_monitor_tcp_half_open import Parameters
- from ansible.modules.network.f5.bigip_monitor_tcp_half_open import ModuleManager
- from ansible.modules.network.f5.bigip_monitor_tcp_half_open import ArgumentSpec
-
- from ansible.module_utils.network.f5.common import F5ModuleError
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- parent='parent',
- ip='10.10.10.10',
- port=80,
- interval=20,
- timeout=30,
- time_until_up=60,
- partition='Common'
- )
-
- p = Parameters(params=args)
- assert p.name == 'foo'
- assert p.parent == '/Common/parent'
- assert p.ip == '10.10.10.10'
- assert p.port == 80
- assert p.type == 'tcp_half_open'
- assert p.destination == '10.10.10.10:80'
- assert p.interval == 20
- assert p.timeout == 30
- assert p.time_until_up == 60
-
- def test_module_parameters_ints_as_strings(self):
- args = dict(
- name='foo',
- parent='parent',
- ip='10.10.10.10',
- port=80,
- interval='20',
- timeout='30',
- time_until_up='60',
- partition='Common'
- )
-
- p = Parameters(params=args)
- assert p.name == 'foo'
- assert p.parent == '/Common/parent'
- assert p.ip == '10.10.10.10'
- assert p.port == 80
- assert p.type == 'tcp_half_open'
- assert p.destination == '10.10.10.10:80'
- assert p.interval == 20
- assert p.timeout == 30
- assert p.time_until_up == 60
-
- def test_api_parameters(self):
- args = dict(
- name='foo',
- defaultsFrom='/Common/parent',
- destination='10.10.10.10:80',
- interval=20,
- timeout=30,
- timeUntilUp=60
- )
-
- p = Parameters(params=args)
- assert p.name == 'foo'
- assert p.parent == '/Common/parent'
- assert p.ip == '10.10.10.10'
- assert p.port == 80
- assert p.type == 'tcp_half_open'
- assert p.destination == '10.10.10.10:80'
- assert p.interval == 20
- assert p.timeout == 30
- assert p.time_until_up == 60
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create_monitor(self, *args):
- set_module_args(dict(
- name='foo',
- ip='10.10.10.10',
- port=80,
- interval=20,
- timeout=30,
- time_until_up=60,
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
-
- def test_create_monitor_idempotent(self, *args):
- set_module_args(dict(
- name='foo',
- ip='10.10.10.10',
- port=80,
- interval=20,
- timeout=30,
- time_until_up=60,
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = Parameters(params=load_fixture('load_ltm_monitor_tcp_half_open.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
-
- assert results['changed'] is False
-
- def test_update_interval(self, *args):
- set_module_args(dict(
- name='foo',
- interval=10,
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = Parameters(params=load_fixture('load_ltm_monitor_tcp_half_open.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['interval'] == 10
-
- def test_update_interval_larger_than_existing_timeout(self, *args):
- set_module_args(dict(
- name='foo',
- interval=30,
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = Parameters(params=load_fixture('load_ltm_monitor_tcp_half_open.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
-
- with pytest.raises(F5ModuleError) as ex:
- mm.exec_module()
-
- assert "must be less than" in str(ex.value)
-
- def test_update_interval_larger_than_new_timeout(self, *args):
- set_module_args(dict(
- name='foo',
- interval=10,
- timeout=5,
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = Parameters(params=load_fixture('load_ltm_monitor_tcp_half_open.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
-
- with pytest.raises(F5ModuleError) as ex:
- mm.exec_module()
-
- assert "must be less than" in str(ex.value)
-
- def test_update_timeout(self, *args):
- set_module_args(dict(
- name='foo',
- timeout=300,
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = Parameters(params=load_fixture('load_ltm_monitor_tcp_half_open.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
- assert results['changed'] is True
- assert results['timeout'] == 300
-
- def test_update_time_until_up(self, *args):
- set_module_args(dict(
- name='foo',
- time_until_up=300,
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = Parameters(params=load_fixture('load_ltm_monitor_tcp_half_open.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['time_until_up'] == 300
diff --git a/test/units/modules/network/f5/test_bigip_monitor_udp.py b/test/units/modules/network/f5/test_bigip_monitor_udp.py
deleted file mode 100644
index 71eb245f37..0000000000
--- a/test/units/modules/network/f5/test_bigip_monitor_udp.py
+++ /dev/null
@@ -1,452 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2017, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_monitor_udp import Parameters
- from library.modules.bigip_monitor_udp import ModuleManager
- from library.modules.bigip_monitor_udp import ArgumentSpec
-
- from library.module_utils.network.f5.common import F5ModuleError
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_monitor_udp import Parameters
- from ansible.modules.network.f5.bigip_monitor_udp import ModuleManager
- from ansible.modules.network.f5.bigip_monitor_udp import ArgumentSpec
-
- from ansible.module_utils.network.f5.common import F5ModuleError
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- parent='parent',
- send='this is a send string',
- receive='this is a receive string',
- ip='10.10.10.10',
- port=80,
- interval=20,
- timeout=30,
- time_until_up=60,
- partition='Common'
- )
-
- p = Parameters(params=args)
- assert p.name == 'foo'
- assert p.parent == '/Common/parent'
- assert p.send == 'this is a send string'
- assert p.receive == 'this is a receive string'
- assert p.ip == '10.10.10.10'
- assert p.type == 'udp'
- assert p.port == 80
- assert p.destination == '10.10.10.10:80'
- assert p.interval == 20
- assert p.timeout == 30
- assert p.time_until_up == 60
-
- def test_module_parameters_ints_as_strings(self):
- args = dict(
- name='foo',
- parent='parent',
- send='this is a send string',
- receive='this is a receive string',
- ip='10.10.10.10',
- port='80',
- interval='20',
- timeout='30',
- time_until_up='60',
- partition='Common'
- )
-
- p = Parameters(params=args)
- assert p.name == 'foo'
- assert p.parent == '/Common/parent'
- assert p.send == 'this is a send string'
- assert p.receive == 'this is a receive string'
- assert p.ip == '10.10.10.10'
- assert p.type == 'udp'
- assert p.port == 80
- assert p.destination == '10.10.10.10:80'
- assert p.interval == 20
- assert p.timeout == 30
- assert p.time_until_up == 60
-
- def test_api_parameters(self):
- args = dict(
- name='foo',
- defaultsFrom='/Common/parent',
- send='this is a send string',
- recv='this is a receive string',
- destination='10.10.10.10:80',
- interval=20,
- timeout=30,
- timeUntilUp=60
- )
-
- p = Parameters(params=args)
- assert p.name == 'foo'
- assert p.parent == '/Common/parent'
- assert p.send == 'this is a send string'
- assert p.receive == 'this is a receive string'
- assert p.ip == '10.10.10.10'
- assert p.type == 'udp'
- assert p.port == 80
- assert p.destination == '10.10.10.10:80'
- assert p.interval == 20
- assert p.timeout == 30
- assert p.time_until_up == 60
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create_monitor(self, *args):
- set_module_args(dict(
- name='foo',
- parent='parent',
- send='this is a send string',
- receive='this is a receive string',
- ip='10.10.10.10',
- port=80,
- interval=20,
- timeout=30,
- time_until_up=60,
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['parent'] == '/Common/parent'
-
- def test_create_monitor_idempotent(self, *args):
- set_module_args(dict(
- name='asdf',
- parent='udp',
- send='default send string',
- receive='hello world',
- ip='1.1.1.1',
- port=389,
- interval=5,
- timeout=16,
- time_until_up=0,
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = Parameters(params=load_fixture('load_ltm_monitor_udp.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
-
- assert results['changed'] is False
-
- def test_update_port(self, *args):
- set_module_args(dict(
- name='asdf',
- port=800,
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = Parameters(params=load_fixture('load_ltm_monitor_udp.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['port'] == 800
-
- def test_update_interval(self, *args):
- set_module_args(dict(
- name='foo',
- interval=10,
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = Parameters(params=load_fixture('load_ltm_monitor_udp.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['interval'] == 10
-
- def test_update_interval_larger_than_existing_timeout(self, *args):
- set_module_args(dict(
- name='asdf',
- interval=30,
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = Parameters(params=load_fixture('load_ltm_monitor_udp.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
-
- with pytest.raises(F5ModuleError) as ex:
- mm.exec_module()
-
- assert "must be less than" in str(ex.value)
-
- def test_update_interval_larger_than_new_timeout(self, *args):
- set_module_args(dict(
- name='asdf',
- interval=10,
- timeout=5,
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = Parameters(params=load_fixture('load_ltm_monitor_udp.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
-
- with pytest.raises(F5ModuleError) as ex:
- mm.exec_module()
-
- assert "must be less than" in str(ex.value)
-
- def test_update_send(self, *args):
- set_module_args(dict(
- name='asdf',
- send='this is another send string',
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = Parameters(params=load_fixture('load_ltm_monitor_udp.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['send'] == 'this is another send string'
-
- def test_update_receive(self, *args):
- set_module_args(dict(
- name='asdf',
- receive='this is another receive string',
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = Parameters(params=load_fixture('load_ltm_monitor_udp.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['receive'] == 'this is another receive string'
-
- def test_update_timeout(self, *args):
- set_module_args(dict(
- name='asdf',
- timeout=300,
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = Parameters(params=load_fixture('load_ltm_monitor_udp.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['timeout'] == 300
-
- def test_update_time_until_up(self, *args):
- set_module_args(dict(
- name='asdf',
- time_until_up=300,
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = Parameters(params=load_fixture('load_ltm_monitor_udp.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['time_until_up'] == 300
diff --git a/test/units/modules/network/f5/test_bigip_node.py b/test/units/modules/network/f5/test_bigip_node.py
deleted file mode 100644
index 4592471e8f..0000000000
--- a/test/units/modules/network/f5/test_bigip_node.py
+++ /dev/null
@@ -1,250 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_node import Parameters
- from library.modules.bigip_node import ApiParameters
- from library.modules.bigip_node import ModuleManager
- from library.modules.bigip_node import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_node import Parameters
- from ansible.modules.network.f5.bigip_node import ApiParameters
- from ansible.modules.network.f5.bigip_node import ModuleManager
- from ansible.modules.network.f5.bigip_node import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- host='10.20.30.40',
- name='10.20.30.40'
- )
-
- p = Parameters(params=args)
- assert p.host == '10.20.30.40'
- assert p.name == '10.20.30.40'
-
- def test_api_parameters(self):
- args = load_fixture('load_ltm_node_1.json')
-
- p = Parameters(params=args)
- assert p.address == '1.2.3.4'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create_node(self, *args):
- set_module_args(dict(
- host='10.20.30.40',
- name='mytestserver',
- monitors=[
- '/Common/icmp'
- ],
- partition='Common',
- state='present',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
-
- def test_create_node_idempotent(self, *args):
- set_module_args(dict(
- host='10.20.30.40',
- name='mytestserver',
- monitors=[
- '/Common/icmp'
- ],
- partition='Common',
- state='present',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = ApiParameters(params=load_fixture('load_ltm_node_3.json'))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(side_effect=[True, True])
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
-
- assert results['changed'] is False
-
- def test_create_node_fqdn(self, *args):
- set_module_args(dict(
- fqdn='foo.bar',
- name='mytestserver',
- monitors=[
- '/Common/icmp'
- ],
- partition='Common',
- state='present',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
-
- def test_update_node_fqdn_up_interval(self, *args):
- set_module_args(dict(
- fqdn='foo.bar',
- fqdn_up_interval=100,
- name='mytestserver',
- monitors=[
- '/Common/icmp'
- ],
- partition='Common',
- state='present',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = ApiParameters(params=load_fixture('load_ltm_node_2.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(side_effect=[True, True])
- mm.update_on_device = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
-
- def test_update_node_fqdn_up_interval_idempotent(self, *args):
- set_module_args(dict(
- fqdn='google.com',
- fqdn_up_interval=3600,
- name='fqdn-foo',
- monitors=[
- 'icmp',
- 'tcp_echo'
- ],
- partition='Common',
- state='present',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = ApiParameters(params=load_fixture('load_ltm_node_2.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(side_effect=[True, True])
- mm.update_on_device = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
-
- assert results['changed'] is not True
diff --git a/test/units/modules/network/f5/test_bigip_partition.py b/test/units/modules/network/f5/test_bigip_partition.py
deleted file mode 100644
index b12f87ae1e..0000000000
--- a/test/units/modules/network/f5/test_bigip_partition.py
+++ /dev/null
@@ -1,214 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_partition import ApiParameters
- from library.modules.bigip_partition import ModuleParameters
- from library.modules.bigip_partition import ModuleManager
- from library.modules.bigip_partition import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_partition import ApiParameters
- from ansible.modules.network.f5.bigip_partition import ModuleParameters
- from ansible.modules.network.f5.bigip_partition import ModuleManager
- from ansible.modules.network.f5.bigip_partition import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- description='my description',
- route_domain=0
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.description == 'my description'
- assert p.route_domain == 0
-
- def test_module_parameters_string_domain(self):
- args = dict(
- name='foo',
- route_domain='0'
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.route_domain == 0
-
- def test_api_parameters(self):
- args = dict(
- name='foo',
- description='my description',
- defaultRouteDomain=1
- )
-
- p = ApiParameters(params=args)
- assert p.name == 'foo'
- assert p.description == 'my description'
- assert p.route_domain == 1
-
-
-class TestManagerEcho(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create_partition(self, *args):
- set_module_args(dict(
- name='foo',
- description='my description',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
- mm.update_folder_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
-
- def test_create_partition_idempotent(self, *args):
- set_module_args(dict(
- name='foo',
- description='my description',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = ApiParameters(params=load_fixture('load_tm_auth_partition.json'))
- current.update({'folder_description': 'my description'})
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
-
- assert results['changed'] is False
-
- def test_update_description(self, *args):
- set_module_args(dict(
- name='foo',
- description='another description',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = ApiParameters(params=load_fixture('load_tm_auth_partition.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
- mm.update_folder_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['description'] == 'another description'
-
- def test_update_route_domain(self, *args):
- set_module_args(dict(
- name='foo',
- route_domain=1,
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = ApiParameters(params=load_fixture('load_tm_auth_partition.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['route_domain'] == 1
diff --git a/test/units/modules/network/f5/test_bigip_password_policy.py b/test/units/modules/network/f5/test_bigip_password_policy.py
deleted file mode 100644
index bf7ff8b935..0000000000
--- a/test/units/modules/network/f5/test_bigip_password_policy.py
+++ /dev/null
@@ -1,152 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2018, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_password_policy import ApiParameters
- from library.modules.bigip_password_policy import ModuleParameters
- from library.modules.bigip_password_policy import ModuleManager
- from library.modules.bigip_password_policy import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
- from test.units.compat.mock import patch
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_password_policy import ApiParameters
- from ansible.modules.network.f5.bigip_password_policy import ModuleParameters
- from ansible.modules.network.f5.bigip_password_policy import ModuleManager
- from ansible.modules.network.f5.bigip_password_policy import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
- from units.compat.mock import patch
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- expiration_warning=7,
- max_duration=99999,
- max_login_failures=0,
- min_duration=0,
- min_length=6,
- password_memory=0,
- policy_enforcement=False,
- required_lowercase=0,
- required_numeric=0,
- required_special=0,
- required_uppercase=0,
- )
-
- p = ModuleParameters(params=args)
- assert p.expiration_warning == 7
- assert p.max_duration == 99999
- assert p.max_login_failures == 0
- assert p.min_duration == 0
- assert p.password_memory == 0
- assert p.policy_enforcement == 'no'
- assert p.required_lowercase == 0
- assert p.required_numeric == 0
- assert p.required_special == 0
- assert p.required_uppercase == 0
-
- def test_api_parameters(self):
- args = load_fixture('load_tm_auth_password_policy_1.json')
-
- p = ApiParameters(params=args)
- assert p.expiration_warning == 7
- assert p.max_duration == 99999
- assert p.max_login_failures == 0
- assert p.min_duration == 0
- assert p.password_memory == 0
- assert p.policy_enforcement == 'no'
- assert p.required_lowercase == 0
- assert p.required_numeric == 0
- assert p.required_special == 0
- assert p.required_uppercase == 0
-
-
-@patch('ansible.module_utils.f5_utils.AnsibleF5Client._get_mgmt_root',
- return_value=True)
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create_partition(self, *args):
- set_module_args(dict(
- expiration_warning=7,
- max_duration=9999,
- max_login_failures=0,
- min_duration=0,
- min_length=6,
- password_memory=0,
- policy_enforcement='no',
- required_lowercase=0,
- required_numeric=0,
- required_special=0,
- required_uppercase=0,
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = ApiParameters(params=load_fixture('load_tm_auth_password_policy_1.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(side_effect=[False, True])
- mm.update_on_device = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_policy.py b/test/units/modules/network/f5/test_bigip_policy.py
deleted file mode 100644
index e59b2facf9..0000000000
--- a/test/units/modules/network/f5/test_bigip_policy.py
+++ /dev/null
@@ -1,158 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_policy import Parameters
- from library.modules.bigip_policy import ModuleManager
- from library.modules.bigip_policy import SimpleManager
- from library.modules.bigip_policy import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_policy import Parameters
- from ansible.modules.network.f5.bigip_policy import ModuleManager
- from ansible.modules.network.f5.bigip_policy import SimpleManager
- from ansible.modules.network.f5.bigip_policy import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters_none_strategy(self):
- args = dict(
- name='foo',
- description='asdf asdf asdf',
- )
- p = Parameters(params=args)
- assert p.name == 'foo'
- assert p.description == 'asdf asdf asdf'
- assert p.strategy is None
-
- def test_module_parameters_with_strategy_no_partition(self):
- args = dict(
- name='foo',
- description='asdf asdf asdf',
- strategy='foo',
- partition='Common'
- )
- p = Parameters(params=args)
- assert p.name == 'foo'
- assert p.description == 'asdf asdf asdf'
- assert p.strategy == '/Common/foo'
-
- def test_module_parameters_with_strategy_partition(self):
- args = dict(
- name='foo',
- description='asdf asdf asdf',
- strategy='/Common/foo',
- partition='Common'
- )
- p = Parameters(params=args)
- assert p.name == 'foo'
- assert p.description == 'asdf asdf asdf'
- assert p.strategy == '/Common/foo'
-
- def test_module_parameters_with_strategy_different_partition(self):
- args = dict(
- name='foo',
- description='asdf asdf asdf',
- strategy='/Foo/bar',
- partition='Common'
- )
- p = Parameters(params=args)
- assert p.name == 'foo'
- assert p.description == 'asdf asdf asdf'
- assert p.strategy == '/Foo/bar'
-
- def test_api_parameters(self):
- args = dict(
- name='foo',
- description='asdf asdf asdf',
- strategy='/Common/asdf'
- )
- p = Parameters(params=args)
- assert p.name == 'foo'
- assert p.description == 'asdf asdf asdf'
- assert p.strategy == '/Common/asdf'
-
-
-class TestSimpleTrafficPolicyManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create_policy(self, *args):
- set_module_args(dict(
- name="Policy-Foo",
- state='present',
- strategy='best',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- tm = SimpleManager(module=module, params=module.params)
- tm.exists = Mock(return_value=False)
- tm.create_on_device = Mock(return_value=True)
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.version_is_less_than_12 = Mock(return_value=True)
- mm.get_manager = Mock(return_value=tm)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_policy_rule.py b/test/units/modules/network/f5/test_bigip_policy_rule.py
deleted file mode 100644
index 70ef8dc235..0000000000
--- a/test/units/modules/network/f5/test_bigip_policy_rule.py
+++ /dev/null
@@ -1,198 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_policy_rule import ModuleParameters
- from library.modules.bigip_policy_rule import ApiParameters
- from library.modules.bigip_policy_rule import ModuleManager
- from library.modules.bigip_policy_rule import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_policy_rule import ModuleParameters
- from ansible.modules.network.f5.bigip_policy_rule import ApiParameters
- from ansible.modules.network.f5.bigip_policy_rule import ModuleManager
- from ansible.modules.network.f5.bigip_policy_rule import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters_policy(self):
- args = dict(
- policy='Policy - Foo'
- )
- p = ModuleParameters(params=args)
- assert p.policy == 'Policy - Foo'
-
- def test_module_parameters_actions(self):
- args = dict(
- actions=[
- dict(
- type='forward',
- pool='pool-svrs'
- )
- ]
- )
- p = ModuleParameters(params=args)
- assert len(p.actions) == 1
-
- def test_module_parameters_conditions(self):
- args = dict(
- conditions=[
- dict(
- type='http_uri',
- path_begins_with_any=['/ABC']
- )
- ]
- )
- p = ModuleParameters(params=args)
- assert len(p.conditions) == 1
-
- def test_module_parameters_name(self):
- args = dict(
- name='rule1'
- )
- p = ModuleParameters(params=args)
- assert p.name == 'rule1'
-
- def test_api_parameters(self):
- args = load_fixture('load_ltm_policy_draft_rule_http-uri_forward.json')
- p = ApiParameters(params=args)
- assert len(p.actions) == 1
- assert len(p.conditions) == 1
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create_policy_rule_no_existence(self, *args):
- set_module_args(dict(
- name="rule1",
- state='present',
- policy='policy1',
- actions=[
- dict(
- type='forward',
- pool='baz'
- )
- ],
- conditions=[
- dict(
- type='http_uri',
- path_begins_with_any=['/ABC']
- )
- ],
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=False)
- mm.publish_on_device = Mock(return_value=True)
- mm.draft_exists = Mock(return_value=False)
- mm._create_existing_policy_draft_on_device = Mock(return_value=True)
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
-
- def test_create_policy_rule_idempotent_check(self, *args):
- set_module_args(dict(
- name="rule1",
- state='present',
- policy='policy1',
- actions=[
- dict(
- type='forward',
- pool='baz'
- )
- ],
- conditions=[
- dict(
- type='http_uri',
- path_begins_with_any=['/ABC']
- )
- ],
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = ApiParameters(params=load_fixture('load_ltm_policy_draft_rule_http-uri_forward.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.draft_exists = Mock(return_value=False)
- mm.update_on_device = Mock(return_value=True)
- mm._create_existing_policy_draft_on_device = Mock(return_value=True)
- mm.publish_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_pool.py b/test/units/modules/network/f5/test_bigip_pool.py
deleted file mode 100644
index de74f24cd5..0000000000
--- a/test/units/modules/network/f5/test_bigip_pool.py
+++ /dev/null
@@ -1,546 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_pool import ApiParameters
- from library.modules.bigip_pool import ModuleParameters
- from library.modules.bigip_pool import ModuleManager
- from library.modules.bigip_pool import ArgumentSpec
-
- from library.module_utils.network.f5.common import F5ModuleError
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_pool import ApiParameters
- from ansible.modules.network.f5.bigip_pool import ModuleParameters
- from ansible.modules.network.f5.bigip_pool import ModuleManager
- from ansible.modules.network.f5.bigip_pool import ArgumentSpec
-
- from ansible.module_utils.network.f5.common import F5ModuleError
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- monitor_type='m_of_n',
- monitors=['/Common/Fake', '/Common/Fake2'],
- quorum=1,
- slow_ramp_time=200,
- reselect_tries=5,
- service_down_action='drop'
- )
-
- p = ModuleParameters(params=args)
- assert p.monitor_type == 'm_of_n'
- assert p.quorum == 1
- assert p.monitors == 'min 1 of { /Common/Fake /Common/Fake2 }'
- assert p.slow_ramp_time == 200
- assert p.reselect_tries == 5
- assert p.service_down_action == 'drop'
-
- def test_api_parameters(self):
- args = dict(
- monitor="/Common/Fake and /Common/Fake2 ",
- slowRampTime=200,
- reselectTries=5,
- serviceDownAction='drop'
- )
-
- p = ApiParameters(params=args)
- assert p.monitors == '/Common/Fake and /Common/Fake2'
- assert p.slow_ramp_time == 200
- assert p.reselect_tries == 5
- assert p.service_down_action == 'drop'
-
- def test_unknown_module_lb_method(self):
- args = dict(
- lb_method='obscure_hyphenated_fake_method',
- )
- with pytest.raises(F5ModuleError):
- p = ModuleParameters(params=args)
- assert p.lb_method == 'foo'
-
- def test_unknown_api_lb_method(self):
- args = dict(
- loadBalancingMode='obscure_hypenated_fake_method'
- )
- with pytest.raises(F5ModuleError):
- p = ApiParameters(params=args)
- assert p.lb_method == 'foo'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create_pool(self, *args):
- set_module_args(dict(
- pool='fake_pool',
- description='fakepool',
- service_down_action='drop',
- lb_method='round-robin',
- partition='Common',
- slow_ramp_time=10,
- reselect_tries=1,
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive,
- required_one_of=self.spec.required_one_of
- )
-
- mm = ModuleManager(module=module)
- mm.create_on_device = Mock(return_value=True)
- mm.exists = Mock(return_value=False)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['name'] == 'fake_pool'
- assert results['description'] == 'fakepool'
- assert results['service_down_action'] == 'drop'
- assert results['lb_method'] == 'round-robin'
- assert results['slow_ramp_time'] == 10
- assert results['reselect_tries'] == 1
-
- def test_create_pool_monitor_type_missing(self, *args):
- set_module_args(dict(
- pool='fake_pool',
- lb_method='round-robin',
- partition='Common',
- monitors=['/Common/tcp', '/Common/http'],
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive,
- required_one_of=self.spec.required_one_of
- )
-
- mm = ModuleManager(module=module)
- mm.create_on_device = Mock(return_value=True)
- mm.exists = Mock(return_value=False)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['name'] == 'fake_pool'
- assert results['monitors'] == ['/Common/http', '/Common/tcp']
- assert results['monitor_type'] == 'and_list'
-
- def test_create_pool_monitors_missing(self, *args):
- set_module_args(dict(
- pool='fake_pool',
- lb_method='round-robin',
- partition='Common',
- monitor_type='and_list',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive,
- required_one_of=self.spec.required_one_of
- )
-
- mm = ModuleManager(module=module)
- mm.create_on_device = Mock(return_value=True)
- mm.exists = Mock(return_value=False)
-
- msg = "The 'monitors' parameter cannot be empty when " \
- "'monitor_type' parameter is specified"
- with pytest.raises(F5ModuleError) as err:
- mm.exec_module()
-
- assert str(err.value) == msg
-
- def test_create_pool_quorum_missing(self, *args):
- set_module_args(dict(
- pool='fake_pool',
- lb_method='round-robin',
- partition='Common',
- monitor_type='m_of_n',
- monitors=['/Common/tcp', '/Common/http'],
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive,
- required_one_of=self.spec.required_one_of
- )
-
- mm = ModuleManager(module=module)
- mm.create_on_device = Mock(return_value=True)
- mm.exists = Mock(return_value=False)
-
- msg = "Quorum value must be specified with monitor_type 'm_of_n'."
- with pytest.raises(F5ModuleError) as err:
- mm.exec_module()
-
- assert str(err.value) == msg
-
- def test_create_pool_monitor_and_list(self, *args):
- set_module_args(dict(
- pool='fake_pool',
- partition='Common',
- monitor_type='and_list',
- monitors=['/Common/tcp', '/Common/http'],
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive,
- required_one_of=self.spec.required_one_of
- )
-
- mm = ModuleManager(module=module)
- mm.create_on_device = Mock(return_value=True)
- mm.exists = Mock(return_value=False)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['name'] == 'fake_pool'
- assert results['monitors'] == ['/Common/http', '/Common/tcp']
- assert results['monitor_type'] == 'and_list'
-
- def test_create_pool_monitor_m_of_n(self, *args):
- set_module_args(dict(
- pool='fake_pool',
- partition='Common',
- monitor_type='m_of_n',
- quorum=1,
- monitors=['/Common/tcp', '/Common/http'],
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive,
- required_one_of=self.spec.required_one_of
- )
-
- mm = ModuleManager(module=module)
- mm.create_on_device = Mock(return_value=True)
- mm.exists = Mock(return_value=False)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['name'] == 'fake_pool'
- assert results['monitors'] == ['/Common/http', '/Common/tcp']
- assert results['monitor_type'] == 'm_of_n'
-
- def test_update_monitors(self, *args):
- set_module_args(dict(
- name='test_pool',
- partition='Common',
- monitor_type='and_list',
- monitors=['/Common/http', '/Common/tcp'],
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive,
- required_one_of=self.spec.required_one_of
- )
-
- mm = ModuleManager(module=module)
-
- current = ApiParameters(params=load_fixture('load_ltm_pool.json'))
-
- mm.update_on_device = Mock(return_value=True)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['monitor_type'] == 'and_list'
-
- def test_create_pool_monitor_and_list_no_partition(self, *args):
- set_module_args(dict(
- pool='fake_pool',
- monitor_type='and_list',
- monitors=['tcp', 'http'],
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive,
- required_one_of=self.spec.required_one_of
- )
-
- mm = ModuleManager(module=module)
- mm.create_on_device = Mock(return_value=True)
- mm.exists = Mock(return_value=False)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['name'] == 'fake_pool'
- assert results['monitors'] == ['/Common/http', '/Common/tcp']
- assert results['monitor_type'] == 'and_list'
-
- def test_create_pool_monitor_m_of_n_no_partition(self, *args):
- set_module_args(dict(
- pool='fake_pool',
- monitor_type='m_of_n',
- quorum=1,
- monitors=['tcp', 'http'],
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive,
- required_one_of=self.spec.required_one_of
- )
-
- mm = ModuleManager(module=module)
- mm.create_on_device = Mock(return_value=True)
- mm.exists = Mock(return_value=False)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['name'] == 'fake_pool'
- assert results['monitors'] == ['/Common/http', '/Common/tcp']
- assert results['monitor_type'] == 'm_of_n'
-
- def test_create_pool_monitor_and_list_custom_partition(self, *args):
- set_module_args(dict(
- pool='fake_pool',
- partition='Testing',
- monitor_type='and_list',
- monitors=['tcp', 'http'],
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive,
- required_one_of=self.spec.required_one_of
- )
-
- mm = ModuleManager(module=module)
- mm.create_on_device = Mock(return_value=True)
- mm.exists = Mock(return_value=False)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['name'] == 'fake_pool'
- assert results['monitors'] == ['/Testing/http', '/Testing/tcp']
- assert results['monitor_type'] == 'and_list'
-
- def test_create_pool_monitor_m_of_n_custom_partition(self, *args):
- set_module_args(dict(
- pool='fake_pool',
- partition='Testing',
- monitor_type='m_of_n',
- quorum=1,
- monitors=['tcp', 'http'],
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive,
- required_one_of=self.spec.required_one_of
- )
-
- mm = ModuleManager(module=module)
- mm.create_on_device = Mock(return_value=True)
- mm.exists = Mock(return_value=False)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['name'] == 'fake_pool'
- assert results['monitors'] == ['/Testing/http', '/Testing/tcp']
- assert results['monitor_type'] == 'm_of_n'
-
- def test_create_pool_with_metadata(self, *args):
- set_module_args(dict(
- pool='fake_pool',
- metadata=dict(ansible='2.4'),
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive,
- required_one_of=self.spec.required_one_of
- )
-
- mm = ModuleManager(module=module)
- mm.create_on_device = Mock(return_value=True)
- mm.exists = Mock(return_value=False)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['name'] == 'fake_pool'
- assert 'metadata' in results
- assert 'ansible' in results['metadata']
- assert results['metadata']['ansible'] == '2.4'
-
- def test_create_aggregate_pools(self, *args):
- set_module_args(dict(
- aggregate=[
- dict(
- pool='fake_pool',
- description='fakepool',
- service_down_action='drop',
- lb_method='round-robin',
- partition='Common',
- slow_ramp_time=10,
- reselect_tries=1,
- ),
- dict(
- pool='fake_pool2',
- description='fakepool2',
- service_down_action='drop',
- lb_method='predictive-node',
- partition='Common',
- slow_ramp_time=110,
- reselect_tries=2,
- )
- ],
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive,
- required_one_of=self.spec.required_one_of
- )
-
- mm = ModuleManager(module=module)
- mm.create_on_device = Mock(return_value=True)
- mm.exists = Mock(return_value=False)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_pool_member.py b/test/units/modules/network/f5/test_bigip_pool_member.py
deleted file mode 100644
index acc4984e0d..0000000000
--- a/test/units/modules/network/f5/test_bigip_pool_member.py
+++ /dev/null
@@ -1,256 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_pool_member import ModuleParameters
- from library.modules.bigip_pool_member import ApiParameters
- from library.modules.bigip_pool_member import NodeApiParameters
- from library.modules.bigip_pool_member import ModuleManager
- from library.modules.bigip_pool_member import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_pool_member import ModuleParameters
- from ansible.modules.network.f5.bigip_pool_member import ApiParameters
- from ansible.modules.network.f5.bigip_pool_member import NodeApiParameters
- from ansible.modules.network.f5.bigip_pool_member import ModuleManager
- from ansible.modules.network.f5.bigip_pool_member import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- pool='my-pool',
- address='1.2.3.4',
- fqdn='fqdn.foo.bar',
- name='my-name',
- port=2345,
- connection_limit=100,
- description='this is a description',
- rate_limit=70,
- ratio=20,
- preserve_node=False,
- priority_group=10,
- state='present',
- partition='Common',
- fqdn_auto_populate=False,
- reuse_nodes=False,
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'my-name'
-
- def test_api_parameters(self):
- args = load_fixture('load_net_node_with_fqdn.json')
- p = ApiParameters(params=args)
- assert p.state == 'present'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create_reuse_node_with_name(self, *args):
- # Configure the arguments that would be sent to the Ansible module
- set_module_args(dict(
- pool='my-pool',
- fqdn='foo.bar.com',
- port=2345,
- state='present',
- partition='Common',
- reuse_nodes=True,
- provider=dict(
- password='password',
- server='localhost',
- user='admin'
- )
- ))
-
- current_node = NodeApiParameters(params=load_fixture('load_net_node_with_fqdn.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive,
- required_one_of=self.spec.required_one_of,
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(return_value=False)
- mm.create_on_device = Mock(return_value=True)
- mm.read_current_node_from_device = Mock(return_value=current_node)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['fqdn_auto_populate'] is True
- assert results['fqdn'] == 'foo.bar.com'
- assert results['state'] == 'present'
-
- def test_create_reuse_node_with_ipv4_address(self, *args):
- # Configure the arguments that would be sent to the Ansible module
- set_module_args(dict(
- pool='my-pool',
- address='7.3.67.8',
- port=2345,
- state='present',
- partition='Common',
- reuse_nodes=True,
- provider=dict(
- password='password',
- server='localhost',
- user='admin'
- )
- ))
-
- current_node = NodeApiParameters(params=load_fixture('load_net_node_with_ipv4_address.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive,
- required_one_of=self.spec.required_one_of,
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(return_value=False)
- mm.create_on_device = Mock(return_value=True)
- mm.read_current_node_from_device = Mock(return_value=current_node)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['fqdn_auto_populate'] is False
- assert results['address'] == '7.3.67.8'
- assert results['state'] == 'present'
-
- def test_create_reuse_node_with_fqdn_auto_populate(self, *args):
- # Configure the arguments that would be sent to the Ansible module
- set_module_args(dict(
- pool='my-pool',
- fqdn='foo.bar.com',
- port=2345,
- state='present',
- partition='Common',
- reuse_nodes=True,
- fqdn_auto_populate=False,
- provider=dict(
- password='password',
- server='localhost',
- user='admin'
- )
- ))
-
- current_node = NodeApiParameters(params=load_fixture('load_net_node_with_fqdn.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive,
- required_one_of=self.spec.required_one_of,
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(return_value=False)
- mm.create_on_device = Mock(return_value=True)
- mm.read_current_node_from_device = Mock(return_value=current_node)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['fqdn_auto_populate'] is True
- assert results['fqdn'] == 'foo.bar.com'
- assert results['state'] == 'present'
-
- def test_create_aggregate_pool_members(self, *args):
- set_module_args(dict(
- pool='fake_pool',
- aggregate=[
- dict(
- name='my-name',
- host="1.1.1.1",
- port=1234,
- state='present',
- partition='Common',
- reuse_nodes=True,
- fqdn_auto_populate=False,
- ),
- dict(
- name='my-name2',
- fqdn='google.com',
- port=2423,
- state='present',
- partition='Common',
- fqdn_auto_populate=True,
- reuse_nodes=True,
- )
- ],
- provider=dict(
- password='password',
- server='localhost',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive,
- required_one_of=self.spec.required_one_of,
- )
-
- mm = ModuleManager(module=module)
- mm.create_on_device = Mock(return_value=True)
- mm.exists = Mock(return_value=False)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_profile_analytics.py b/test/units/modules/network/f5/test_bigip_profile_analytics.py
deleted file mode 100644
index 0e81c75e64..0000000000
--- a/test/units/modules/network/f5/test_bigip_profile_analytics.py
+++ /dev/null
@@ -1,121 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2018, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_profile_analytics import ApiParameters
- from library.modules.bigip_profile_analytics import ModuleParameters
- from library.modules.bigip_profile_analytics import ModuleManager
- from library.modules.bigip_profile_analytics import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_profile_analytics import ApiParameters
- from ansible.modules.network.f5.bigip_profile_analytics import ModuleParameters
- from ansible.modules.network.f5.bigip_profile_analytics import ModuleManager
- from ansible.modules.network.f5.bigip_profile_analytics import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- parent='bar',
- description='foo',
- collect_geo=True,
- collect_ip=True,
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.parent == '/Common/bar'
- assert p.description == 'foo'
- assert p.collect_geo == 'yes'
- assert p.collect_ip == 'yes'
-
- def test_api_parameters(self):
- args = load_fixture('load_ltm_profile_analytics_1.json')
- p = ApiParameters(params=args)
- assert p.name == 'foo'
- assert p.collect_geo == 'no'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create(self, *args):
- # Configure the arguments that would be sent to the Ansible module
- set_module_args(dict(
- name='foo',
- parent='bar',
- description='foo',
- collect_geo=True,
- collect_ip=True,
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(return_value=False)
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_profile_client_ssl.py b/test/units/modules/network/f5/test_bigip_profile_client_ssl.py
deleted file mode 100644
index 18c1f27002..0000000000
--- a/test/units/modules/network/f5/test_bigip_profile_client_ssl.py
+++ /dev/null
@@ -1,129 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_profile_client_ssl import ModuleParameters
- from library.modules.bigip_profile_client_ssl import ApiParameters
- from library.modules.bigip_profile_client_ssl import ModuleManager
- from library.modules.bigip_profile_client_ssl import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_profile_client_ssl import ModuleParameters
- from ansible.modules.network.f5.bigip_profile_client_ssl import ApiParameters
- from ansible.modules.network.f5.bigip_profile_client_ssl import ModuleManager
- from ansible.modules.network.f5.bigip_profile_client_ssl import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- parent='bar',
- ciphers='!SSLv3:!SSLv2:ECDHE+AES-GCM+SHA256:ECDHE-RSA-AES128-CBC-SHA',
- cert_key_chain=[
- dict(
- cert='bigip_ssl_cert1',
- key='bigip_ssl_key1',
- chain='bigip_ssl_cert1'
- )
- ]
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.parent == '/Common/bar'
- assert p.ciphers == '!SSLv3:!SSLv2:ECDHE+AES-GCM+SHA256:ECDHE-RSA-AES128-CBC-SHA'
-
- def test_api_parameters(self):
- args = load_fixture('load_ltm_profile_clientssl.json')
- p = ApiParameters(params=args)
- assert p.name == 'foo'
- assert p.ciphers == 'DEFAULT'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create(self, *args):
- # Configure the arguments that would be sent to the Ansible module
- set_module_args(dict(
- name='foo',
- parent='bar',
- ciphers='!SSLv3:!SSLv2:ECDHE+AES-GCM+SHA256:ECDHE-RSA-AES128-CBC-SHA',
- cert_key_chain=[
- dict(
- cert='bigip_ssl_cert1',
- key='bigip_ssl_key1',
- chain='bigip_ssl_cert1'
- )
- ],
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(return_value=False)
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_profile_dns.py b/test/units/modules/network/f5/test_bigip_profile_dns.py
deleted file mode 100644
index 4932002fa4..0000000000
--- a/test/units/modules/network/f5/test_bigip_profile_dns.py
+++ /dev/null
@@ -1,147 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2017, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_profile_dns import ApiParameters
- from library.modules.bigip_profile_dns import ModuleParameters
- from library.modules.bigip_profile_dns import ModuleManager
- from library.modules.bigip_profile_dns import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_profile_dns import ApiParameters
- from ansible.modules.network.f5.bigip_profile_dns import ModuleParameters
- from ansible.modules.network.f5.bigip_profile_dns import ModuleManager
- from ansible.modules.network.f5.bigip_profile_dns import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- parent='bar',
- enable_dns_express=True,
- enable_zone_transfer=True,
- enable_dnssec=True,
- enable_gtm=True,
- process_recursion_desired=True,
- use_local_bind=True,
- enable_dns_firewall=True,
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.parent == '/Common/bar'
- assert p.enable_dns_express is True
- assert p.enable_zone_transfer is True
- assert p.enable_dnssec is True
- assert p.enable_gtm is True
- assert p.process_recursion_desired is True
- assert p.use_local_bind is True
- assert p.enable_dns_firewall is True
-
- def test_api_parameters(self):
- args = load_fixture('load_ltm_profile_dns_1.json')
- p = ApiParameters(params=args)
- assert p.name == 'foo'
- assert p.parent == '/Common/dns'
- assert p.enable_dns_express is False
- assert p.enable_zone_transfer is True
- assert p.enable_dnssec is False
- assert p.enable_gtm is False
- assert p.process_recursion_desired is True
- assert p.use_local_bind is False
- assert p.enable_dns_firewall is True
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create(self, *args):
- # Configure the arguments that would be sent to the Ansible module
- set_module_args(dict(
- name='foo',
- parent='bar',
- enable_dns_express=True,
- enable_zone_transfer=True,
- enable_dnssec=True,
- enable_gtm=True,
- process_recursion_desired=True,
- use_local_bind=True,
- enable_dns_firewall=True,
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(return_value=False)
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['enable_dns_express'] == 'yes'
- assert results['enable_zone_transfer'] == 'yes'
- assert results['enable_dnssec'] == 'yes'
- assert results['enable_gtm'] == 'yes'
- assert results['process_recursion_desired'] == 'yes'
- assert results['use_local_bind'] == 'yes'
- assert results['enable_dns_firewall'] == 'yes'
diff --git a/test/units/modules/network/f5/test_bigip_profile_fastl4.py b/test/units/modules/network/f5/test_bigip_profile_fastl4.py
deleted file mode 100644
index 8425053d91..0000000000
--- a/test/units/modules/network/f5/test_bigip_profile_fastl4.py
+++ /dev/null
@@ -1,178 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2018, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_profile_fastl4 import ApiParameters
- from library.modules.bigip_profile_fastl4 import ModuleParameters
- from library.modules.bigip_profile_fastl4 import ModuleManager
- from library.modules.bigip_profile_fastl4 import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_profile_fastl4 import ApiParameters
- from ansible.modules.network.f5.bigip_profile_fastl4 import ModuleParameters
- from ansible.modules.network.f5.bigip_profile_fastl4 import ModuleManager
- from ansible.modules.network.f5.bigip_profile_fastl4 import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- parent='bar',
- idle_timeout=100,
- client_timeout=101,
- description='description one',
- explicit_flow_migration=False,
- ip_df_mode='pmtu',
- ip_tos_to_client=102,
- ip_tos_to_server=103,
- ip_ttl_v4=104,
- ip_ttl_v6=105,
- ip_ttl_mode='proxy',
- keep_alive_interval=106,
- late_binding=True,
- link_qos_to_client=7,
- link_qos_to_server=6,
- loose_close=False,
- loose_initialization=True,
- mss_override=4,
- reassemble_fragments=True,
- receive_window_size=109,
- reset_on_timeout=False,
- rtt_from_client=True,
- rtt_from_server=False,
- server_sack=True,
- server_timestamp=False,
- syn_cookie_mss=110,
- tcp_close_timeout=111,
- tcp_generate_isn=True,
- tcp_handshake_timeout=112,
- tcp_strip_sack=False,
- tcp_time_wait_timeout=113,
- tcp_timestamp_mode='rewrite',
- tcp_wscale_mode='strip',
- timeout_recovery='fallback',
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.parent == '/Common/bar'
- assert p.description == 'description one'
- assert p.idle_timeout == 100
- assert p.client_timeout == 101
- assert p.explicit_flow_migration == 'no'
- assert p.ip_df_mode == 'pmtu'
- assert p.ip_tos_to_client == 102
- assert p.ip_tos_to_server == 103
- assert p.ip_ttl_v4 == 104
- assert p.ip_ttl_v6 == 105
- assert p.ip_ttl_mode == 'proxy'
- assert p.keep_alive_interval == 106
- assert p.late_binding == 'yes'
- assert p.link_qos_to_client == 7
- assert p.link_qos_to_server == 6
- assert p.loose_close == 'no'
- assert p.loose_initialization == 'yes'
- assert p.mss_override == 4
- assert p.reassemble_fragments == 'yes'
- assert p.receive_window_size == 109
- assert p.reset_on_timeout == 'no'
- assert p.rtt_from_client == 'yes'
- assert p.rtt_from_server == 'no'
- assert p.server_sack == 'yes'
- assert p.server_timestamp == 'no'
- assert p.syn_cookie_mss == 110
- assert p.tcp_close_timeout == 111
- assert p.tcp_generate_isn == 'yes'
- assert p.tcp_handshake_timeout == 112
- assert p.tcp_strip_sack == 'no'
- assert p.tcp_time_wait_timeout == 113
- assert p.tcp_timestamp_mode == 'rewrite'
- assert p.tcp_wscale_mode == 'strip'
- assert p.timeout_recovery == 'fallback'
-
- def test_api_parameters(self):
- args = load_fixture('load_ltm_fastl4_profile_1.json')
- p = ApiParameters(params=args)
- assert p.name == 'fastL4'
- assert p.description is None
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create(self, *args):
- # Configure the arguments that would be sent to the Ansible module
- set_module_args(dict(
- name='foo',
- parent='bar',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(return_value=False)
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_profile_http.py b/test/units/modules/network/f5/test_bigip_profile_http.py
deleted file mode 100644
index a913172dc2..0000000000
--- a/test/units/modules/network/f5/test_bigip_profile_http.py
+++ /dev/null
@@ -1,127 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2018, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_profile_http import ApiParameters
- from library.modules.bigip_profile_http import ModuleParameters
- from library.modules.bigip_profile_http import ModuleManager
- from library.modules.bigip_profile_http import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_profile_http import ApiParameters
- from ansible.modules.network.f5.bigip_profile_http import ModuleParameters
- from ansible.modules.network.f5.bigip_profile_http import ModuleManager
- from ansible.modules.network.f5.bigip_profile_http import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- parent='bar',
- description='This is a Test',
- proxy_type='transparent',
- insert_xforwarded_for=True,
- redirect_rewrite='all',
- encrypt_cookies=['FooCookie'],
- encrypt_cookie_secret='12345'
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.parent == '/Common/bar'
- assert p.description == 'This is a Test'
- assert p.proxy_type == 'transparent'
- assert p.insert_xforwarded_for == 'enabled'
- assert p.redirect_rewrite == 'all'
- assert p.encrypt_cookies == ['FooCookie']
- assert p.encrypt_cookie_secret == '12345'
-
- def test_api_parameters(self):
- args = load_fixture('load_ltm_http_profile_1.json')
- p = ApiParameters(params=args)
- assert p.name == 'http'
- assert p.insert_xforwarded_for == 'disabled'
- assert p.description == 'none'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create(self, *args):
- # Configure the arguments that would be sent to the Ansible module
- set_module_args(dict(
- name='foo',
- insert_xforwarded_for='yes',
- parent='bar',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(return_value=False)
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['insert_xforwarded_for'] == 'yes'
diff --git a/test/units/modules/network/f5/test_bigip_profile_http2.py b/test/units/modules/network/f5/test_bigip_profile_http2.py
deleted file mode 100644
index 6ae6ea6332..0000000000
--- a/test/units/modules/network/f5/test_bigip_profile_http2.py
+++ /dev/null
@@ -1,130 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2018, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_profile_http2 import ApiParameters
- from library.modules.bigip_profile_http2 import ModuleParameters
- from library.modules.bigip_profile_http2 import ModuleManager
- from library.modules.bigip_profile_http2 import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_profile_http2 import ApiParameters
- from ansible.modules.network.f5.bigip_profile_http2 import ModuleParameters
- from ansible.modules.network.f5.bigip_profile_http2 import ModuleManager
- from ansible.modules.network.f5.bigip_profile_http2 import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- parent='bar',
- description='This is a Test',
- streams=20,
- enforce_tls_requirements=True,
- frame_size=1024,
- activation_modes=['always'],
- insert_header=True,
- insert_header_name='FOO'
-
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.parent == '/Common/bar'
- assert p.description == 'This is a Test'
- assert p.streams == 20
- assert p.enforce_tls_requirements == 'enabled'
- assert p.frame_size == 1024
- assert p.activation_modes == ['always']
- assert p.insert_header == 'enabled'
- assert p.insert_header_name == 'FOO'
-
- def test_api_parameters(self):
- args = load_fixture('load_ltm_http2_profile.json')
- p = ApiParameters(params=args)
- assert p.name == 'test'
- assert p.streams == 10
- assert p.enforce_tls_requirements == 'enabled'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create(self, *args):
- # Configure the arguments that would be sent to the Ansible module
- set_module_args(dict(
- name='foo',
- enforce_tls_requirements='yes',
- parent='bar',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(return_value=False)
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['enforce_tls_requirements'] == 'yes'
diff --git a/test/units/modules/network/f5/test_bigip_profile_http_compression.py b/test/units/modules/network/f5/test_bigip_profile_http_compression.py
deleted file mode 100644
index f3d2da3ed7..0000000000
--- a/test/units/modules/network/f5/test_bigip_profile_http_compression.py
+++ /dev/null
@@ -1,129 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2018, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_profile_http_compression import ApiParameters
- from library.modules.bigip_profile_http_compression import ModuleParameters
- from library.modules.bigip_profile_http_compression import ModuleManager
- from library.modules.bigip_profile_http_compression import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_profile_http_compression import ApiParameters
- from ansible.modules.network.f5.bigip_profile_http_compression import ModuleParameters
- from ansible.modules.network.f5.bigip_profile_http_compression import ModuleManager
- from ansible.modules.network.f5.bigip_profile_http_compression import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- parent='bar',
- description='description1',
- buffer_size=1024,
- gzip_memory_level=64,
- gzip_level=2,
- gzip_window_size=128
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.parent == '/Common/bar'
- assert p.description == 'description1'
- assert p.buffer_size == 1024
- assert p.gzip_memory_level == 64
- assert p.gzip_level == 2
- assert p.gzip_window_size == 128
-
- def test_api_parameters(self):
- p = ApiParameters(params=load_fixture('load_ltm_profile_http_compression_1.json'))
- assert p.description == 'my profile'
- assert p.buffer_size == 4096
- assert p.gzip_memory_level == 8
- assert p.gzip_level == 1
- assert p.gzip_window_size == 16
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create(self, *args):
- # Configure the arguments that would be sent to the Ansible module
- set_module_args(dict(
- name='foo',
- parent='bar',
- description='description1',
- buffer_size=1024,
- gzip_memory_level=64,
- gzip_level=2,
- gzip_window_size=128,
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(return_value=False)
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_profile_oneconnect.py b/test/units/modules/network/f5/test_bigip_profile_oneconnect.py
deleted file mode 100644
index 5057459350..0000000000
--- a/test/units/modules/network/f5/test_bigip_profile_oneconnect.py
+++ /dev/null
@@ -1,124 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2017, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_profile_oneconnect import ApiParameters
- from library.modules.bigip_profile_oneconnect import ModuleParameters
- from library.modules.bigip_profile_oneconnect import ModuleManager
- from library.modules.bigip_profile_oneconnect import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_profile_oneconnect import ApiParameters
- from ansible.modules.network.f5.bigip_profile_oneconnect import ModuleParameters
- from ansible.modules.network.f5.bigip_profile_oneconnect import ModuleManager
- from ansible.modules.network.f5.bigip_profile_oneconnect import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- parent='bar',
- maximum_size=100,
- maximum_age=200,
- maximum_reuse=300,
- idle_timeout_override=20,
- limit_type='strict'
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.parent == '/Common/bar'
- assert p.maximum_size == 100
- assert p.maximum_age == 200
- assert p.maximum_reuse == 300
- assert p.idle_timeout_override == 20
- assert p.limit_type == 'strict'
-
- def test_api_parameters(self):
- args = load_fixture('load_ltm_profile_oneconnect_1.json')
- p = ApiParameters(params=args)
- assert p.name == 'oneconnect'
- assert p.maximum_reuse == 1000
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create(self, *args):
- # Configure the arguments that would be sent to the Ansible module
- set_module_args(dict(
- name='foo',
- parent='bar',
- maximum_reuse=1000,
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(return_value=False)
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['maximum_reuse'] == 1000
diff --git a/test/units/modules/network/f5/test_bigip_profile_persistence_cookie.py b/test/units/modules/network/f5/test_bigip_profile_persistence_cookie.py
deleted file mode 100644
index 2bdecf1ff6..0000000000
--- a/test/units/modules/network/f5/test_bigip_profile_persistence_cookie.py
+++ /dev/null
@@ -1,124 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2018, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_profile_persistence_cookie import ApiParameters
- from library.modules.bigip_profile_persistence_cookie import ModuleParameters
- from library.modules.bigip_profile_persistence_cookie import ModuleManager
- from library.modules.bigip_profile_persistence_cookie import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_profile_persistence_cookie import ApiParameters
- from ansible.modules.network.f5.bigip_profile_persistence_cookie import ModuleParameters
- from ansible.modules.network.f5.bigip_profile_persistence_cookie import ModuleManager
- from ansible.modules.network.f5.bigip_profile_persistence_cookie import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- parent='bar',
- match_across_services=False,
- match_across_virtuals=True,
- match_across_pools=False,
- override_connection_limit=True
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.parent == '/Common/bar'
- assert p.match_across_services == 'no'
- assert p.match_across_virtuals == 'yes'
- assert p.match_across_pools == 'no'
- assert p.override_connection_limit == 'yes'
-
- def test_api_parameters(self):
- args = load_fixture('load_ltm_profile_persistence_cookie_1.json')
- p = ApiParameters(params=args)
- assert p.name == 'cookie'
- assert p.match_across_pools == 'no'
- assert p.match_across_services == 'no'
- assert p.match_across_virtuals == 'no'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create(self, *args):
- # Configure the arguments that would be sent to the Ansible module
- set_module_args(dict(
- name='foo',
- match_across_virtuals='yes',
- parent='bar',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(return_value=False)
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['match_across_virtuals'] == 'yes'
diff --git a/test/units/modules/network/f5/test_bigip_profile_persistence_src_addr.py b/test/units/modules/network/f5/test_bigip_profile_persistence_src_addr.py
deleted file mode 100644
index c8a2683f74..0000000000
--- a/test/units/modules/network/f5/test_bigip_profile_persistence_src_addr.py
+++ /dev/null
@@ -1,128 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2017, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_profile_persistence_src_addr import ApiParameters
- from library.modules.bigip_profile_persistence_src_addr import ModuleParameters
- from library.modules.bigip_profile_persistence_src_addr import ModuleManager
- from library.modules.bigip_profile_persistence_src_addr import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_profile_persistence_src_addr import ApiParameters
- from ansible.modules.network.f5.bigip_profile_persistence_src_addr import ModuleParameters
- from ansible.modules.network.f5.bigip_profile_persistence_src_addr import ModuleManager
- from ansible.modules.network.f5.bigip_profile_persistence_src_addr import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- parent='bar',
- match_across_services=False,
- match_across_virtuals=True,
- match_across_pools=False,
- hash_algorithm='carp',
- entry_timeout=100,
- override_connection_limit=True
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.parent == '/Common/bar'
- assert p.match_across_services == 'no'
- assert p.match_across_virtuals == 'yes'
- assert p.match_across_pools == 'no'
- assert p.hash_algorithm == 'carp'
- assert p.entry_timeout == 100
- assert p.override_connection_limit == 'yes'
-
- def test_api_parameters(self):
- args = load_fixture('load_ltm_profile_persistence_src_addr_1.json')
- p = ApiParameters(params=args)
- assert p.name == 'source_addr'
- assert p.match_across_pools == 'no'
- assert p.match_across_services == 'no'
- assert p.match_across_virtuals == 'no'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create(self, *args):
- # Configure the arguments that would be sent to the Ansible module
- set_module_args(dict(
- name='foo',
- match_across_virtuals='yes',
- parent='bar',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(return_value=False)
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['match_across_virtuals'] == 'yes'
diff --git a/test/units/modules/network/f5/test_bigip_profile_server_ssl.py b/test/units/modules/network/f5/test_bigip_profile_server_ssl.py
deleted file mode 100644
index 9a51634473..0000000000
--- a/test/units/modules/network/f5/test_bigip_profile_server_ssl.py
+++ /dev/null
@@ -1,115 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2018, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_profile_server_ssl import ApiParameters
- from library.modules.bigip_profile_server_ssl import ModuleParameters
- from library.modules.bigip_profile_server_ssl import ModuleManager
- from library.modules.bigip_profile_server_ssl import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_profile_server_ssl import ApiParameters
- from ansible.modules.network.f5.bigip_profile_server_ssl import ModuleParameters
- from ansible.modules.network.f5.bigip_profile_server_ssl import ModuleManager
- from ansible.modules.network.f5.bigip_profile_server_ssl import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- server_name='foo.bar.com',
- secure_renegotiation='require',
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.server_name == 'foo.bar.com'
- assert p.secure_renegotiation == 'require'
-
- def test_api_parameters(self):
- args = load_fixture('load_ltm_profile_serverssl_1.json')
- p = ApiParameters(params=args)
- assert p.name == 'asda'
- assert p.server_name is None
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create(self, *args):
- # Configure the arguments that would be sent to the Ansible module
- set_module_args(dict(
- name='foo',
- server_name='foo.bar.com',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- required_together=self.spec.required_together
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(return_value=False)
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_profile_tcp.py b/test/units/modules/network/f5/test_bigip_profile_tcp.py
deleted file mode 100644
index a99fdb3312..0000000000
--- a/test/units/modules/network/f5/test_bigip_profile_tcp.py
+++ /dev/null
@@ -1,116 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2017, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_profile_tcp import ApiParameters
- from library.modules.bigip_profile_tcp import ModuleParameters
- from library.modules.bigip_profile_tcp import ModuleManager
- from library.modules.bigip_profile_tcp import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_profile_tcp import ApiParameters
- from ansible.modules.network.f5.bigip_profile_tcp import ModuleParameters
- from ansible.modules.network.f5.bigip_profile_tcp import ModuleManager
- from ansible.modules.network.f5.bigip_profile_tcp import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- parent='bar',
- idle_timeout='500'
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.parent == '/Common/bar'
- assert p.idle_timeout == 500
-
- def test_api_parameters(self):
- args = load_fixture('load_ltm_profile_tcp_1.json')
- p = ApiParameters(params=args)
- assert p.name == 'foo'
- assert p.idle_timeout == 300
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create(self, *args):
- # Configure the arguments that would be sent to the Ansible module
- set_module_args(dict(
- name='foo',
- parent='bar',
- idle_timeout=500,
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(return_value=False)
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['idle_timeout'] == 500
diff --git a/test/units/modules/network/f5/test_bigip_profile_udp.py b/test/units/modules/network/f5/test_bigip_profile_udp.py
deleted file mode 100644
index 0cdb30f3dc..0000000000
--- a/test/units/modules/network/f5/test_bigip_profile_udp.py
+++ /dev/null
@@ -1,119 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2017, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_profile_udp import ApiParameters
- from library.modules.bigip_profile_udp import ModuleParameters
- from library.modules.bigip_profile_udp import ModuleManager
- from library.modules.bigip_profile_udp import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_profile_udp import ApiParameters
- from ansible.modules.network.f5.bigip_profile_udp import ModuleParameters
- from ansible.modules.network.f5.bigip_profile_udp import ModuleManager
- from ansible.modules.network.f5.bigip_profile_udp import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- parent='bar',
- idle_timeout='500',
- datagram_load_balancing=False
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.parent == '/Common/bar'
- assert p.idle_timeout == 500
- assert p.datagram_load_balancing is False
-
- def test_api_parameters(self):
- args = load_fixture('load_ltm_profile_udp_1.json')
- p = ApiParameters(params=args)
- assert p.name == 'foo'
- assert p.idle_timeout == 60
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create(self, *args):
- # Configure the arguments that would be sent to the Ansible module
- set_module_args(dict(
- name='foo',
- parent='bar',
- idle_timeout=500,
- datagram_load_balancing=True,
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(return_value=False)
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['idle_timeout'] == 500
diff --git a/test/units/modules/network/f5/test_bigip_provision.py b/test/units/modules/network/f5/test_bigip_provision.py
deleted file mode 100644
index 39bf287483..0000000000
--- a/test/units/modules/network/f5/test_bigip_provision.py
+++ /dev/null
@@ -1,318 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_provision import ModuleParameters
- from library.modules.bigip_provision import ModuleManager
- from library.modules.bigip_provision import ArgumentSpec
- from library.modules.bigip_provision import ApiParameters
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
- from test.units.compat.mock import patch
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_provision import ModuleParameters
- from ansible.modules.network.f5.bigip_provision import ModuleManager
- from ansible.modules.network.f5.bigip_provision import ArgumentSpec
- from ansible.modules.network.f5.bigip_provision import ApiParameters
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
- from units.compat.mock import patch
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- module='gtm',
- level='nominal',
- )
- p = ModuleParameters(params=args)
- assert p.module == 'gtm'
- assert p.level == 'nominal'
-
- def test_api_parameters(self):
- args = load_fixture('load_sys_provision_default.json')
- p = ApiParameters(params=args)
- assert p.level == 'dedicated'
- assert p.memory == 'medium'
- assert p.module == 'urldb'
-
- def test_module_parameters_level_minimum(self):
- args = dict(
- level='minimum',
- )
- p = ModuleParameters(params=args)
- assert p.level == 'minimum'
-
- def test_module_parameters_level_nominal(self):
- args = dict(
- level='nominal',
- )
- p = ModuleParameters(params=args)
- assert p.level == 'nominal'
-
- def test_module_parameters_level_dedicated(self):
- args = dict(
- level='dedicated',
- )
- p = ModuleParameters(params=args)
- assert p.level == 'dedicated'
-
- def test_module_parameters_memory_small(self):
- args = dict(
- module='mgmt',
- memory='small',
- )
- p = ModuleParameters(params=args)
- assert p.memory == 0
-
- def test_module_parameters_memory_medium(self):
- args = dict(
- module='mgmt',
- memory='medium',
- )
- p = ModuleParameters(params=args)
- assert p.memory == 200
-
- def test_module_parameters_memory_large(self):
- args = dict(
- module='mgmt',
- memory='large',
- )
- p = ModuleParameters(params=args)
- assert p.memory == 500
-
- def test_module_parameters_memory_700(self):
- args = dict(
- module='mgmt',
- memory=700,
- )
- p = ModuleParameters(params=args)
- assert p.memory == 700
-
- def test_module_parameters_mod_afm(self):
- args = dict(
- module='afm',
- )
- p = ModuleParameters(params=args)
- assert p.module == 'afm'
-
- def test_module_parameters_mod_am(self):
- args = dict(
- module='am',
- )
- p = ModuleParameters(params=args)
- assert p.module == 'am'
-
- def test_module_parameters_mod_sam(self):
- args = dict(
- module='sam',
- )
- p = ModuleParameters(params=args)
- assert p.module == 'sam'
-
- def test_module_parameters_mod_asm(self):
- args = dict(
- module='asm',
- )
- p = ModuleParameters(params=args)
- assert p.module == 'asm'
-
- def test_module_parameters_mod_avr(self):
- args = dict(
- module='avr',
- )
- p = ModuleParameters(params=args)
- assert p.module == 'avr'
-
- def test_module_parameters_mod_fps(self):
- args = dict(
- module='fps',
- )
- p = ModuleParameters(params=args)
- assert p.module == 'fps'
-
- def test_module_parameters_mod_gtm(self):
- args = dict(
- module='gtm',
- )
- p = ModuleParameters(params=args)
- assert p.module == 'gtm'
-
- def test_module_parameters_mod_lc(self):
- args = dict(
- module='lc',
- )
- p = ModuleParameters(params=args)
- assert p.module == 'lc'
-
- def test_module_parameters_mod_pem(self):
- args = dict(
- module='pem',
- )
- p = ModuleParameters(params=args)
- assert p.module == 'pem'
-
- def test_module_parameters_mod_swg(self):
- args = dict(
- module='swg',
- )
- p = ModuleParameters(params=args)
- assert p.module == 'swg'
-
- def test_module_parameters_mod_ilx(self):
- args = dict(
- module='ilx',
- )
- p = ModuleParameters(params=args)
- assert p.module == 'ilx'
-
- def test_module_parameters_mod_apm(self):
- args = dict(
- module='apm',
- )
- p = ModuleParameters(params=args)
- assert p.module == 'apm'
-
- def test_module_parameters_mod_mgmt(self):
- args = dict(
- module='mgmt',
- )
- p = ModuleParameters(params=args)
- assert p.module == 'mgmt'
-
- def test_module_parameters_mod_sslo(self):
- args = dict(
- module='sslo',
- )
- p = ModuleParameters(params=args)
- assert p.module == 'sslo'
-
- def test_module_parameters_mod_urldb(self):
- args = dict(
- module='urldb',
- )
- p = ModuleParameters(params=args)
- assert p.module == 'urldb'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
- self.patcher1 = patch('time.sleep')
- self.patcher1.start()
-
- def tearDown(self):
- self.patcher1.stop()
-
- def test_provision_one_module_default_level(self, *args):
- # Configure the arguments that would be sent to the Ansible module
- set_module_args(dict(
- module='gtm',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- # Configure the parameters that would be returned by querying the
- # remote device
- current = ModuleParameters(
- dict(
- module='gtm',
- level='none'
- )
- )
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.update_on_device = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.reboot_device = Mock(return_value=True)
- mm.save_on_device = Mock(return_value=True)
-
- # this forced sleeping can cause these tests to take 15
- # or more seconds to run. This is deliberate.
- mm._is_mprov_running_on_device = Mock(side_effect=[True, False, False, False, False])
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['level'] == 'nominal'
-
- def test_provision_all_modules(self, *args):
- modules = [
- 'afm', 'am', 'sam', 'asm', 'avr', 'fps',
- 'gtm', 'lc', 'ltm', 'pem', 'swg', 'ilx',
- 'apm', 'mgmt', 'sslo', 'urldb',
- ]
-
- for module in modules:
- # Configure the arguments that would be sent to the Ansible module
- set_module_args(dict(
- module=module,
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- with patch('ansible.module_utils.basic.AnsibleModule.fail_json') as mo:
- AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive
- )
- mo.assert_not_called()
diff --git a/test/units/modules/network/f5/test_bigip_qkview.py b/test/units/modules/network/f5/test_bigip_qkview.py
deleted file mode 100644
index 20d744087d..0000000000
--- a/test/units/modules/network/f5/test_bigip_qkview.py
+++ /dev/null
@@ -1,178 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_qkview import Parameters
- from library.modules.bigip_qkview import ModuleManager
- from library.modules.bigip_qkview import MadmLocationManager
- from library.modules.bigip_qkview import BulkLocationManager
- from library.modules.bigip_qkview import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
- from test.units.compat.mock import patch
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_qkview import Parameters
- from ansible.modules.network.f5.bigip_qkview import ModuleManager
- from ansible.modules.network.f5.bigip_qkview import MadmLocationManager
- from ansible.modules.network.f5.bigip_qkview import BulkLocationManager
- from ansible.modules.network.f5.bigip_qkview import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
- from units.compat.mock import patch
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- filename='foo.qkview',
- asm_request_log=False,
- max_file_size=1024,
- complete_information=True,
- exclude_core=True,
- force=False,
- exclude=['audit', 'secure'],
- dest='/tmp/foo.qkview'
- )
- p = Parameters(params=args)
- assert p.filename == 'foo.qkview'
- assert p.asm_request_log is None
- assert p.max_file_size == '-s 1024'
- assert p.complete_information == '-c'
- assert p.exclude_core == '-C'
- assert p.force is False
- assert len(p.exclude_core) == 2
- assert 'audit' in p.exclude
- assert 'secure' in p.exclude
- assert p.dest == '/tmp/foo.qkview'
-
- def test_module_asm_parameter(self):
- args = dict(
- asm_request_log=True,
- )
- p = Parameters(params=args)
- assert p.asm_request_log == '-o asm-request-log'
-
-
-class TestMadmLocationManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create_qkview_default_options(self, *args):
- set_module_args(dict(
- dest='/tmp/foo.qkview',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- tm = MadmLocationManager(module=module, params=module.params)
- tm.exists = Mock(return_value=False)
- tm.execute_on_device = Mock(return_value=True)
- tm._move_qkview_to_download = Mock(return_value=True)
- tm._download_file = Mock(return_value=True)
- tm._delete_qkview = Mock(return_value=True)
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.is_version_less_than_14 = Mock(return_value=True)
- mm.get_manager = Mock(return_value=tm)
-
- with patch('os.path.exists') as mo:
- mo.return_value = True
- results = mm.exec_module()
-
- assert results['changed'] is False
-
-
-class TestBulkLocationManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create_qkview_default_options(self, *args):
- set_module_args(dict(
- dest='/tmp/foo.qkview',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- tm = BulkLocationManager(module=module, params=module.params)
- tm.exists = Mock(return_value=False)
- tm.execute_on_device = Mock(return_value=True)
- tm._move_qkview_to_download = Mock(return_value=True)
- tm._download_file = Mock(return_value=True)
- tm._delete_qkview = Mock(return_value=True)
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.is_version_less_than_14 = Mock(return_value=False)
- mm.get_manager = Mock(return_value=tm)
-
- with patch('os.path.exists') as mo:
- mo.return_value = True
- results = mm.exec_module()
-
- assert results['changed'] is False
diff --git a/test/units/modules/network/f5/test_bigip_remote_role.py b/test/units/modules/network/f5/test_bigip_remote_role.py
deleted file mode 100644
index 0967e9bcf2..0000000000
--- a/test/units/modules/network/f5/test_bigip_remote_role.py
+++ /dev/null
@@ -1,110 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2017, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_remote_role import ApiParameters
- from library.modules.bigip_remote_role import ModuleParameters
- from library.modules.bigip_remote_role import ModuleManager
- from library.modules.bigip_remote_role import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_remote_role import ApiParameters
- from ansible.modules.network.f5.bigip_remote_role import ModuleParameters
- from ansible.modules.network.f5.bigip_remote_role import ModuleManager
- from ansible.modules.network.f5.bigip_remote_role import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- terminal_access='none',
- )
-
- p = ModuleParameters(params=args)
- assert p.terminal_access == 'disable'
-
- def test_api_parameters(self):
- args = load_fixture('load_auth_remote_role_role_info_1.json')
-
- p = ApiParameters(params=args)
- assert p.terminal_access == 'disable'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create_remote_syslog(self, *args):
- set_module_args(dict(
- name='foo',
- line_order=1000,
- attribute_string='bar',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_remote_syslog.py b/test/units/modules/network/f5/test_bigip_remote_syslog.py
deleted file mode 100644
index 9cf81bde45..0000000000
--- a/test/units/modules/network/f5/test_bigip_remote_syslog.py
+++ /dev/null
@@ -1,230 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_remote_syslog import ModuleParameters
- from library.modules.bigip_remote_syslog import ModuleManager
- from library.modules.bigip_remote_syslog import ArgumentSpec
-
- from library.module_utils.network.f5.common import F5ModuleError
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_remote_syslog import ModuleParameters
- from ansible.modules.network.f5.bigip_remote_syslog import ModuleManager
- from ansible.modules.network.f5.bigip_remote_syslog import ArgumentSpec
-
- from ansible.module_utils.network.f5.common import F5ModuleError
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- remote_host='10.10.10.10',
- remote_port=514,
- local_ip='1.1.1.1'
- )
-
- p = ModuleParameters(params=args)
- assert p.remote_host == '10.10.10.10'
- assert p.remote_port == 514
- assert p.local_ip == '1.1.1.1'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create_remote_syslog(self, *args):
- set_module_args(dict(
- remote_host='1.1.1.1',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- fixture = load_fixture('load_tm_sys_syslog_1.json')
- current = fixture['remoteServers']
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(side_effect=[False, True])
- mm.update_on_device = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
-
- def test_create_remote_syslog_idempotent(self, *args):
- set_module_args(dict(
- name='remotesyslog1',
- remote_host='10.10.10.10',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- fixture = load_fixture('load_tm_sys_syslog_1.json')
- current = fixture['remoteServers']
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
-
- assert results['changed'] is False
-
- def test_update_remote_port(self, *args):
- set_module_args(dict(
- remote_host='10.10.10.10',
- remote_port=800,
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- fixture = load_fixture('load_tm_sys_syslog_1.json')
- current = fixture['remoteServers']
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['remote_port'] == 800
-
- def test_update_local_ip(self, *args):
- set_module_args(dict(
- remote_host='10.10.10.10',
- local_ip='2.2.2.2',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- fixture = load_fixture('load_tm_sys_syslog_1.json')
- current = fixture['remoteServers']
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['local_ip'] == '2.2.2.2'
-
- def test_update_no_name_dupe_host(self, *args):
- set_module_args(dict(
- remote_host='10.10.10.10',
- local_ip='2.2.2.2',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- fixture = load_fixture('load_tm_sys_syslog_2.json')
- current = fixture['remoteServers']
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
-
- with pytest.raises(F5ModuleError) as ex:
- mm.exec_module()
-
- assert "Multiple occurrences of hostname" in str(ex.value)
diff --git a/test/units/modules/network/f5/test_bigip_remote_user.py b/test/units/modules/network/f5/test_bigip_remote_user.py
deleted file mode 100644
index 89ccbfe36e..0000000000
--- a/test/units/modules/network/f5/test_bigip_remote_user.py
+++ /dev/null
@@ -1,126 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2019, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_remote_user import ApiParameters
- from library.modules.bigip_remote_user import ModuleParameters
- from library.modules.bigip_remote_user import ModuleManager
- from library.modules.bigip_remote_user import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_remote_user import ApiParameters
- from ansible.modules.network.f5.bigip_remote_user import ModuleParameters
- from ansible.modules.network.f5.bigip_remote_user import ModuleManager
- from ansible.modules.network.f5.bigip_remote_user import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- default_partition='Common',
- default_role='admin',
- console_access='yes',
- description='this is a role'
-
- )
-
- p = ModuleParameters(params=args)
- assert p.default_partition == 'Common'
- assert p.default_role == 'admin'
- assert p.console_access == 'tmsh'
- assert p.description == 'this is a role'
-
- def test_api_parameters(self):
- args = load_fixture('load_remote_user_settings.json')
- p = ApiParameters(params=args)
- assert p.default_partition == 'all'
- assert p.default_role == 'no-access'
- assert p.console_access == 'disabled'
- assert p.description is None
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create_remote_syslog(self, *args):
- set_module_args(dict(
- default_partition='Foobar',
- default_role='auditor',
- console_access='yes',
- description='this is a role',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = ApiParameters(params=load_fixture('load_remote_user_settings.json'))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.update_on_device = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['description'] == 'this is a role'
- assert results['default_partition'] == 'Foobar'
- assert results['default_role'] == 'auditor'
- assert results['console_access'] == 'yes'
diff --git a/test/units/modules/network/f5/test_bigip_routedomain.py b/test/units/modules/network/f5/test_bigip_routedomain.py
deleted file mode 100644
index 7805152bae..0000000000
--- a/test/units/modules/network/f5/test_bigip_routedomain.py
+++ /dev/null
@@ -1,128 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2017, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_routedomain import ApiParameters
- from library.modules.bigip_routedomain import ModuleParameters
- from library.modules.bigip_routedomain import ModuleManager
- from library.modules.bigip_routedomain import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_routedomain import ApiParameters
- from ansible.modules.network.f5.bigip_routedomain import ModuleParameters
- from ansible.modules.network.f5.bigip_routedomain import ModuleManager
- from ansible.modules.network.f5.bigip_routedomain import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- id='1234',
- description='my description',
- strict=True,
- parent='parent1',
- vlans=['vlan1', 'vlan2'],
- routing_protocol=['BFD', 'BGP'],
- bwc_policy='bwc1',
- connection_limit=200,
- flow_eviction_policy='evict1',
- service_policy='service1'
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.id == 1234
- assert p.description == 'my description'
- assert p.strict is True
- assert p.connection_limit == 200
-
- def test_api_parameters(self):
- args = load_fixture('load_net_route_domain_1.json')
-
- p = ApiParameters(params=args)
- assert len(p.vlans) == 5
- assert p.id == 0
- assert p.strict is True
- assert p.connection_limit == 0
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create(self, *args):
- set_module_args(dict(
- name='foo',
- id=1234,
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- required_one_of=self.spec.required_one_of
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(return_value=False)
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['id'] == 1234
diff --git a/test/units/modules/network/f5/test_bigip_selfip.py b/test/units/modules/network/f5/test_bigip_selfip.py
deleted file mode 100644
index 0e5c3a946a..0000000000
--- a/test/units/modules/network/f5/test_bigip_selfip.py
+++ /dev/null
@@ -1,207 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_selfip import ApiParameters
- from library.modules.bigip_selfip import ModuleParameters
- from library.modules.bigip_selfip import ModuleManager
- from library.modules.bigip_selfip import ArgumentSpec
-
- from library.module_utils.network.f5.common import F5ModuleError
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_selfip import ApiParameters
- from ansible.modules.network.f5.bigip_selfip import ModuleParameters
- from ansible.modules.network.f5.bigip_selfip import ModuleManager
- from ansible.modules.network.f5.bigip_selfip import ArgumentSpec
-
- from ansible.module_utils.network.f5.common import F5ModuleError
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- address='10.10.10.10',
- allow_service=[
- 'tcp:80',
- 'udp:53',
- 'gre'
- ],
- name='net1',
- netmask='255.255.255.0',
- partition='Common',
- route_domain='1',
- state='present',
- traffic_group='traffic-group-local-only',
- vlan='net1'
- )
- p = ModuleParameters(params=args)
- assert p.address == '10.10.10.10%1/24'
- assert p.allow_service == ['gre:0', 'tcp:80', 'udp:53']
- assert p.name == 'net1'
- assert p.netmask == 24
- assert p.route_domain == 1
- assert p.traffic_group == '/Common/traffic-group-local-only'
- assert p.vlan == '/Common/net1'
-
- def test_module_invalid_service(self):
- args = dict(
- allow_service=[
- 'tcp:80',
- 'udp:53',
- 'grp'
- ]
- )
- p = ModuleParameters(params=args)
- with pytest.raises(F5ModuleError) as ex:
- assert p.allow_service == ['grp', 'tcp:80', 'udp:53']
- assert 'The provided protocol' in str(ex.value)
-
- def test_api_parameters(self):
- args = dict(
- address='10.10.10.10%1/24',
- allowService=[
- 'tcp:80',
- 'udp:53',
- 'gre'
- ],
- name='net1',
- state='present',
- trafficGroup='/Common/traffic-group-local-only',
- vlan='net1'
- )
- p = ApiParameters(params=args)
- assert p.address == '10.10.10.10%1/24'
- assert p.allow_service == ['gre', 'tcp:80', 'udp:53']
- assert p.name == 'net1'
- assert p.netmask == 24
- assert p.traffic_group == '/Common/traffic-group-local-only'
- assert p.vlan == '/Common/net1'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create_selfip(self, *args):
- set_module_args(dict(
- address='10.10.10.10',
- allow_service=[
- 'tcp:80',
- 'udp:53',
- 'gre'
- ],
- name='net1',
- netmask='255.255.255.0',
- partition='Common',
- route_domain='1',
- state='present',
- traffic_group='traffic-group-local-only',
- vlan='net1',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
-
- def test_create_selfip_idempotent(self, *args):
- set_module_args(dict(
- address='10.10.10.10',
- allow_service=[
- 'tcp:80',
- 'udp:53',
- 'gre'
- ],
- name='net1',
- netmask='255.255.255.0',
- partition='Common',
- route_domain='1',
- state='present',
- traffic_group='traffic-group-local-only',
- vlan='net1',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = ApiParameters(params=load_fixture('load_tm_net_self.json'))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(side_effect=[True, True])
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
-
- assert results['changed'] is False
diff --git a/test/units/modules/network/f5/test_bigip_service_policy.py b/test/units/modules/network/f5/test_bigip_service_policy.py
deleted file mode 100644
index 6c206cd2ec..0000000000
--- a/test/units/modules/network/f5/test_bigip_service_policy.py
+++ /dev/null
@@ -1,132 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2017, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_service_policy import ApiParameters
- from library.modules.bigip_service_policy import ModuleParameters
- from library.modules.bigip_service_policy import ModuleManager
- from library.modules.bigip_service_policy import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
- from test.units.compat.mock import patch
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_service_policy import ApiParameters
- from ansible.modules.network.f5.bigip_service_policy import ModuleParameters
- from ansible.modules.network.f5.bigip_service_policy import ModuleManager
- from ansible.modules.network.f5.bigip_service_policy import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
- from units.compat.mock import patch
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- description='my description',
- timer_policy='timer1',
- port_misuse_policy='misuse1',
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.description == 'my description'
- assert p.timer_policy == '/Common/timer1'
- assert p.port_misuse_policy == '/Common/misuse1'
-
- def test_api_parameters(self):
- args = load_fixture('load_net_service_policy_1.json')
- p = ApiParameters(params=args)
- assert p.name == 'baz'
- assert p.description == 'my description'
- assert p.timer_policy == '/Common/foo'
- assert p.port_misuse_policy == '/Common/bar'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
- try:
- self.p1 = patch('library.modules.bigip_service_policy.module_provisioned')
- self.m1 = self.p1.start()
- self.m1.return_value = True
- except Exception:
- self.p1 = patch('ansible.modules.network.f5.bigip_service_policy.module_provisioned')
- self.m1 = self.p1.start()
- self.m1.return_value = True
-
- def test_create_selfip(self, *args):
- set_module_args(dict(
- name='foo',
- description='my description',
- timer_policy='timer1',
- port_misuse_policy='misuse1',
- partition='Common',
- state='present',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
- mm.module_provisioned = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_smtp.py b/test/units/modules/network/f5/test_bigip_smtp.py
deleted file mode 100644
index 8203a092c7..0000000000
--- a/test/units/modules/network/f5/test_bigip_smtp.py
+++ /dev/null
@@ -1,152 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2017, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_smtp import ApiParameters
- from library.modules.bigip_smtp import ModuleParameters
- from library.modules.bigip_smtp import ModuleManager
- from library.modules.bigip_smtp import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_smtp import ApiParameters
- from ansible.modules.network.f5.bigip_smtp import ModuleParameters
- from ansible.modules.network.f5.bigip_smtp import ModuleManager
- from ansible.modules.network.f5.bigip_smtp import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- smtp_server='1.1.1.1',
- smtp_server_port='25',
- smtp_server_username='admin',
- smtp_server_password='password',
- local_host_name='smtp.mydomain.com',
- encryption='tls',
- update_password='always',
- from_address='no-reply@mydomain.com',
- authentication=True,
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.smtp_server == '1.1.1.1'
- assert p.smtp_server_port == 25
- assert p.smtp_server_username == 'admin'
- assert p.smtp_server_password == 'password'
- assert p.local_host_name == 'smtp.mydomain.com'
- assert p.encryption == 'tls'
- assert p.update_password == 'always'
- assert p.from_address == 'no-reply@mydomain.com'
- assert p.authentication_disabled is None
- assert p.authentication_enabled is True
-
- def test_api_parameters(self):
- p = ApiParameters(params=load_fixture('load_sys_smtp_server.json'))
- assert p.name == 'foo'
- assert p.smtp_server == 'mail.foo.bar'
- assert p.smtp_server_port == 465
- assert p.smtp_server_username == 'admin'
- assert p.smtp_server_password == '$M$Ch$this-is-encrypted=='
- assert p.local_host_name == 'mail-host.foo.bar'
- assert p.encryption == 'ssl'
- assert p.from_address == 'no-reply@foo.bar'
- assert p.authentication_disabled is None
- assert p.authentication_enabled is True
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create_monitor(self, *args):
- set_module_args(dict(
- name='foo',
- smtp_server='1.1.1.1',
- smtp_server_port='25',
- smtp_server_username='admin',
- smtp_server_password='password',
- local_host_name='smtp.mydomain.com',
- encryption='tls',
- update_password='always',
- from_address='no-reply@mydomain.com',
- authentication=True,
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['encryption'] == 'tls'
- assert results['smtp_server'] == '1.1.1.1'
- assert results['smtp_server_port'] == 25
- assert results['local_host_name'] == 'smtp.mydomain.com'
- assert results['authentication'] is True
- assert results['from_address'] == 'no-reply@mydomain.com'
- assert 'smtp_server_username' not in results
- assert 'smtp_server_password' not in results
diff --git a/test/units/modules/network/f5/test_bigip_snat_pool.py b/test/units/modules/network/f5/test_bigip_snat_pool.py
deleted file mode 100644
index 83ab106a48..0000000000
--- a/test/units/modules/network/f5/test_bigip_snat_pool.py
+++ /dev/null
@@ -1,187 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_snat_pool import ModuleParameters
- from library.modules.bigip_snat_pool import ApiParameters
- from library.modules.bigip_snat_pool import ModuleManager
- from library.modules.bigip_snat_pool import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_snat_pool import ModuleParameters
- from ansible.modules.network.f5.bigip_snat_pool import ApiParameters
- from ansible.modules.network.f5.bigip_snat_pool import ModuleManager
- from ansible.modules.network.f5.bigip_snat_pool import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='my-snat-pool',
- state='present',
- members=['10.10.10.10', '20.20.20.20'],
- description='A SNAT pool description',
- partition='Common'
- )
- p = ModuleParameters(params=args)
- assert p.name == 'my-snat-pool'
- assert p.state == 'present'
- assert p.description == 'A SNAT pool description'
- assert len(p.members) == 2
- assert '/Common/10.10.10.10' in p.members
- assert '/Common/20.20.20.20' in p.members
-
- def test_api_parameters(self):
- args = dict(
- members=['/Common/10.10.10.10', '/foo/20.20.20.20']
- )
- p = ApiParameters(params=args)
- assert len(p.members) == 2
- assert '/Common/10.10.10.10' in p.members
- assert '/foo/20.20.20.20' in p.members
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create_snat_pool(self, *args):
- set_module_args(dict(
- name='my-snat-pool',
- state='present',
- members=['10.10.10.10', '20.20.20.20'],
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- required_if=self.spec.required_if
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert len(results['members']) == 2
- assert '/Common/10.10.10.10' in results['members']
- assert '/Common/20.20.20.20' in results['members']
-
- def test_create_snat_pool_idempotent(self, *args):
- set_module_args(dict(
- name='asdasd',
- state='present',
- members=['1.1.1.1', '2.2.2.2'],
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = ApiParameters(params=load_fixture('load_ltm_snatpool.json'))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- required_if=self.spec.required_if
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(side_effect=[True, True])
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
-
- assert results['changed'] is False
-
- def test_update_snat_pool(self, *args):
- set_module_args(dict(
- name='asdasd',
- state='present',
- members=['30.30.30.30'],
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = ApiParameters(params=load_fixture('load_ltm_snatpool.json'))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- required_if=self.spec.required_if
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
- mm.exists = Mock(return_value=True)
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert len(results['members']) == 1
- assert '/Common/30.30.30.30' in results['members']
diff --git a/test/units/modules/network/f5/test_bigip_snat_translation.py b/test/units/modules/network/f5/test_bigip_snat_translation.py
deleted file mode 100644
index 6571711dfa..0000000000
--- a/test/units/modules/network/f5/test_bigip_snat_translation.py
+++ /dev/null
@@ -1,337 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2019, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_snat_translation import ApiParameters
- from library.modules.bigip_snat_translation import ModuleParameters
- from library.modules.bigip_snat_translation import ModuleManager
- from library.modules.bigip_snat_translation import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_snat_translation import ApiParameters
- from ansible.modules.network.f5.bigip_snat_translation import ModuleParameters
- from ansible.modules.network.f5.bigip_snat_translation import ModuleManager
- from ansible.modules.network.f5.bigip_snat_translation import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='my-snat-translation',
- address='1.1.1.1',
- arp='yes',
- connection_limit=300,
- description='None',
- ip_idle_timeout='50',
- partition='Common',
- state='present',
- traffic_group='test',
- tcp_idle_timeout='20',
- udp_idle_timeout='100',
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'my-snat-translation'
- assert p.address == '1.1.1.1'
- assert p.arp == 'enabled'
- assert p.connection_limit == 300
- assert p.description == 'None'
- assert p.ip_idle_timeout == '50'
- assert p.partition == 'Common'
- assert p.state == 'present'
- assert p.traffic_group == '/Common/test'
- assert p.tcp_idle_timeout == '20'
- assert p.udp_idle_timeout == '100'
-
- def test_api_parameters(self):
- args = load_fixture('load_ltm_snat_translation_default.json')
- p = ApiParameters(params=args)
- assert p.address == '1.1.1.1'
- assert p.arp == 'no'
- assert p.connection_limit == 0
- assert p.description == 'My description'
- assert p.ip_idle_timeout == '50'
- assert p.partition == 'Common'
- assert p.traffic_group == '/Common/test'
- assert p.tcp_idle_timeout == '20'
- assert p.udp_idle_timeout == '100'
-
- def test_module_parameters_arp_yes(self):
- args = dict(
- arp='yes'
- )
- p = ModuleParameters(params=args)
- assert p.arp == 'enabled'
-
- def test_module_parameters_arp_no(self):
- args = dict(
- arp='no'
- )
- p = ModuleParameters(params=args)
- assert p.arp == 'disabled'
-
- def test_module_parameters_connection_limit_none(self):
- args = dict(
- connection_limit=0
- )
- p = ModuleParameters(params=args)
- assert p.connection_limit == 0
-
- def test_module_parameters_connection_limit_int(self):
- args = dict(
- connection_limit=500
- )
- p = ModuleParameters(params=args)
- assert p.connection_limit == 500
-
- def test_module_parameters_description_none(self):
- args = dict(
- description='none'
- )
- p = ModuleParameters(params=args)
- assert p.description == ''
-
- def test_module_parameters_description_empty(self):
- args = dict(
- description=''
- )
- p = ModuleParameters(params=args)
- assert p.description == ''
-
- def test_module_parameters_description_string_value(self):
- args = dict(
- description='My Snat Translation'
- )
- p = ModuleParameters(params=args)
- assert p.description == 'My Snat Translation'
-
- def test_module_parameters_ip_idle_timeout_indefinite(self):
- args = dict(
- ip_idle_timeout='indefinite'
- )
- p = ModuleParameters(params=args)
- assert p.ip_idle_timeout == 'indefinite'
-
- def test_module_parameters_ip_idle_timeout_string_value(self):
- args = dict(
- ip_idle_timeout='65000'
- )
- p = ModuleParameters(params=args)
- assert p.ip_idle_timeout == '65000'
-
- def test_module_no_partition_prefix_parameters(self):
- args = dict(
- partition='Common',
- address='10.10.10.10',
- traffic_group='traffic-group-1'
- )
- p = ModuleParameters(params=args)
- assert p.partition == 'Common'
- assert p.address == '10.10.10.10'
- assert p.traffic_group == '/Common/traffic-group-1'
-
- def test_module_partition_prefix_parameters(self):
- args = dict(
- partition='Common',
- address='10.10.10.10',
- traffic_group='/Common/traffic-group-1'
- )
- p = ModuleParameters(params=args)
- assert p.partition == 'Common'
- assert p.address == '10.10.10.10'
- assert p.traffic_group == '/Common/traffic-group-1'
-
- def test_module_parameters_state_present(self):
- args = dict(
- state='present'
- )
- p = ModuleParameters(params=args)
- assert p.state == 'present'
- assert p.enabled is True
-
- def test_module_parameters_state_absent(self):
- args = dict(
- state='absent'
- )
- p = ModuleParameters(params=args)
- assert p.state == 'absent'
-
- def test_module_parameters_state_enabled(self):
- args = dict(
- state='enabled'
- )
- p = ModuleParameters(params=args)
- assert p.state == 'enabled'
- assert p.enabled is True
-
- def test_module_parameters_state_disabled(self):
- args = dict(
- state='disabled'
- )
- p = ModuleParameters(params=args)
- assert p.state == 'disabled'
- assert p.disabled is True
-
- def test_module_parameters_tcp_idle_timeout_indefinite(self):
- args = dict(
- tcp_idle_timeout='indefinite'
- )
- p = ModuleParameters(params=args)
- assert p.tcp_idle_timeout == 'indefinite'
-
- def test_module_parameters_tcp_idle_timeout_string_value(self):
- args = dict(
- tcp_idle_timeout='65000'
- )
- p = ModuleParameters(params=args)
- assert p.tcp_idle_timeout == '65000'
-
- def test_module_parameters_udp_idle_timeout_indefinite(self):
- args = dict(
- udp_idle_timeout='indefinite'
- )
- p = ModuleParameters(params=args)
- assert p.udp_idle_timeout == 'indefinite'
-
- def test_module_parameters_udp_idle_timeout_string_value(self):
- args = dict(
- udp_idle_timeout='65000'
- )
- p = ModuleParameters(params=args)
- assert p.udp_idle_timeout == '65000'
-
-
-class TestManager(unittest.TestCase):
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create_snat_translation(self, *args):
- set_module_args(dict(
- name='my-snat-translation',
- address='1.1.1.1',
- arp='yes',
- connection_limit=300,
- description='My description',
- ip_idle_timeout='50',
- state='present',
- tcp_idle_timeout='20',
- udp_idle_timeout='100',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- required_if=self.spec.required_if
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['address'] == '1.1.1.1'
- assert results['arp'] == 'yes'
- assert results['connection_limit'] == 300
- assert results['description'] == 'My description'
- assert results['ip_idle_timeout'] == '50'
- assert results['tcp_idle_timeout'] == '20'
- assert results['udp_idle_timeout'] == '100'
-
- def test_update_snat_translation(self, *args):
- set_module_args(dict(
- name='my-snat-translation',
- address='1.1.1.1',
- arp='yes',
- connection_limit=300,
- description='',
- ip_idle_timeout='500',
- state='disabled',
- tcp_idle_timeout='indefinite',
- traffic_group='traffic-group-1',
- udp_idle_timeout='indefinite',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
- current = ApiParameters(params=load_fixture('load_ltm_snat_translation_default.json'))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- required_if=self.spec.required_if
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
- mm.exists = Mock(return_value=True)
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['arp'] == 'yes'
- assert results['connection_limit'] == 300
- assert results['description'] == ''
- assert results['ip_idle_timeout'] == '500'
- assert results['tcp_idle_timeout'] == 'indefinite'
- assert results['udp_idle_timeout'] == 'indefinite'
diff --git a/test/units/modules/network/f5/test_bigip_snmp.py b/test/units/modules/network/f5/test_bigip_snmp.py
deleted file mode 100644
index 52ca2898e7..0000000000
--- a/test/units/modules/network/f5/test_bigip_snmp.py
+++ /dev/null
@@ -1,266 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_snmp import ApiParameters
- from library.modules.bigip_snmp import ModuleParameters
- from library.modules.bigip_snmp import ModuleManager
- from library.modules.bigip_snmp import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_snmp import ApiParameters
- from ansible.modules.network.f5.bigip_snmp import ModuleParameters
- from ansible.modules.network.f5.bigip_snmp import ModuleManager
- from ansible.modules.network.f5.bigip_snmp import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- agent_status_traps='enabled',
- agent_authentication_traps='enabled',
- contact='Alice@foo.org',
- device_warning_traps='enabled',
- location='Lunar orbit',
- )
- p = ModuleParameters(params=args)
- assert p.agent_status_traps == 'enabled'
- assert p.agent_authentication_traps == 'enabled'
- assert p.device_warning_traps == 'enabled'
- assert p.location == 'Lunar orbit'
- assert p.contact == 'Alice@foo.org'
-
- def test_module_parameters_disabled(self):
- args = dict(
- agent_status_traps='disabled',
- agent_authentication_traps='disabled',
- device_warning_traps='disabled',
- )
- p = ModuleParameters(params=args)
- assert p.agent_status_traps == 'disabled'
- assert p.agent_authentication_traps == 'disabled'
- assert p.device_warning_traps == 'disabled'
-
- def test_api_parameters(self):
- args = dict(
- agentTrap='enabled',
- authTrap='enabled',
- bigipTraps='enabled',
- sysLocation='Lunar orbit',
- sysContact='Alice@foo.org',
- )
- p = ApiParameters(params=args)
- assert p.agent_status_traps == 'enabled'
- assert p.agent_authentication_traps == 'enabled'
- assert p.device_warning_traps == 'enabled'
- assert p.location == 'Lunar orbit'
- assert p.contact == 'Alice@foo.org'
-
- def test_api_parameters_disabled(self):
- args = dict(
- agentTrap='disabled',
- authTrap='disabled',
- bigipTraps='disabled',
- )
- p = ApiParameters(params=args)
- assert p.agent_status_traps == 'disabled'
- assert p.agent_authentication_traps == 'disabled'
- assert p.device_warning_traps == 'disabled'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_update_agent_status_traps(self, *args):
- set_module_args(dict(
- agent_status_traps='enabled',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- # Configure the parameters that would be returned by querying the
- # remote device
- current = ApiParameters(
- params=dict(
- agent_status_traps='disabled'
- )
- )
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.update_on_device = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['agent_status_traps'] == 'enabled'
-
- def test_update_allowed_addresses(self, *args):
- set_module_args(dict(
- allowed_addresses=[
- '127.0.0.0/8',
- '10.10.10.10',
- 'foo',
- 'baz.foo.com'
- ],
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- # Configure the parameters that would be returned by querying the
- # remote device
- current = ApiParameters(
- params=dict(
- allowed_addresses=['127.0.0.0/8']
- )
- )
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.update_on_device = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert len(results['allowed_addresses']) == 4
- assert results['allowed_addresses'] == [
- '10.10.10.10', '127.0.0.0/8', 'baz.foo.com', 'foo'
- ]
-
- def test_update_allowed_addresses_default(self, *args):
- set_module_args(dict(
- allowed_addresses=[
- 'default'
- ],
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- # Configure the parameters that would be returned by querying the
- # remote device
- current = ApiParameters(
- params=dict(
- allowed_addresses=['10.0.0.0']
- )
- )
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.update_on_device = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert len(results['allowed_addresses']) == 1
- assert results['allowed_addresses'] == ['127.0.0.0/8']
-
- def test_update_allowed_addresses_empty(self, *args):
- set_module_args(dict(
- allowed_addresses=[''],
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- # Configure the parameters that would be returned by querying the
- # remote device
- current = ApiParameters(
- params=dict(
- allowed_addresses=['10.0.0.0']
- )
- )
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.update_on_device = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert len(results['allowed_addresses']) == 1
- assert results['allowed_addresses'] == ['127.0.0.0/8']
diff --git a/test/units/modules/network/f5/test_bigip_snmp_community.py b/test/units/modules/network/f5/test_bigip_snmp_community.py
deleted file mode 100644
index da18b893fb..0000000000
--- a/test/units/modules/network/f5/test_bigip_snmp_community.py
+++ /dev/null
@@ -1,305 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2017, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_snmp_community import ApiParameters
- from library.modules.bigip_snmp_community import ModuleParameters
- from library.modules.bigip_snmp_community import ModuleManager
- from library.modules.bigip_snmp_community import V1Manager
- from library.modules.bigip_snmp_community import V2Manager
- from library.modules.bigip_snmp_community import ArgumentSpec
-
- from library.module_utils.network.f5.common import F5ModuleError
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_snmp_community import ApiParameters
- from ansible.modules.network.f5.bigip_snmp_community import ModuleParameters
- from ansible.modules.network.f5.bigip_snmp_community import ModuleManager
- from ansible.modules.network.f5.bigip_snmp_community import V1Manager
- from ansible.modules.network.f5.bigip_snmp_community import V2Manager
- from ansible.modules.network.f5.bigip_snmp_community import ArgumentSpec
-
- from ansible.module_utils.network.f5.common import F5ModuleError
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- version='v2c',
- community='foo',
- source='1.1.1.1',
- port='8080',
- oid='.1',
- access='ro',
- ip_version=4,
- snmp_username='admin',
- snmp_auth_protocol='sha',
- snmp_auth_password='secretsecret',
- snmp_privacy_protocol='des',
- snmp_privacy_password='secretsecret',
- update_password='always',
- state='present'
- )
-
- p = ModuleParameters(params=args)
- assert p.version == 'v2c'
- assert p.community == 'foo'
- assert p.source == '1.1.1.1'
- assert p.port == 8080
- assert p.oid == '.1'
- assert p.access == 'ro'
- assert p.ip_version == 4
- assert p.snmp_username == 'admin'
- assert p.snmp_auth_protocol == 'sha'
- assert p.snmp_auth_password == 'secretsecret'
- assert p.snmp_privacy_protocol == 'des'
- assert p.snmp_privacy_password == 'secretsecret'
- assert p.update_password == 'always'
- assert p.state == 'present'
-
- def test_api_parameters_community_1(self):
- args = load_fixture('load_sys_snmp_communities_1.json')
-
- p = ApiParameters(params=args)
- assert p.access == 'ro'
- assert p.community == 'foo'
- assert p.ip_version == 4
-
- def test_api_parameters_community_2(self):
- args = load_fixture('load_sys_snmp_communities_2.json')
-
- p = ApiParameters(params=args)
- assert p.access == 'rw'
- assert p.community == 'foo'
- assert p.ip_version == 4
- assert p.oid == '.1'
- assert p.source == '1.1.1.1'
-
- def test_api_parameters_community_3(self):
- args = load_fixture('load_sys_snmp_communities_3.json')
-
- p = ApiParameters(params=args)
- assert p.access == 'ro'
- assert p.community == 'foo'
- assert p.ip_version == 6
- assert p.oid == '.1'
- assert p.source == '2001:0db8:85a3:0000:0000:8a2e:0370:7334'
-
- def test_api_parameters_community_4(self):
- args = load_fixture('load_sys_snmp_communities_4.json')
-
- p = ApiParameters(params=args)
- assert p.access == 'ro'
- assert p.community == 'foo'
- assert p.ip_version == 6
-
- def test_api_parameters_users_1(self):
- args = load_fixture('load_sys_snmp_users_1.json')
-
- p = ApiParameters(params=args)
- assert p.access == 'ro'
- assert p.snmp_auth_protocol == 'sha'
- assert p.oid == '.1'
- assert p.snmp_privacy_protocol == 'aes'
- assert p.snmp_username == 'foo'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create_v2c_community_1(self, *args):
- set_module_args(dict(
- version='v2c',
- community='foo',
- source='1.1.1.1',
- port='8080',
- oid='.1',
- access='ro',
- ip_version=4,
- state='present',
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- required_if=self.spec.required_if
- )
- m1 = V1Manager(module=module)
-
- # Override methods to force specific logic in the module to happen
- m1.exists = Mock(side_effect=[False, True])
- m1.create_on_device = Mock(return_value=True)
-
- m0 = ModuleManager(module=module)
- m0.get_manager = Mock(return_value=m1)
-
- results = m0.exec_module()
-
- assert results['changed'] is True
-
- def test_create_v1_community_1(self, *args):
- set_module_args(dict(
- name='foo',
- version='v1',
- community='foo',
- source='1.1.1.1',
- port='8080',
- oid='.1',
- access='ro',
- ip_version=4,
- state='present',
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- required_if=self.spec.required_if
- )
- m1 = V1Manager(module=module)
-
- # Override methods to force specific logic in the module to happen
- m1.exists = Mock(side_effect=[False, True])
- m1.create_on_device = Mock(return_value=True)
-
- m0 = ModuleManager(module=module)
- m0.get_manager = Mock(return_value=m1)
-
- results = m0.exec_module()
-
- assert results['changed'] is True
-
- def test_create_v3_community_1(self, *args):
- set_module_args(dict(
- version='v3',
- oid='.1',
- access='ro',
- snmp_username='admin',
- snmp_auth_protocol='md5',
- snmp_auth_password='secretsecret',
- snmp_privacy_protocol='des',
- snmp_privacy_password='secretsecret',
- state='present',
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- required_if=self.spec.required_if
- )
- m1 = V2Manager(module=module)
-
- # Override methods to force specific logic in the module to happen
- m1.exists = Mock(side_effect=[False, True])
- m1.create_on_device = Mock(return_value=True)
-
- m0 = ModuleManager(module=module)
- m0.get_manager = Mock(return_value=m1)
-
- results = m0.exec_module()
-
- assert results['changed'] is True
-
- def test_create_v3_community_2(self, *args):
- set_module_args(dict(
- version='v3',
- access='ro',
- snmp_username='admin',
- snmp_auth_protocol='md5',
- snmp_auth_password='secretsecret',
- snmp_privacy_protocol='des',
- snmp_privacy_password='secretsecret',
- state='present',
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- required_if=self.spec.required_if
- )
- m1 = V2Manager(module=module)
-
- # Override methods to force specific logic in the module to happen
- m1.exists = Mock(side_effect=[False, True])
- m1.create_on_device = Mock(return_value=True)
-
- m0 = ModuleManager(module=module)
- m0.get_manager = Mock(return_value=m1)
-
- with pytest.raises(F5ModuleError) as ex:
- m0.exec_module()
-
- assert 'oid must be specified when creating a new v3 community.' == str(ex.value)
diff --git a/test/units/modules/network/f5/test_bigip_snmp_trap.py b/test/units/modules/network/f5/test_bigip_snmp_trap.py
deleted file mode 100644
index 6d1fd951c8..0000000000
--- a/test/units/modules/network/f5/test_bigip_snmp_trap.py
+++ /dev/null
@@ -1,203 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_snmp_trap import V2Parameters
- from library.modules.bigip_snmp_trap import V1Parameters
- from library.modules.bigip_snmp_trap import ModuleManager
- from library.modules.bigip_snmp_trap import V2Manager
- from library.modules.bigip_snmp_trap import V1Manager
- from library.modules.bigip_snmp_trap import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
- from test.units.compat.mock import patch
- from test.units.compat.mock import DEFAULT
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_snmp_trap import V2Parameters
- from ansible.modules.network.f5.bigip_snmp_trap import V1Parameters
- from ansible.modules.network.f5.bigip_snmp_trap import ModuleManager
- from ansible.modules.network.f5.bigip_snmp_trap import V2Manager
- from ansible.modules.network.f5.bigip_snmp_trap import V1Manager
- from ansible.modules.network.f5.bigip_snmp_trap import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
- from units.compat.mock import patch
- from units.compat.mock import DEFAULT
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_networked_parameters(self):
- args = dict(
- name='foo',
- snmp_version='1',
- community='public',
- destination='10.10.10.10',
- port=1000,
- network='other',
- )
- p = V2Parameters(params=args)
- assert p.name == 'foo'
- assert p.snmp_version == '1'
- assert p.community == 'public'
- assert p.destination == '10.10.10.10'
- assert p.port == 1000
- assert p.network == 'other'
-
- def test_module_non_networked_parameters(self):
- args = dict(
- name='foo',
- snmp_version='1',
- community='public',
- destination='10.10.10.10',
- port=1000,
- network='other',
- )
- p = V1Parameters(params=args)
- assert p.name == 'foo'
- assert p.snmp_version == '1'
- assert p.community == 'public'
- assert p.destination == '10.10.10.10'
- assert p.port == 1000
- assert p.network is None
-
- def test_api_parameters(self):
- args = dict(
- name='foo',
- community='public',
- host='10.10.10.10',
- network='other',
- version=1,
- port=1000
- )
- p = V2Parameters(params=args)
- assert p.name == 'foo'
- assert p.snmp_version == '1'
- assert p.community == 'public'
- assert p.destination == '10.10.10.10'
- assert p.port == 1000
- assert p.network == 'other'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create_trap(self, *args):
- set_module_args(dict(
- name='foo',
- snmp_version='1',
- community='public',
- destination='10.10.10.10',
- port=1000,
- network='other',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods to force specific logic in the module to happen
- m0 = ModuleManager(module=module)
- m0.is_version_without_network = Mock(return_value=False)
- m0.is_version_with_default_network = Mock(return_value=True)
-
- patches = dict(
- create_on_device=DEFAULT,
- exists=DEFAULT
- )
- with patch.multiple(V2Manager, **patches) as mo:
- mo['create_on_device'].side_effect = Mock(return_value=True)
- mo['exists'].side_effect = Mock(return_value=False)
- results = m0.exec_module()
-
- assert results['changed'] is True
- assert results['port'] == 1000
- assert results['snmp_version'] == '1'
-
- def test_create_trap_non_network(self, *args):
- set_module_args(dict(
- name='foo',
- snmp_version='1',
- community='public',
- destination='10.10.10.10',
- port=1000,
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods to force specific logic in the module to happen
- m0 = ModuleManager(module=module)
- m0.is_version_without_network = Mock(return_value=True)
-
- patches = dict(
- create_on_device=DEFAULT,
- exists=DEFAULT
- )
- with patch.multiple(V1Manager, **patches) as mo:
- mo['create_on_device'].side_effect = Mock(return_value=True)
- mo['exists'].side_effect = Mock(return_value=False)
- results = m0.exec_module()
-
- assert results['changed'] is True
- assert results['port'] == 1000
- assert results['snmp_version'] == '1'
diff --git a/test/units/modules/network/f5/test_bigip_software_image.py b/test/units/modules/network/f5/test_bigip_software_image.py
deleted file mode 100644
index 4fa46a7593..0000000000
--- a/test/units/modules/network/f5/test_bigip_software_image.py
+++ /dev/null
@@ -1,123 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2017, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_software_image import ApiParameters
- from library.modules.bigip_software_image import ModuleParameters
- from library.modules.bigip_software_image import ModuleManager
- from library.modules.bigip_software_image import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_software_image import ApiParameters
- from ansible.modules.network.f5.bigip_software_image import ModuleParameters
- from ansible.modules.network.f5.bigip_software_image import ModuleManager
- from ansible.modules.network.f5.bigip_software_image import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- filename='/path/to/BIGIP-13.0.0.0.0.1645.iso',
- image='/path/to/BIGIP-13.0.0.0.0.1645.iso',
- )
-
- p = ModuleParameters(params=args)
- assert p.filename == 'BIGIP-13.0.0.0.0.1645.iso'
- assert p.image == '/path/to/BIGIP-13.0.0.0.0.1645.iso'
-
- def test_api_parameters(self):
- args = dict(
- file_size='1000 MB',
- build='0.0.3',
- checksum='8cdbd094195fab4b2b47ff4285577b70',
- image_type='release',
- version='13.1.0.8'
- )
-
- p = ApiParameters(params=args)
- assert p.file_size == 1000
- assert p.build == '0.0.3'
- assert p.checksum == '8cdbd094195fab4b2b47ff4285577b70'
- assert p.image_type == 'release'
- assert p.version == '13.1.0.8'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create(self, *args):
- set_module_args(dict(
- image='/path/to/BIGIP-13.0.0.0.0.1645.iso',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = ApiParameters(params=load_fixture('load_sys_software_image_1.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(side_effect=[False, True])
- mm.read_current_from_device = Mock(return_value=current)
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['file_size'] == 1948
diff --git a/test/units/modules/network/f5/test_bigip_software_install.py b/test/units/modules/network/f5/test_bigip_software_install.py
deleted file mode 100644
index 9f85eae6f3..0000000000
--- a/test/units/modules/network/f5/test_bigip_software_install.py
+++ /dev/null
@@ -1,119 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2017, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_software_install import ApiParameters
- from library.modules.bigip_software_install import ModuleParameters
- from library.modules.bigip_software_install import ModuleManager
- from library.modules.bigip_software_install import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_software_install import ApiParameters
- from ansible.modules.network.f5.bigip_software_install import ModuleParameters
- from ansible.modules.network.f5.bigip_software_install import ModuleManager
- from ansible.modules.network.f5.bigip_software_install import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- volume='HD1.2',
- image='BIGIP-13.0.0.0.0.1645.iso',
- )
-
- p = ModuleParameters(params=args)
- assert p.volume == 'HD1.2'
- assert p.image == 'BIGIP-13.0.0.0.0.1645.iso'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create(self, *args):
- set_module_args(dict(
- image='BIGIP-13.0.0.0.0.1645.iso',
- volume='HD1.2',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- current = ApiParameters()
- current.read_image_from_device = Mock(
- side_effect=[
- ['BIGIP-13.0.0.0.0.1645.iso'],
- ['BIGIP-12.1.3.4-0.0.2.iso'],
- ]
- )
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.have = current
-
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
- mm.volume_exists = Mock(return_value=True)
- mm.update_on_device = Mock(return_value=True)
- mm.wait_for_device_reboot = Mock(return_value=True)
- mm.wait_for_software_install_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_software_update.py b/test/units/modules/network/f5/test_bigip_software_update.py
deleted file mode 100644
index f178744f28..0000000000
--- a/test/units/modules/network/f5/test_bigip_software_update.py
+++ /dev/null
@@ -1,119 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_software_update import ApiParameters
- from library.modules.bigip_software_update import ModuleParameters
- from library.modules.bigip_software_update import ModuleManager
- from library.modules.bigip_software_update import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_software_update import ApiParameters
- from ansible.modules.network.f5.bigip_software_update import ModuleParameters
- from ansible.modules.network.f5.bigip_software_update import ModuleManager
- from ansible.modules.network.f5.bigip_software_update import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- auto_check=True,
- frequency="daily"
- )
- p = ModuleParameters(params=args)
- assert p.auto_check == 'enabled'
- assert p.frequency == 'daily'
-
- def test_api_parameters(self):
- args = dict(
- autoCheck="enabled",
- frequency="daily"
- )
- p = ApiParameters(params=args)
- assert p.auto_check == 'enabled'
- assert p.frequency == 'daily'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_update(self, *args):
- # Configure the arguments that would be sent to the Ansible module
- set_module_args(dict(
- auto_check='no',
- auto_phone_home='no',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- # Configure the parameters that would be returned by querying the
- # remote device
- current = ApiParameters(params=load_fixture('load_sys_software_update.json'))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.update_on_device = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['auto_check'] is False
diff --git a/test/units/modules/network/f5/test_bigip_ssl_certificate.py b/test/units/modules/network/f5/test_bigip_ssl_certificate.py
deleted file mode 100644
index bb5562d736..0000000000
--- a/test/units/modules/network/f5/test_bigip_ssl_certificate.py
+++ /dev/null
@@ -1,152 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_ssl_certificate import ArgumentSpec
- from library.modules.bigip_ssl_certificate import ApiParameters
- from library.modules.bigip_ssl_certificate import ModuleParameters
- from library.modules.bigip_ssl_certificate import ModuleManager
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_ssl_certificate import ArgumentSpec
- from ansible.modules.network.f5.bigip_ssl_certificate import ApiParameters
- from ansible.modules.network.f5.bigip_ssl_certificate import ModuleParameters
- from ansible.modules.network.f5.bigip_ssl_certificate import ModuleManager
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters_cert(self):
- cert_content = load_fixture('create_insecure_cert1.crt')
- args = dict(
- content=cert_content,
- name="cert1",
- partition="Common",
- state="present",
- )
- p = ModuleParameters(params=args)
- assert p.name == 'cert1'
- assert p.filename == 'cert1.crt'
- assert 'Signature Algorithm' in p.content
- assert '-----BEGIN CERTIFICATE-----' in p.content
- assert '-----END CERTIFICATE-----' in p.content
- assert p.checksum == '1e55aa57ee166a380e756b5aa4a835c5849490fe'
- assert p.state == 'present'
-
- def test_module_issuer_cert_key(self):
- args = dict(
- issuer_cert='foo',
- partition="Common",
- )
- p = ModuleParameters(params=args)
- assert p.issuer_cert == '/Common/foo.crt'
-
- def test_api_issuer_cert_key(self):
- args = load_fixture('load_sys_file_ssl_cert_with_issuer_cert.json')
- p = ApiParameters(params=args)
- assert p.issuer_cert == '/Common/intermediate.crt'
-
-
-class TestCertificateManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_import_certificate_and_key_no_key_passphrase(self, *args):
- set_module_args(dict(
- name='foo',
- content=load_fixture('cert1.crt'),
- state='present',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
-
- def test_import_certificate_chain(self, *args):
- set_module_args(dict(
- name='foo',
- content=load_fixture('chain1.crt'),
- state='present',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_ssl_key.py b/test/units/modules/network/f5/test_bigip_ssl_key.py
deleted file mode 100644
index 0af4c9e2c2..0000000000
--- a/test/units/modules/network/f5/test_bigip_ssl_key.py
+++ /dev/null
@@ -1,113 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_ssl_key import ArgumentSpec
- from library.modules.bigip_ssl_key import ModuleParameters
- from library.modules.bigip_ssl_key import ModuleManager
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_ssl_key import ArgumentSpec
- from ansible.modules.network.f5.bigip_ssl_key import ModuleParameters
- from ansible.modules.network.f5.bigip_ssl_key import ModuleManager
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters_key(self):
- key_content = load_fixture('create_insecure_key1.key')
- args = dict(
- content=key_content,
- name="cert1",
- partition="Common",
- state="present",
- password='password',
- server='localhost',
- user='admin'
- )
- p = ModuleParameters(params=args)
- assert p.name == 'cert1'
- assert p.key_filename == 'cert1.key'
- assert '-----BEGIN RSA PRIVATE KEY-----' in p.content
- assert '-----END RSA PRIVATE KEY-----' in p.content
- assert p.key_checksum == '91bdddcf0077e2bb2a0258aae2ae3117be392e83'
- assert p.state == 'present'
-
-
-class TestModuleManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_import_key_no_key_passphrase(self, *args):
- set_module_args(dict(
- name='foo',
- content=load_fixture('cert1.key'),
- state='present',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- cm = ModuleManager(module=module)
- cm.exists = Mock(side_effect=[False, True])
- cm.create_on_device = Mock(return_value=True)
-
- results = cm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_ssl_ocsp.py b/test/units/modules/network/f5/test_bigip_ssl_ocsp.py
deleted file mode 100644
index f7c7c4d52e..0000000000
--- a/test/units/modules/network/f5/test_bigip_ssl_ocsp.py
+++ /dev/null
@@ -1,130 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2018, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_ssl_ocsp import ApiParameters
- from library.modules.bigip_ssl_ocsp import ModuleParameters
- from library.modules.bigip_ssl_ocsp import ModuleManager
- from library.modules.bigip_ssl_ocsp import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
- from test.units.compat.mock import patch
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_ssl_ocsp import ApiParameters
- from ansible.modules.network.f5.bigip_ssl_ocsp import ModuleParameters
- from ansible.modules.network.f5.bigip_ssl_ocsp import ModuleManager
- from ansible.modules.network.f5.bigip_ssl_ocsp import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
- from units.compat.mock import patch
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- clock_skew=100,
- connections_limit=101,
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.clock_skew == 100
- assert p.connections_limit == 101
-
- def test_api_parameters(self):
- args = load_fixture('load_sys_crypto_cert_validator_1.json')
- p = ApiParameters(params=args)
- assert p.name == 'asd'
- assert p.clock_skew == 300
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- try:
- self.p1 = patch('library.modules.bigip_ssl_ocsp.tmos_version')
- self.m1 = self.p1.start()
- self.m1.return_value = '13.0.0'
- except Exception:
- self.p1 = patch('ansible.modules.network.f5.bigip_ssl_ocsp.tmos_version')
- self.m1 = self.p1.start()
- self.m1.return_value = '13.0.0'
-
- def tearDown(self):
- self.p1.stop()
-
- def test_create(self, *args):
- # Configure the arguments that would be sent to the Ansible module
- set_module_args(dict(
- name='foo',
- clock_skew=100,
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive,
- required_together=self.spec.required_together
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(return_value=False)
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_static_route.py b/test/units/modules/network/f5/test_bigip_static_route.py
deleted file mode 100644
index 189bfa1756..0000000000
--- a/test/units/modules/network/f5/test_bigip_static_route.py
+++ /dev/null
@@ -1,377 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_static_route import ApiParameters
- from library.modules.bigip_static_route import ModuleParameters
- from library.modules.bigip_static_route import ModuleManager
- from library.modules.bigip_static_route import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
- from test.units.compat.mock import patch
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_static_route import ApiParameters
- from ansible.modules.network.f5.bigip_static_route import ModuleParameters
- from ansible.modules.network.f5.bigip_static_route import ModuleManager
- from ansible.modules.network.f5.bigip_static_route import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
- from units.compat.mock import patch
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- vlan="foo",
- gateway_address="10.10.10.10"
- )
- p = ModuleParameters(params=args)
- assert p.vlan == '/Common/foo'
- assert p.gateway_address == '10.10.10.10'
-
- def test_api_parameters(self):
- args = dict(
- tmInterface="foo",
- gw="10.10.10.10"
- )
- p = ApiParameters(params=args)
- assert p.vlan == 'foo'
- assert p.gateway_address == '10.10.10.10'
-
- def test_reject_parameter_types(self):
- # boolean true
- args = dict(reject=True)
- p = ModuleParameters(params=args)
- assert p.reject is True
-
- # boolean false
- args = dict(reject=False)
- p = ModuleParameters(params=args)
- assert p.reject is None
-
- # string
- args = dict(reject="yes")
- p = ModuleParameters(params=args)
- assert p.reject is True
-
- # integer
- args = dict(reject=1)
- p = ModuleParameters(params=args)
- assert p.reject is True
-
- # none
- args = dict(reject=None)
- p = ModuleParameters(params=args)
- assert p.reject is None
-
- def test_destination_parameter_types(self):
- # cidr address
- args = dict(
- destination="10.10.10.10",
- netmask='32'
- )
- p = ModuleParameters(params=args)
- assert p.destination == '10.10.10.10/32'
-
- # netmask
- args = dict(
- destination="10.10.10.10",
- netmask="255.255.255.255"
- )
- p = ModuleParameters(params=args)
- assert p.destination == '10.10.10.10/32'
-
- def test_vlan_with_partition(self):
- args = dict(
- vlan="/Common/foo",
- gateway_address="10.10.10.10"
- )
- p = ModuleParameters(params=args)
- assert p.vlan == '/Common/foo'
- assert p.gateway_address == '10.10.10.10'
-
- def test_api_route_domain(self):
- args = dict(
- destination="1.1.1.1/32%2"
- )
- p = ApiParameters(params=args)
- assert p.route_domain == 2
-
- args = dict(
- destination="2700:bc00:1f10:101::6/64%2"
- )
- p = ApiParameters(params=args)
- assert p.route_domain == 2
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create_blackhole(self, *args):
- set_module_args(dict(
- name='test-route',
- state='present',
- destination='10.10.10.10',
- netmask='255.255.255.255',
- reject='yes',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- mutually_exclusive=self.spec.mutually_exclusive,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(return_value=False)
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
- assert results['changed'] is True
-
- def test_create_route_to_pool(self, *args):
- set_module_args(dict(
- name='test-route',
- state='present',
- destination='10.10.10.10',
- netmask='255.255.255.255',
- pool="test-pool",
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- mutually_exclusive=self.spec.mutually_exclusive,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(return_value=False)
- mm.create_on_device = Mock(return_value=True)
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['pool'] == 'test-pool'
-
- def test_create_route_to_vlan(self, *args):
- set_module_args(dict(
- name='test-route',
- state='present',
- destination='10.10.10.10',
- netmask='255.255.255.255',
- vlan="test-vlan",
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- mutually_exclusive=self.spec.mutually_exclusive,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(return_value=False)
- mm.create_on_device = Mock(return_value=True)
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['vlan'] == '/Common/test-vlan'
-
- def test_update_description(self, *args):
- set_module_args(dict(
- name='test-route',
- state='present',
- description='foo description',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- mutually_exclusive=self.spec.mutually_exclusive,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- current = ApiParameters(params=load_fixture('load_net_route_description.json'))
- mm.exists = Mock(return_value=True)
- mm.update_on_device = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['description'] == 'foo description'
-
- def test_update_description_idempotent(self, *args):
- set_module_args(dict(
- name='test-route',
- state='present',
- description='asdasd',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- mutually_exclusive=self.spec.mutually_exclusive,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- current = ApiParameters(params=load_fixture('load_net_route_description.json'))
- mm.exists = Mock(return_value=True)
- mm.update_on_device = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- results = mm.exec_module()
-
- # There is no assert for the description, because it should
- # not have changed
- assert results['changed'] is False
-
- def test_delete(self, *args):
- set_module_args(dict(
- name='test-route',
- state='absent',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- mutually_exclusive=self.spec.mutually_exclusive,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(side_effect=[True, False])
- mm.remove_from_device = Mock(return_value=True)
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert 'description' not in results
-
- def test_invalid_unknown_params(self, *args):
- set_module_args(dict(
- name='test-route',
- state='present',
- foo="bar",
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
- with patch('ansible.module_utils.f5_utils.AnsibleModule.fail_json') as mo:
- mo.return_value = True
- AnsibleModule(
- argument_spec=self.spec.argument_spec,
- mutually_exclusive=self.spec.mutually_exclusive,
- supports_check_mode=self.spec.supports_check_mode
- )
- assert mo.call_count == 1
-
- def test_create_with_route_domain(self, *args):
- set_module_args(dict(
- name='test-route',
- state='present',
- destination='10.10.10.10',
- netmask='255.255.255.255',
- route_domain=1,
- reject='yes',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- mutually_exclusive=self.spec.mutually_exclusive,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(return_value=False)
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
- assert results['changed'] is True
- assert results['route_domain'] == 1
- assert results['destination'] == '10.10.10.10%1/32'
diff --git a/test/units/modules/network/f5/test_bigip_sys_daemon_log_tmm.py b/test/units/modules/network/f5/test_bigip_sys_daemon_log_tmm.py
deleted file mode 100644
index 2c7e5330b1..0000000000
--- a/test/units/modules/network/f5/test_bigip_sys_daemon_log_tmm.py
+++ /dev/null
@@ -1,138 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2018, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_sys_daemon_log_tmm import ApiParameters
- from library.modules.bigip_sys_daemon_log_tmm import ModuleParameters
- from library.modules.bigip_sys_daemon_log_tmm import ModuleManager
- from library.modules.bigip_sys_daemon_log_tmm import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_sys_daemon_log_tmm import ApiParameters
- from ansible.modules.network.f5.bigip_sys_daemon_log_tmm import ModuleParameters
- from ansible.modules.network.f5.bigip_sys_daemon_log_tmm import ModuleManager
- from ansible.modules.network.f5.bigip_sys_daemon_log_tmm import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- arp_log_level='warning',
- http_compression_log_level='error',
- http_log_level='error',
- ip_log_level='warning',
- irule_log_level='informational',
- layer4_log_level='notice',
- net_log_level='warning',
- os_log_level='notice',
- pva_log_level='debug',
- ssl_log_level='warning',
- )
- p = ModuleParameters(params=args)
- assert p.arp_log_level == 'warning'
- assert p.http_compression_log_level == 'error'
- assert p.http_log_level == 'error'
- assert p.ip_log_level == 'warning'
- assert p.irule_log_level == 'informational'
- assert p.layer4_log_level == 'notice'
- assert p.net_log_level == 'warning'
- assert p.os_log_level == 'notice'
- assert p.pva_log_level == 'debug'
- assert p.ssl_log_level == 'warning'
-
- def test_api_parameters(self):
- args = load_fixture('load_tmm_log.json')
- p = ApiParameters(params=args)
- assert p.arp_log_level == 'warning'
- assert p.http_compression_log_level == 'error'
- assert p.http_log_level == 'error'
- assert p.ip_log_level == 'warning'
- assert p.irule_log_level == 'informational'
- assert p.layer4_log_level == 'notice'
- assert p.net_log_level == 'warning'
- assert p.os_log_level == 'notice'
- assert p.pva_log_level == 'informational'
- assert p.ssl_log_level == 'warning'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_update(self, *args):
- set_module_args(dict(
- arp_log_level='debug',
- layer4_log_level='debug',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- # Configure the parameters that would be returned by querying the
- # remote device
- current = ApiParameters(params=load_fixture('load_tmm_log.json'))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(return_value=False)
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_sys_db.py b/test/units/modules/network/f5/test_bigip_sys_db.py
deleted file mode 100644
index 94d12fa000..0000000000
--- a/test/units/modules/network/f5/test_bigip_sys_db.py
+++ /dev/null
@@ -1,130 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_sys_db import Parameters
- from library.modules.bigip_sys_db import ModuleManager
- from library.modules.bigip_sys_db import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_sys_db import Parameters
- from ansible.modules.network.f5.bigip_sys_db import ModuleManager
- from ansible.modules.network.f5.bigip_sys_db import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- key='foo',
- value='bar',
- )
- p = Parameters(params=args)
- assert p.key == 'foo'
- assert p.value == 'bar'
-
- def test_api_parameters(self):
- args = dict(
- key='foo',
- value='bar',
- defaultValue='baz',
-
- )
- p = Parameters(params=args)
- assert p.key == 'foo'
- assert p.value == 'bar'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create_blackhole(self, *args):
- set_module_args(dict(
- key='provision.cpu.afm',
- value='1',
- state='present',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- # Configure the parameters that would be returned by querying the
- # remote device
- current = Parameters(
- dict(
- kind="tm:sys:db:dbstate",
- name="provision.cpu.afm",
- fullPath="provision.cpu.afm",
- generation=1,
- selfLink="https://localhost/mgmt/tm/sys/db/provision.cpu.afm?ver=11.6.1",
- defaultValue="0",
- scfConfig="false",
- value="0",
- valueRange="integer min:0 max:100"
- )
- )
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(return_value=False)
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_sys_global.py b/test/units/modules/network/f5/test_bigip_sys_global.py
deleted file mode 100644
index 78920c191d..0000000000
--- a/test/units/modules/network/f5/test_bigip_sys_global.py
+++ /dev/null
@@ -1,133 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_sys_global import ApiParameters
- from library.modules.bigip_sys_global import ModuleParameters
- from library.modules.bigip_sys_global import ModuleManager
- from library.modules.bigip_sys_global import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_sys_global import ApiParameters
- from ansible.modules.network.f5.bigip_sys_global import ModuleParameters
- from ansible.modules.network.f5.bigip_sys_global import ModuleManager
- from ansible.modules.network.f5.bigip_sys_global import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- banner_text='this is a banner',
- console_timeout=100,
- gui_setup='yes',
- lcd_display='yes',
- mgmt_dhcp='yes',
- net_reboot='yes',
- quiet_boot='yes',
- security_banner='yes',
- )
- p = ModuleParameters(params=args)
- assert p.banner_text == 'this is a banner'
- assert p.console_timeout == 100
- assert p.gui_setup == 'yes'
- assert p.lcd_display == 'yes'
- assert p.mgmt_dhcp == 'yes'
- assert p.net_reboot == 'yes'
- assert p.quiet_boot == 'yes'
- assert p.security_banner == 'yes'
-
- def test_api_parameters(self):
- args = load_fixture('load_sys_global_settings.json')
- p = ApiParameters(params=args)
- assert 'Welcome to the BIG-IP Configuration Utility' in p.banner_text
- assert p.console_timeout == 0
- assert p.gui_setup == 'no'
- assert p.lcd_display == 'yes'
- assert p.mgmt_dhcp == 'yes'
- assert p.net_reboot == 'no'
- assert p.quiet_boot == 'yes'
- assert p.security_banner == 'yes'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_update(self, *args):
- set_module_args(dict(
- banner_text='this is a banner',
- console_timeout=100,
- state='present',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- # Configure the parameters that would be returned by querying the
- # remote device
- current = ApiParameters(params=load_fixture('load_sys_global_settings.json'))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(return_value=False)
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_timer_policy.py b/test/units/modules/network/f5/test_bigip_timer_policy.py
deleted file mode 100644
index 58526385ef..0000000000
--- a/test/units/modules/network/f5/test_bigip_timer_policy.py
+++ /dev/null
@@ -1,112 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2017, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_timer_policy import ApiParameters
- from library.modules.bigip_timer_policy import ModuleParameters
- from library.modules.bigip_timer_policy import ModuleManager
- from library.modules.bigip_timer_policy import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_timer_policy import ApiParameters
- from ansible.modules.network.f5.bigip_timer_policy import ModuleParameters
- from ansible.modules.network.f5.bigip_timer_policy import ModuleManager
- from ansible.modules.network.f5.bigip_timer_policy import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- description='my description'
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.description == 'my description'
-
- def test_api_parameters(self):
- args = load_fixture('load_net_timer_policy_1.json')
-
- p = ApiParameters(params=args)
- assert p.name == 'timer1'
- assert p.description == 'my description'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create(self, *args):
- set_module_args(dict(
- name='foo',
- description='my description',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- mm = ModuleManager(module=module)
- mm.create_on_device = Mock(return_value=True)
- mm.exists = Mock(return_value=False)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['description'] == 'my description'
diff --git a/test/units/modules/network/f5/test_bigip_traffic_selector.py b/test/units/modules/network/f5/test_bigip_traffic_selector.py
deleted file mode 100644
index 63ac7b3a88..0000000000
--- a/test/units/modules/network/f5/test_bigip_traffic_selector.py
+++ /dev/null
@@ -1,108 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2018, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_traffic_selector import ApiParameters
- from library.modules.bigip_traffic_selector import ModuleParameters
- from library.modules.bigip_traffic_selector import ModuleManager
- from library.modules.bigip_traffic_selector import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_traffic_selector import ApiParameters
- from ansible.modules.network.f5.bigip_traffic_selector import ModuleParameters
- from ansible.modules.network.f5.bigip_traffic_selector import ModuleManager
- from ansible.modules.network.f5.bigip_traffic_selector import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='selector1',
- )
- p = ModuleParameters(params=args)
- assert p.name == 'selector1'
-
- def test_api_parameters(self):
- args = dict(
- name='selector1',
- )
- p = ApiParameters(params=args)
- assert p.name == 'selector1'
-
-
-class TestUntypedManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create(self, *args):
- set_module_args(dict(
- name='selector1',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.create_on_device = Mock(return_value=True)
- mm.exists = Mock(return_value=False)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_trunk.py b/test/units/modules/network/f5/test_bigip_trunk.py
deleted file mode 100644
index e3f285283e..0000000000
--- a/test/units/modules/network/f5/test_bigip_trunk.py
+++ /dev/null
@@ -1,141 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2017, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_trunk import ApiParameters
- from library.modules.bigip_trunk import ModuleParameters
- from library.modules.bigip_trunk import ModuleManager
- from library.modules.bigip_trunk import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_trunk import ApiParameters
- from ansible.modules.network.f5.bigip_trunk import ModuleParameters
- from ansible.modules.network.f5.bigip_trunk import ModuleManager
- from ansible.modules.network.f5.bigip_trunk import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- interfaces=[
- '1.3', '1.1'
- ],
- link_selection_policy='auto',
- frame_distribution_hash='destination-mac',
- lacp_enabled=True,
- lacp_mode='active',
- lacp_timeout='long'
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.interfaces == ['1.1', '1.3']
- assert p.link_selection_policy == 'auto'
- assert p.frame_distribution_hash == 'dst-mac'
- assert p.lacp_enabled is True
- assert p.lacp_mode == 'active'
- assert p.lacp_timeout == 'long'
-
- def test_api_parameters(self):
- args = load_fixture('load_tm_net_trunk_1.json')
-
- p = ApiParameters(params=args)
- assert p.name == 'foo'
- assert p.frame_distribution_hash == 'dst-mac'
- assert p.lacp_enabled is False
- assert p.lacp_mode == 'active'
- assert p.lacp_timeout == 'long'
- assert p.interfaces == ['1.3']
- assert p.link_selection_policy == 'maximum-bandwidth'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create(self, *args):
- set_module_args(dict(
- name='foo',
- interfaces=[
- '1.3', '1.1'
- ],
- link_selection_policy='auto',
- frame_distribution_hash='destination-mac',
- lacp_enabled=True,
- lacp_mode='active',
- lacp_timeout='long',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.create_on_device = Mock(return_value=True)
- mm.exists = Mock(return_value=False)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['link_selection_policy'] == 'auto'
- assert results['frame_distribution_hash'] == 'destination-mac'
- assert results['lacp_enabled'] is True
- assert results['lacp_mode'] == 'active'
- assert results['lacp_timeout'] == 'long'
diff --git a/test/units/modules/network/f5/test_bigip_tunnel.py b/test/units/modules/network/f5/test_bigip_tunnel.py
deleted file mode 100644
index cee0391259..0000000000
--- a/test/units/modules/network/f5/test_bigip_tunnel.py
+++ /dev/null
@@ -1,112 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2017, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_tunnel import ApiParameters
- from library.modules.bigip_tunnel import ModuleParameters
- from library.modules.bigip_tunnel import ModuleManager
- from library.modules.bigip_tunnel import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_tunnel import ApiParameters
- from ansible.modules.network.f5.bigip_tunnel import ModuleParameters
- from ansible.modules.network.f5.bigip_tunnel import ModuleManager
- from ansible.modules.network.f5.bigip_tunnel import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- profile='ipip',
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.profile == '/Common/ipip'
-
- def test_api_parameters(self):
- args = load_fixture('load_net_tunnel_1.json')
-
- p = ApiParameters(params=args)
- assert p.name == 'tunnel1'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create(self, *args):
- set_module_args(dict(
- name='foo',
- profile='ipip',
- local_address='2.2.2.2.',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.create_on_device = Mock(return_value=True)
- mm.exists = Mock(return_value=False)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_ucs.py b/test/units/modules/network/f5/test_bigip_ucs.py
deleted file mode 100644
index 9f7e716b99..0000000000
--- a/test/units/modules/network/f5/test_bigip_ucs.py
+++ /dev/null
@@ -1,411 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_ucs import ModuleParameters
- from library.modules.bigip_ucs import ModuleManager
- from library.modules.bigip_ucs import ArgumentSpec
- from library.modules.bigip_ucs import V1Manager
- from library.modules.bigip_ucs import V2Manager
-
- from library.module_utils.network.f5.common import F5ModuleError
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
- from test.units.compat.mock import patch
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_ucs import ModuleParameters
- from ansible.modules.network.f5.bigip_ucs import ModuleManager
- from ansible.modules.network.f5.bigip_ucs import ArgumentSpec
- from ansible.modules.network.f5.bigip_ucs import V1Manager
- from ansible.modules.network.f5.bigip_ucs import V2Manager
-
- from ansible.module_utils.network.f5.common import F5ModuleError
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
- from units.compat.mock import patch
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- ucs="/root/bigip.localhost.localdomain.ucs",
- force=True,
- include_chassis_level_config=True,
- no_license=True,
- no_platform_check=True,
- passphrase="foobar",
- reset_trust=True,
- state='installed'
- )
-
- p = ModuleParameters(params=args)
- assert p.ucs == '/root/bigip.localhost.localdomain.ucs'
- assert p.force is True
- assert p.include_chassis_level_config is True
- assert p.no_license is True
- assert p.no_platform_check is True
- assert p.passphrase == "foobar"
- assert p.reset_trust is True
- assert p.install_command == \
- "tmsh load sys ucs /var/local/ucs/bigip.localhost.localdomain.ucs " \
- "include-chassis-level-config no-license no-platform-check " \
- "passphrase foobar reset-trust"
-
- def test_module_parameters_false_ucs_booleans(self):
- args = dict(
- ucs="/root/bigip.localhost.localdomain.ucs",
- include_chassis_level_config=False,
- no_license=False,
- no_platform_check=False,
- reset_trust=False
- )
-
- p = ModuleParameters(params=args)
- assert p.ucs == '/root/bigip.localhost.localdomain.ucs'
- assert p.include_chassis_level_config is False
- assert p.no_license is False
- assert p.no_platform_check is False
- assert p.reset_trust is False
- assert p.install_command == "tmsh load sys ucs /var/local/ucs/bigip.localhost.localdomain.ucs"
-
-
-class TestV1Manager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
- self.patcher1 = patch('time.sleep')
- self.patcher1.start()
-
- def tearDown(self):
- self.patcher1.stop()
-
- def test_ucs_default_present(self, *args):
- set_module_args(dict(
- ucs="/root/bigip.localhost.localdomain.ucs",
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.is_version_v1 = Mock(return_value=True)
-
- vm = V1Manager(module=module)
- vm.create_on_device = Mock(return_value=True)
- vm.exists = Mock(side_effect=[False, True])
-
- results = vm.exec_module()
-
- assert results['changed'] is True
-
- def test_ucs_explicit_present(self, *args):
- set_module_args(dict(
- ucs="/root/bigip.localhost.localdomain.ucs",
- state='present',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.is_version_v1 = Mock(return_value=True)
-
- vm = V1Manager(module=module)
- vm.create_on_device = Mock(return_value=True)
- vm.exists = Mock(side_effect=[False, True])
-
- results = vm.exec_module()
-
- assert results['changed'] is True
-
- def test_ucs_installed(self, *args):
- set_module_args(dict(
- ucs="/root/bigip.localhost.localdomain.ucs",
- state='installed',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.is_version_v1 = Mock(return_value=True)
-
- vm = V1Manager(module=module)
- vm.create_on_device = Mock(return_value=True)
- vm.exists = Mock(return_value=True)
- vm.install_on_device = Mock(return_value=True)
-
- results = vm.exec_module()
-
- assert results['changed'] is True
-
- def test_ucs_absent_exists(self, *args):
- set_module_args(dict(
- ucs="/root/bigip.localhost.localdomain.ucs",
- state='absent',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.is_version_v1 = Mock(return_value=True)
-
- vm = V1Manager(module=module)
- vm.remove_from_device = Mock(return_value=True)
- vm.exists = Mock(side_effect=[True, False])
-
- results = vm.exec_module()
-
- assert results['changed'] is True
-
- def test_ucs_absent_fails(self, *args):
- set_module_args(dict(
- ucs="/root/bigip.localhost.localdomain.ucs",
- state='absent',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.is_version_v1 = Mock(return_value=True)
-
- vm = V1Manager(module=module)
- vm.remove_from_device = Mock(return_value=True)
- vm.exists = Mock(side_effect=[True, True])
-
- with pytest.raises(F5ModuleError) as ex:
- vm.exec_module()
- assert 'Failed to delete' in str(ex.value)
-
-
-class TestV2Manager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_ucs_default_present(self, *args):
- set_module_args(dict(
- ucs="/root/bigip.localhost.localdomain.ucs",
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.is_version_v1 = Mock(return_value=False)
-
- vm = V2Manager(module=module)
- vm.create_on_device = Mock(return_value=True)
- vm.exists = Mock(side_effect=[False, True])
-
- results = vm.exec_module()
-
- assert results['changed'] is True
-
- def test_ucs_explicit_present(self, *args):
- set_module_args(dict(
- ucs="/root/bigip.localhost.localdomain.ucs",
- state='present',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.is_version_v1 = Mock(return_value=False)
-
- vm = V2Manager(module=module)
- vm.create_on_device = Mock(return_value=True)
- vm.exists = Mock(side_effect=[False, True])
-
- results = vm.exec_module()
-
- assert results['changed'] is True
-
- def test_ucs_installed(self, *args):
- set_module_args(dict(
- ucs="/root/bigip.localhost.localdomain.ucs",
- state='installed',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.is_version_v1 = Mock(return_value=False)
-
- vm = V2Manager(module=module)
- vm.create_on_device = Mock(return_value=True)
- vm.exists = Mock(return_value=True)
- vm.install_on_device = Mock(return_value=True)
-
- results = vm.exec_module()
-
- assert results['changed'] is True
-
- def test_ucs_absent_exists(self, *args):
- set_module_args(dict(
- ucs="/root/bigip.localhost.localdomain.ucs",
- state='absent',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.is_version_v1 = Mock(return_value=False)
-
- vm = V1Manager(module=module)
- vm.remove_from_device = Mock(return_value=True)
- vm.exists = Mock(side_effect=[True, False])
-
- results = vm.exec_module()
-
- assert results['changed'] is True
-
- def test_ucs_absent_fails(self, *args):
- set_module_args(dict(
- ucs="/root/bigip.localhost.localdomain.ucs",
- state='absent',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.is_version_v1 = Mock(return_value=False)
-
- vm = V1Manager(module=module)
- vm.remove_from_device = Mock(return_value=True)
- vm.exists = Mock(side_effect=[True, True])
-
- with pytest.raises(F5ModuleError) as ex:
- vm.exec_module()
- assert 'Failed to delete' in str(ex.value)
diff --git a/test/units/modules/network/f5/test_bigip_ucs_fetch.py b/test/units/modules/network/f5/test_bigip_ucs_fetch.py
deleted file mode 100644
index 1582b7705d..0000000000
--- a/test/units/modules/network/f5/test_bigip_ucs_fetch.py
+++ /dev/null
@@ -1,131 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_ucs_fetch import Parameters
- from library.modules.bigip_ucs_fetch import ModuleManager
- from library.modules.bigip_ucs_fetch import V1Manager
- from library.modules.bigip_ucs_fetch import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
- from test.units.compat.mock import patch
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_ucs_fetch import Parameters
- from ansible.modules.network.f5.bigip_ucs_fetch import ModuleManager
- from ansible.modules.network.f5.bigip_ucs_fetch import V1Manager
- from ansible.modules.network.f5.bigip_ucs_fetch import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
- from units.compat.mock import patch
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- backup='yes',
- create_on_missing='yes',
- encryption_password='my-password',
- dest='/tmp/foo.ucs',
- force='yes',
- fail_on_missing='no',
- src='remote.ucs',
- )
- p = Parameters(params=args)
- assert p.backup == 'yes'
-
-
-class TestV1Manager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create(self, *args):
- set_module_args(dict(
- backup='yes',
- create_on_missing='yes',
- dest='/tmp/foo.ucs',
- force='yes',
- fail_on_missing='no',
- src='remote.ucs',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- add_file_common_args=self.spec.add_file_common_args
- )
-
- # Override methods to force specific logic in the module to happen
- m1 = V1Manager(module=module)
- m1.exists = Mock(return_value=False)
- m1.create_on_device = Mock(return_value=True)
- m1._get_backup_file = Mock(return_value='/tmp/foo.backup')
- m1.download_from_device = Mock(return_value=True)
- m1._set_checksum = Mock(return_value=12345)
- m1._set_md5sum = Mock(return_value=54321)
-
- mm = ModuleManager(module=module)
- mm.get_manager = Mock(return_value=m1)
- mm.is_version_v1 = Mock(return_value=True)
-
- p1 = patch('os.path.exists', return_value=True)
- p1.start()
- p2 = patch('os.path.isdir', return_value=False)
- p2.start()
-
- results = mm.exec_module()
-
- p1.stop()
- p2.stop()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_user.py b/test/units/modules/network/f5/test_bigip_user.py
deleted file mode 100644
index 3065b6c136..0000000000
--- a/test/units/modules/network/f5/test_bigip_user.py
+++ /dev/null
@@ -1,892 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_user import Parameters
- from library.modules.bigip_user import ModuleManager
- from library.modules.bigip_user import ArgumentSpec
- from library.modules.bigip_user import UnpartitionedManager
- from library.modules.bigip_user import PartitionedManager
-
- from library.module_utils.network.f5.common import F5ModuleError
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_user import Parameters
- from ansible.modules.network.f5.bigip_user import ModuleManager
- from ansible.modules.network.f5.bigip_user import ArgumentSpec
- from ansible.modules.network.f5.bigip_user import UnpartitionedManager
- from ansible.modules.network.f5.bigip_user import PartitionedManager
-
- from ansible.module_utils.network.f5.common import F5ModuleError
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- access = [{'name': 'Common', 'role': 'guest'}]
- args = dict(
- username_credential='someuser',
- password_credential='testpass',
- full_name='Fake Person',
- partition_access=access,
- update_password='always'
- )
-
- p = Parameters(params=args)
- assert p.username_credential == 'someuser'
- assert p.password_credential == 'testpass'
- assert p.full_name == 'Fake Person'
- assert p.partition_access == access
- assert p.update_password == 'always'
-
- def test_api_parameters(self):
- access = [{'name': 'Common', 'role': 'guest'}]
- args = dict(
- name='someuser',
- description='Fake Person',
- partitionAccess=access,
- shell='none'
- )
-
- p = Parameters(params=args)
- assert p.name == 'someuser'
- assert p.full_name == 'Fake Person'
- assert p.partition_access == access
- assert p.shell == 'none'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create_user(self, *args):
- access = [{'name': 'Common', 'role': 'guest'}]
- set_module_args(dict(
- username_credential='someuser',
- password_credential='testpass',
- partition_access=access,
- update_password='on_create',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods to force specific logic in the module to happen
- pm = PartitionedManager(module=module, params=module.params)
- pm.create_on_device = Mock(return_value=True)
- pm.exists = Mock(return_value=False)
-
- mm = ModuleManager(module=module)
- mm.is_version_less_than_13 = Mock(return_value=False)
- mm.get_manager = Mock(return_value=pm)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['partition_access'] == access
-
- def test_create_user_no_password(self, *args):
- access = [{'name': 'Common', 'role': 'guest'}]
- set_module_args(dict(
- username_credential='someuser',
- partition_access=access,
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods to force specific logic in the module to happen
- pm = PartitionedManager(module=module, params=module.params)
- pm.create_on_device = Mock(return_value=True)
- pm.exists = Mock(return_value=False)
-
- mm = ModuleManager(module=module)
- mm.is_version_less_than_13 = Mock(return_value=False)
- mm.get_manager = Mock(return_value=pm)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['partition_access'] == access
-
- def test_create_user_partition_access_raises(self, *args):
- set_module_args(dict(
- username_credential='someuser',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods to force specific logic in the module to happen
- pm = PartitionedManager(module=module, params=module.params)
- pm.create_on_device = Mock(return_value=True)
- pm.exists = Mock(return_value=False)
-
- mm = ModuleManager(module=module)
- mm.is_version_less_than_13 = Mock(return_value=False)
- mm.get_manager = Mock(return_value=pm)
-
- msg = "The 'partition_access' option " \
- "is required when creating a resource."
-
- with pytest.raises(F5ModuleError) as ex:
- mm.exec_module()
- assert str(ex.value) == msg
-
- def test_create_user_shell_bash(self, *args):
- access = [{'name': 'all', 'role': 'admin'}]
- set_module_args(dict(
- username_credential='someuser',
- password_credential='testpass',
- partition_access=access,
- update_password='on_create',
- shell='bash',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods to force specific logic in the module to happen
- pm = PartitionedManager(module=module, params=module.params)
- pm.create_on_device = Mock(return_value=True)
- pm.exists = Mock(return_value=False)
-
- mm = ModuleManager(module=module)
- mm.is_version_less_than_13 = Mock(return_value=False)
- mm.get_manager = Mock(return_value=pm)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['partition_access'] == access
-
- def test_create_user_shell_not_permitted_raises(self, *args):
- access = [{'name': 'Common', 'role': 'guest'}]
- set_module_args(dict(
- username_credential='someuser',
- password_credential='testpass',
- partition_access=access,
- update_password='on_create',
- shell='bash',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods to force specific logic in the module to happen
- pm = PartitionedManager(module=module, params=module.params)
- pm.create_on_device = Mock(return_value=True)
- pm.exists = Mock(return_value=False)
-
- mm = ModuleManager(module=module)
- mm.is_version_less_than_13 = Mock(return_value=False)
- mm.get_manager = Mock(return_value=pm)
-
- msg = "Shell access is only available to 'admin' or " \
- "'resource-admin' roles."
-
- with pytest.raises(F5ModuleError) as ex:
- mm.exec_module()
- assert str(ex.value) == msg
-
- def test_update_user_password_no_pass(self, *args):
- set_module_args(dict(
- username_credential='someuser',
- password_credential='testpass',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Configure the parameters that would be returned by querying the
- # remote device
- current = Parameters(params=load_fixture('load_auth_user_no_pass.json'))
-
- # Override methods to force specific logic in the module to happen
- pm = PartitionedManager(module=module, params=module.params)
- pm.exists = Mock(return_value=True)
- pm.update_on_device = Mock(return_value=True)
- pm.read_current_from_device = Mock(return_value=current)
-
- mm = ModuleManager(module=module)
- mm.is_version_less_than_13 = Mock(return_value=False)
- mm.get_manager = Mock(return_value=pm)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
-
- def test_update_user_password_with_pass(self, *args):
- set_module_args(dict(
- username_credential='someuser',
- password_credential='testpass',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Configure the parameters that would be returned by querying the
- # remote device
- current = Parameters(params=load_fixture('load_auth_user_with_pass.json'))
-
- # Override methods to force specific logic in the module to happen
- pm = PartitionedManager(module=module, params=module.params)
- pm.exists = Mock(return_value=True)
- pm.update_on_device = Mock(return_value=True)
- pm.read_current_from_device = Mock(return_value=current)
-
- mm = ModuleManager(module=module)
- mm.is_version_less_than_13 = Mock(return_value=False)
- mm.get_manager = Mock(return_value=pm)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
-
- def test_update_user_shell_to_none(self, *args):
- set_module_args(dict(
- username_credential='someuser',
- shell='none',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Configure the parameters that would be returned by querying the
- # remote device
- current = Parameters(
- params=dict(
- user='admin',
- shell='tmsh'
- )
- )
-
- # Override methods to force specific logic in the module to happen
- pm = PartitionedManager(module=module, params=module.params)
- pm.exists = Mock(return_value=True)
- pm.update_on_device = Mock(return_value=True)
- pm.read_current_from_device = Mock(return_value=current)
-
- mm = ModuleManager(module=module)
- mm.is_version_less_than_13 = Mock(return_value=False)
- mm.get_manager = Mock(return_value=pm)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['shell'] == 'none'
-
- def test_update_user_shell_to_none_shell_attribute_missing(self, *args):
- set_module_args(dict(
- username_credential='someuser',
- shell='none',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Configure the parameters that would be returned by querying the
- # remote device
- access = [{'name': 'Common', 'role': 'guest'}]
- current = Parameters(
- params=dict(
- user='admin',
- partition_access=access
- )
- )
-
- # Override methods to force specific logic in the module to happen
- pm = PartitionedManager(module=module, params=module.params)
- pm.exists = Mock(return_value=True)
- pm.update_on_device = Mock(return_value=True)
- pm.read_current_from_device = Mock(return_value=current)
-
- mm = ModuleManager(module=module)
- mm.is_version_less_than_13 = Mock(return_value=False)
- mm.get_manager = Mock(return_value=pm)
-
- results = mm.exec_module()
-
- assert results['changed'] is False
- assert not hasattr(results, 'shell')
-
- def test_update_user_shell_to_bash(self, *args):
- set_module_args(dict(
- username_credential='someuser',
- shell='bash',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Configure the parameters that would be returned by querying the
- # remote device
- access = [{'name': 'all', 'role': 'admin'}]
- current = Parameters(
- params=dict(
- user='admin',
- shell='tmsh',
- partition_access=access
- )
- )
-
- # Override methods to force specific logic in the module to happen
- upm = UnpartitionedManager(module=module, params=module.params)
- upm.exists = Mock(return_value=True)
- upm.update_on_device = Mock(return_value=True)
- upm.read_current_from_device = Mock(return_value=current)
-
- mm = ModuleManager(module=module)
- mm.is_version_less_than_13 = Mock(return_value=True)
- mm.get_manager = Mock(return_value=upm)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['shell'] == 'bash'
-
- def test_update_user_shell_to_bash_mutliple_roles(self, *args):
- set_module_args(dict(
- username_credential='someuser',
- shell='bash',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Configure the parameters that would be returned by querying the
- # remote device
- access = [
- {'name': 'Common', 'role': 'operator'},
- {'name': 'all', 'role': 'guest'}
- ]
- current = Parameters(
- params=dict(
- user='admin',
- shell='tmsh',
- partition_access=access
- )
- )
-
- # Override methods to force specific logic in the module to happen
- upm = UnpartitionedManager(module=module, params=module.params)
- upm.exists = Mock(return_value=True)
- upm.update_on_device = Mock(return_value=True)
- upm.read_current_from_device = Mock(return_value=current)
-
- mm = ModuleManager(module=module)
- mm.is_version_less_than_13 = Mock(return_value=True)
- mm.get_manager = Mock(return_value=upm)
-
- msg = "Shell access is only available to 'admin' or " \
- "'resource-admin' roles."
-
- with pytest.raises(F5ModuleError) as ex:
- mm.exec_module()
- assert str(ex.value) == msg
-
-
-class TestLegacyManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create_user(self, *args):
- access = [{'name': 'Common', 'role': 'guest'}]
- set_module_args(dict(
- username_credential='someuser',
- password_credential='testpass',
- partition_access=access,
- update_password='on_create',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods to force specific logic in the module to happen
- upm = UnpartitionedManager(module=module, params=module.params)
- upm.create_on_device = Mock(return_value=True)
- upm.exists = Mock(return_value=False)
-
- mm = ModuleManager(module=module)
- mm.is_version_less_than_13 = Mock(return_value=True)
- mm.get_manager = Mock(return_value=upm)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['partition_access'] == access
-
- def test_create_user_no_password(self, *args):
- access = [{'name': 'Common', 'role': 'guest'}]
- set_module_args(dict(
- username_credential='someuser',
- partition_access=access,
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods to force specific logic in the module to happen
- upm = UnpartitionedManager(module=module, params=module.params)
- upm.create_on_device = Mock(return_value=True)
- upm.exists = Mock(return_value=False)
-
- mm = ModuleManager(module=module)
- mm.is_version_less_than_13 = Mock(return_value=True)
- mm.get_manager = Mock(return_value=upm)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['partition_access'] == access
-
- def test_create_user_partition_access_raises(self, *args):
- set_module_args(dict(
- username_credential='someuser',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods to force specific logic in the module to happen
- upm = UnpartitionedManager(module=module, params=module.params)
- upm.create_on_device = Mock(return_value=True)
- upm.exists = Mock(return_value=False)
-
- mm = ModuleManager(module=module)
- mm.is_version_less_than_13 = Mock(return_value=True)
- mm.get_manager = Mock(return_value=upm)
-
- msg = "The 'partition_access' option " \
- "is required when creating a resource."
-
- with pytest.raises(F5ModuleError) as ex:
- mm.exec_module()
- assert str(ex.value) == msg
-
- def test_create_user_shell_bash(self, *args):
- access = [{'name': 'all', 'role': 'admin'}]
- set_module_args(dict(
- username_credential='someuser',
- password_credential='testpass',
- partition_access=access,
- update_password='on_create',
- shell='bash',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods to force specific logic in the module to happen
- upm = UnpartitionedManager(module=module, params=module.params)
- upm.create_on_device = Mock(return_value=True)
- upm.exists = Mock(return_value=False)
-
- mm = ModuleManager(module=module)
- mm.is_version_less_than_13 = Mock(return_value=True)
- mm.get_manager = Mock(return_value=upm)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['partition_access'] == access
-
- def test_create_user_shell_not_permitted_raises(self, *args):
- access = [{'name': 'Common', 'role': 'guest'}]
- set_module_args(dict(
- username_credential='someuser',
- password_credential='testpass',
- partition_access=access,
- update_password='on_create',
- shell='bash',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods to force specific logic in the module to happen
- upm = UnpartitionedManager(module=module, params=module.params)
- upm.create_on_device = Mock(return_value=True)
- upm.exists = Mock(return_value=False)
-
- mm = ModuleManager(module=module)
- mm.is_version_less_than_13 = Mock(return_value=True)
- mm.get_manager = Mock(return_value=upm)
-
- msg = "Shell access is only available to 'admin' or " \
- "'resource-admin' roles."
-
- with pytest.raises(F5ModuleError) as ex:
- mm.exec_module()
- assert str(ex.value) == msg
-
- def test_update_user_password(self, *args):
- set_module_args(dict(
- username_credential='someuser',
- password_credential='testpass',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Configure the parameters that would be returned by querying the
- # remote device
- access = [{'name': 'Common', 'role': 'guest'}]
- current = Parameters(
- params=dict(
- shell='tmsh',
- partition_access=access
- )
- )
-
- # Override methods to force specific logic in the module to happen
- upm = UnpartitionedManager(module=module, params=module.params)
- upm.exists = Mock(return_value=True)
- upm.update_on_device = Mock(return_value=True)
- upm.read_current_from_device = Mock(return_value=current)
-
- mm = ModuleManager(module=module)
- mm.is_version_less_than_13 = Mock(return_value=True)
- mm.get_manager = Mock(return_value=upm)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
-
- def test_update_user_shell_to_none(self, *args):
- set_module_args(dict(
- username_credential='someuser',
- shell='none',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Configure the parameters that would be returned by querying the
- # remote device
- current = Parameters(
- params=dict(
- user='admin',
- shell='tmsh'
- )
- )
-
- # Override methods to force specific logic in the module to happen
- upm = UnpartitionedManager(module=module, params=module.params)
- upm.exists = Mock(return_value=True)
- upm.update_on_device = Mock(return_value=True)
- upm.read_current_from_device = Mock(return_value=current)
-
- mm = ModuleManager(module=module)
- mm.is_version_less_than_13 = Mock(return_value=True)
- mm.get_manager = Mock(return_value=upm)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['shell'] == 'none'
-
- def test_update_user_shell_to_none_shell_attribute_missing(self, *args):
- set_module_args(dict(
- username_credential='someuser',
- shell='none',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Configure the parameters that would be returned by querying the
- # remote device
- access = [{'name': 'Common', 'role': 'guest'}]
- current = Parameters(
- params=dict(
- user='admin',
- partition_access=access
- )
- )
-
- # Override methods to force specific logic in the module to happen
- upm = UnpartitionedManager(module=module, params=module.params)
- upm.exists = Mock(return_value=True)
- upm.update_on_device = Mock(return_value=True)
- upm.read_current_from_device = Mock(return_value=current)
-
- mm = ModuleManager(module=module)
- mm.is_version_less_than_13 = Mock(return_value=True)
- mm.get_manager = Mock(return_value=upm)
-
- results = mm.exec_module()
-
- assert results['changed'] is False
- assert not hasattr(results, 'shell')
-
- def test_update_user_shell_to_bash(self, *args):
- set_module_args(dict(
- username_credential='someuser',
- shell='bash',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Configure the parameters that would be returned by querying the
- # remote device
- access = [{'name': 'all', 'role': 'admin'}]
- current = Parameters(
- params=dict(
- user='admin',
- shell='tmsh',
- partition_access=access
- )
- )
-
- # Override methods to force specific logic in the module to happen
- upm = UnpartitionedManager(module=module, params=module.params)
- upm.exists = Mock(return_value=True)
- upm.update_on_device = Mock(return_value=True)
- upm.read_current_from_device = Mock(return_value=current)
-
- mm = ModuleManager(module=module)
- mm.is_version_less_than_13 = Mock(return_value=True)
- mm.get_manager = Mock(return_value=upm)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['shell'] == 'bash'
-
- def test_update_user_shell_to_bash_mutliple_roles(self, *args):
- set_module_args(dict(
- username_credential='someuser',
- shell='bash',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Configure the parameters that would be returned by querying the
- # remote device
- access = [
- {'name': 'Common', 'role': 'operator'},
- {'name': 'all', 'role': 'guest'}
- ]
- current = Parameters(
- params=dict(
- user='admin',
- shell='tmsh',
- partition_access=access
- )
- )
-
- # Override methods to force specific logic in the module to happen
- upm = UnpartitionedManager(module=module, params=module.params)
- upm.exists = Mock(return_value=True)
- upm.update_on_device = Mock(return_value=True)
- upm.read_current_from_device = Mock(return_value=current)
-
- mm = ModuleManager(module=module)
- mm.is_version_less_than_13 = Mock(return_value=True)
- mm.get_manager = Mock(return_value=upm)
-
- msg = "Shell access is only available to 'admin' or " \
- "'resource-admin' roles."
-
- with pytest.raises(F5ModuleError) as ex:
- mm.exec_module()
- assert str(ex.value) == msg
diff --git a/test/units/modules/network/f5/test_bigip_vcmp_guest.py b/test/units/modules/network/f5/test_bigip_vcmp_guest.py
deleted file mode 100644
index 72230b05c2..0000000000
--- a/test/units/modules/network/f5/test_bigip_vcmp_guest.py
+++ /dev/null
@@ -1,262 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_vcmp_guest import ModuleParameters
- from library.modules.bigip_vcmp_guest import ApiParameters
- from library.modules.bigip_vcmp_guest import ModuleManager
- from library.modules.bigip_vcmp_guest import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
- from test.units.compat.mock import patch
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_vcmp_guest import ModuleParameters
- from ansible.modules.network.f5.bigip_vcmp_guest import ApiParameters
- from ansible.modules.network.f5.bigip_vcmp_guest import ModuleManager
- from ansible.modules.network.f5.bigip_vcmp_guest import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
- from units.compat.mock import patch
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- initial_image='BIGIP-12.1.0.1.0.1447-HF1.iso',
- mgmt_network='bridged',
- mgmt_address='1.2.3.4/24',
- vlans=[
- 'vlan1',
- 'vlan2'
- ]
- )
-
- p = ModuleParameters(params=args)
- assert p.initial_image == 'BIGIP-12.1.0.1.0.1447-HF1.iso'
- assert p.mgmt_network == 'bridged'
-
- def test_module_parameters_mgmt_bridged_without_subnet(self):
- args = dict(
- mgmt_network='bridged',
- mgmt_address='1.2.3.4'
- )
-
- p = ModuleParameters(params=args)
- assert p.mgmt_network == 'bridged'
- assert p.mgmt_address == '1.2.3.4/32'
-
- def test_module_parameters_mgmt_address_cidr(self):
- args = dict(
- mgmt_network='bridged',
- mgmt_address='1.2.3.4/24'
- )
-
- p = ModuleParameters(params=args)
- assert p.mgmt_network == 'bridged'
- assert p.mgmt_address == '1.2.3.4/24'
-
- def test_module_parameters_mgmt_address_subnet(self):
- args = dict(
- mgmt_network='bridged',
- mgmt_address='1.2.3.4/255.255.255.0'
- )
-
- p = ModuleParameters(params=args)
- assert p.mgmt_network == 'bridged'
- assert p.mgmt_address == '1.2.3.4/24'
-
- def test_module_parameters_mgmt_route(self):
- args = dict(
- mgmt_route='1.2.3.4'
- )
-
- p = ModuleParameters(params=args)
- assert p.mgmt_route == '1.2.3.4'
-
- def test_module_parameters_vcmp_software_image_facts(self):
- # vCMP images may include a forward slash in their names. This is probably
- # related to the slots on the system, but it is not a valid value to specify
- # that slot when providing an initial image
- args = dict(
- initial_image='BIGIP-12.1.0.1.0.1447-HF1.iso/1',
- )
-
- p = ModuleParameters(params=args)
- assert p.initial_image == 'BIGIP-12.1.0.1.0.1447-HF1.iso/1'
-
- def test_api_parameters(self):
- args = dict(
- initialImage="BIGIP-tmos-tier2-13.1.0.0.0.931.iso",
- managementGw="2.2.2.2",
- managementIp="1.1.1.1/24",
- managementNetwork="bridged",
- state="deployed",
- vlans=[
- "/Common/vlan1",
- "/Common/vlan2"
- ]
- )
-
- p = ApiParameters(params=args)
- assert p.initial_image == 'BIGIP-tmos-tier2-13.1.0.0.0.931.iso'
- assert p.mgmt_route == '2.2.2.2'
- assert p.mgmt_address == '1.1.1.1/24'
- assert '/Common/vlan1' in p.vlans
- assert '/Common/vlan2' in p.vlans
-
- def test_api_parameters_with_hotfix(self):
- args = dict(
- initialImage="BIGIP-14.1.0.3-0.0.6.iso",
- initialHotfix="Hotfix-BIGIP-14.1.0.3.0.5.6-ENG.iso",
- managementGw="2.2.2.2",
- managementIp="1.1.1.1/24",
- managementNetwork="bridged",
- state="deployed",
- vlans=[
- "/Common/vlan1",
- "/Common/vlan2"
- ]
- )
-
- p = ApiParameters(params=args)
- assert p.initial_image == 'BIGIP-14.1.0.3-0.0.6.iso'
- assert p.initial_hotfix == 'Hotfix-BIGIP-14.1.0.3.0.5.6-ENG.iso'
- assert p.mgmt_route == '2.2.2.2'
- assert p.mgmt_address == '1.1.1.1/24'
- assert '/Common/vlan1' in p.vlans
- assert '/Common/vlan2' in p.vlans
-
-
-class TestManager(unittest.TestCase):
- def setUp(self):
- self.spec = ArgumentSpec()
- self.patcher1 = patch('time.sleep')
- self.patcher1.start()
-
- try:
- self.p1 = patch('library.modules.bigip_vcmp_guest.ModuleParameters.initial_image_exists')
- self.m1 = self.p1.start()
- self.m1.return_value = True
- self.p2 = patch('library.modules.bigip_vcmp_guest.ModuleParameters.initial_hotfix_exists')
- self.m2 = self.p2.start()
- self.m2.return_value = True
- except Exception:
- self.p1 = patch('ansible.modules.network.f5.bigip_vcmp_guest.ModuleParameters.initial_image_exists')
- self.m1 = self.p1.start()
- self.m1.return_value = True
- self.p2 = patch('ansible.modules.network.f5.bigip_vcmp_guest.ModuleParameters.initial_hotfix_exists')
- self.m2 = self.p2.start()
- self.m2.return_value = True
-
- def tearDown(self):
- self.patcher1.stop()
- self.p1.stop()
- self.p2.stop()
-
- def test_create_vcmpguest(self, *args):
- set_module_args(dict(
- name="guest1",
- mgmt_network="bridged",
- mgmt_address="10.10.10.10/24",
- initial_image="BIGIP-13.1.0.0.0.931.iso",
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- required_if=self.spec.required_if
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.create_on_device = Mock(return_value=True)
- mm.exists = Mock(return_value=False)
- mm.is_deployed = Mock(side_effect=[False, True, True, True, True])
- mm.deploy_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['name'] == 'guest1'
-
- def test_create_vcmpguest_with_hotfix(self, *args):
- set_module_args(dict(
- name="guest2",
- mgmt_network="bridged",
- mgmt_address="10.10.10.10/24",
- initial_image="BIGIP-14.1.0.3-0.0.6.iso",
- initial_hotfix="Hotfix-BIGIP-14.1.0.3.0.5.6-ENG.iso",
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- required_if=self.spec.required_if
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.create_on_device = Mock(return_value=True)
- mm.exists = Mock(return_value=False)
- mm.is_deployed = Mock(side_effect=[False, True, True, True, True])
- mm.deploy_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['name'] == 'guest2'
diff --git a/test/units/modules/network/f5/test_bigip_virtual_address.py b/test/units/modules/network/f5/test_bigip_virtual_address.py
deleted file mode 100644
index 0af9e06018..0000000000
--- a/test/units/modules/network/f5/test_bigip_virtual_address.py
+++ /dev/null
@@ -1,235 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_virtual_address import ApiParameters
- from library.modules.bigip_virtual_address import ModuleParameters
- from library.modules.bigip_virtual_address import ModuleManager
- from library.modules.bigip_virtual_address import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_virtual_address import ApiParameters
- from ansible.modules.network.f5.bigip_virtual_address import ModuleParameters
- from ansible.modules.network.f5.bigip_virtual_address import ModuleManager
- from ansible.modules.network.f5.bigip_virtual_address import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- state='present',
- address='1.1.1.1',
- netmask='2.2.2.2',
- connection_limit='10',
- arp_state='enabled',
- auto_delete='enabled',
- icmp_echo='enabled',
- availability_calculation='always',
- )
- p = ModuleParameters(params=args)
- assert p.state == 'present'
- assert p.address == '1.1.1.1'
- assert p.netmask == '2.2.2.2'
- assert p.connection_limit == 10
- assert p.arp is True
- assert p.auto_delete is True
- assert p.icmp_echo == 'enabled'
- assert p.availability_calculation == 'none'
-
- def test_api_parameters(self):
- args = load_fixture('load_ltm_virtual_address_default.json')
- p = ApiParameters(params=args)
- assert p.name == '1.1.1.1'
- assert p.address == '1.1.1.1'
- assert p.arp is True
- assert p.auto_delete is True
- assert p.connection_limit == 0
- assert p.state == 'enabled'
- assert p.icmp_echo == 'enabled'
- assert p.netmask == '255.255.255.255'
- assert p.route_advertisement_type == 'disabled'
- assert p.availability_calculation == 'any'
-
- def test_module_parameters_advertise_route_all(self):
- args = dict(
- availability_calculation='when_all_available'
- )
- p = ModuleParameters(params=args)
- assert p.availability_calculation == 'all'
-
- def test_module_parameters_advertise_route_any(self):
- args = dict(
- availability_calculation='when_any_available'
- )
- p = ModuleParameters(params=args)
- assert p.availability_calculation == 'any'
-
- def test_module_parameters_icmp_echo_disabled(self):
- args = dict(
- icmp_echo='disabled'
- )
- p = ModuleParameters(params=args)
- assert p.icmp_echo == 'disabled'
-
- def test_module_parameters_icmp_echo_selective(self):
- args = dict(
- icmp_echo='selective'
- )
- p = ModuleParameters(params=args)
- assert p.icmp_echo == 'selective'
-
- def test_module_parameters_auto_delete_disabled(self):
- args = dict(
- auto_delete='disabled'
- )
- p = ModuleParameters(params=args)
- assert p.auto_delete is False
-
- def test_module_parameters_arp_state_disabled(self):
- args = dict(
- arp_state='disabled'
- )
- p = ModuleParameters(params=args)
- assert p.arp_state == 'disabled'
-
- def test_module_parameters_state_present(self):
- args = dict(
- state='present'
- )
- p = ModuleParameters(params=args)
- assert p.state == 'present'
- assert p.enabled == 'yes'
-
- def test_module_parameters_state_absent(self):
- args = dict(
- state='absent'
- )
- p = ModuleParameters(params=args)
- assert p.state == 'absent'
-
- def test_module_parameters_state_enabled(self):
- args = dict(
- state='enabled'
- )
- p = ModuleParameters(params=args)
- assert p.state == 'enabled'
- assert p.enabled == 'yes'
-
- def test_module_parameters_state_disabled(self):
- args = dict(
- state='disabled'
- )
- p = ModuleParameters(params=args)
- assert p.state == 'disabled'
- assert p.enabled == 'no'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create_virtual_address(self, *args):
- set_module_args(dict(
- state='present',
- address='1.1.1.1',
- netmask='2.2.2.2',
- connection_limit='10',
- arp_state='enabled',
- auto_delete='enabled',
- icmp_echo='enabled',
- advertise_route='always',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive,
- required_one_of=self.spec.required_one_of
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
- assert results['changed'] is True
-
- def test_delete_virtual_address(self, *args):
- set_module_args(dict(
- state='absent',
- address='1.1.1.1',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive,
- required_one_of=self.spec.required_one_of
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(side_effect=[True, False])
- mm.remove_from_device = Mock(return_value=True)
-
- results = mm.exec_module()
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigip_virtual_server.py b/test/units/modules/network/f5/test_bigip_virtual_server.py
deleted file mode 100644
index 07a63389f9..0000000000
--- a/test/units/modules/network/f5/test_bigip_virtual_server.py
+++ /dev/null
@@ -1,995 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_virtual_server import ModuleParameters
- from library.modules.bigip_virtual_server import ApiParameters
- from library.modules.bigip_virtual_server import ModuleManager
- from library.modules.bigip_virtual_server import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
- from test.units.compat.mock import patch
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_virtual_server import ApiParameters
- from ansible.modules.network.f5.bigip_virtual_server import ModuleParameters
- from ansible.modules.network.f5.bigip_virtual_server import ModuleManager
- from ansible.modules.network.f5.bigip_virtual_server import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
- from units.compat.mock import patch
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_destination_mutex_1(self):
- args = dict(
- destination='1.1.1.1'
- )
- p = ApiParameters(params=args)
- assert p.destination_tuple.ip == '1.1.1.1'
-
- def test_destination_mutex_2(self):
- args = dict(
- destination='1.1.1.1%2'
- )
- p = ApiParameters(params=args)
- assert p.destination_tuple.ip == '1.1.1.1'
- assert p.destination_tuple.route_domain == 2
-
- def test_destination_mutex_3(self):
- args = dict(
- destination='1.1.1.1:80'
- )
- p = ApiParameters(params=args)
- assert p.destination_tuple.ip == '1.1.1.1'
- assert p.destination_tuple.port == 80
-
- def test_destination_mutex_4(self):
- args = dict(
- destination='1.1.1.1%2:80'
- )
- p = ApiParameters(params=args)
- assert p.destination_tuple.ip == '1.1.1.1'
- assert p.destination_tuple.port == 80
- assert p.destination_tuple.route_domain == 2
-
- def test_api_destination_mutex_5(self):
- args = dict(
- destination='/Common/1.1.1.1'
- )
- p = ApiParameters(params=args)
- assert p.destination_tuple.ip == '1.1.1.1'
-
- def test_api_destination_mutex_6(self):
- args = dict(
- destination='/Common/1.1.1.1%2'
- )
- p = ApiParameters(params=args)
- assert p.destination_tuple.ip == '1.1.1.1'
- assert p.destination_tuple.route_domain == 2
-
- def test_api_destination_mutex_7(self):
- args = dict(
- destination='/Common/1.1.1.1:80'
- )
- p = ApiParameters(params=args)
- assert p.destination_tuple.ip == '1.1.1.1'
- assert p.destination_tuple.port == 80
-
- def test_api_destination_mutex_8(self):
- args = dict(
- destination='/Common/1.1.1.1%2:80'
- )
- p = ApiParameters(params=args)
- assert p.destination_tuple.ip == '1.1.1.1'
- assert p.destination_tuple.port == 80
- assert p.destination_tuple.route_domain == 2
-
- def test_destination_mutex_9(self):
- args = dict(
- destination='2700:bc00:1f10:101::6'
- )
- p = ApiParameters(params=args)
- assert p.destination_tuple.ip == '2700:bc00:1f10:101::6'
-
- def test_destination_mutex_10(self):
- args = dict(
- destination='2700:bc00:1f10:101::6%2'
- )
- p = ApiParameters(params=args)
- assert p.destination_tuple.ip == '2700:bc00:1f10:101::6'
- assert p.destination_tuple.route_domain == 2
-
- def test_destination_mutex_11(self):
- args = dict(
- destination='2700:bc00:1f10:101::6.80'
- )
- p = ApiParameters(params=args)
- assert p.destination_tuple.ip == '2700:bc00:1f10:101::6'
- assert p.destination_tuple.port == 80
-
- def test_destination_mutex_12(self):
- args = dict(
- destination='2700:bc00:1f10:101::6%2.80'
- )
- p = ApiParameters(params=args)
- assert p.destination_tuple.ip == '2700:bc00:1f10:101::6'
- assert p.destination_tuple.port == 80
- assert p.destination_tuple.route_domain == 2
-
- def test_module_no_partition_prefix_parameters(self):
- args = dict(
- state='present',
- partition='Common',
- name='my-virtual-server',
- destination='10.10.10.10',
- port=443,
- pool='my-pool',
- snat='Automap',
- description='Test Virtual Server',
- profiles=[
- dict(
- name='fix',
- context='all'
- )
- ],
- enabled_vlans=['vlan2']
- )
- p = ModuleParameters(params=args)
- assert p.name == 'my-virtual-server'
- assert p.partition == 'Common'
- assert p.port == 443
- assert p.destination == '/Common/10.10.10.10:443'
- assert p.pool == '/Common/my-pool'
- assert p.snat == {'type': 'automap'}
- assert p.description == 'Test Virtual Server'
- assert len(p.profiles) == 1
- assert 'context' in p.profiles[0]
- assert 'name' in p.profiles[0]
- assert '/Common/vlan2' in p.enabled_vlans
-
- def test_module_partition_prefix_parameters(self):
- args = dict(
- state='present',
- partition='Common',
- name='my-virtual-server',
- destination='10.10.10.10',
- port=443,
- pool='/Common/my-pool',
- snat='Automap',
- description='Test Virtual Server',
- profiles=[
- dict(
- name='fix',
- context='all'
- )
- ],
- enabled_vlans=['/Common/vlan2']
- )
- p = ModuleParameters(params=args)
- assert p.name == 'my-virtual-server'
- assert p.partition == 'Common'
- assert p.port == 443
- assert p.destination == '/Common/10.10.10.10:443'
- assert p.pool == '/Common/my-pool'
- assert p.snat == {'type': 'automap'}
- assert p.description == 'Test Virtual Server'
- assert len(p.profiles) == 1
- assert 'context' in p.profiles[0]
- assert 'name' in p.profiles[0]
- assert '/Common/vlan2' in p.enabled_vlans
-
- def test_api_parameters_variables(self):
- args = {
- "kind": "tm:ltm:virtual:virtualstate",
- "name": "my-virtual-server",
- "partition": "Common",
- "fullPath": "/Common/my-virtual-server",
- "generation": 54,
- "selfLink": "https://localhost/mgmt/tm/ltm/virtual/~Common~my-virtual-server?expandSubcollections=true&ver=12.1.2",
- "addressStatus": "yes",
- "autoLasthop": "default",
- "cmpEnabled": "yes",
- "connectionLimit": 0,
- "description": "Test Virtual Server",
- "destination": "/Common/10.10.10.10:443",
- "enabled": True,
- "gtmScore": 0,
- "ipProtocol": "tcp",
- "mask": "255.255.255.255",
- "mirror": "disabled",
- "mobileAppTunnel": "disabled",
- "nat64": "disabled",
- "rateLimit": "disabled",
- "rateLimitDstMask": 0,
- "rateLimitMode": "object",
- "rateLimitSrcMask": 0,
- "serviceDownImmediateAction": "none",
- "source": "0.0.0.0/0",
- "sourceAddressTranslation": {
- "type": "automap"
- },
- "sourcePort": "preserve",
- "synCookieStatus": "not-activated",
- "translateAddress": "enabled",
- "translatePort": "enabled",
- "vlansEnabled": True,
- "vsIndex": 3,
- "vlans": [
- "/Common/net1"
- ],
- "vlansReference": [
- {
- "link": "https://localhost/mgmt/tm/net/vlan/~Common~net1?ver=12.1.2"
- }
- ],
- "policiesReference": {
- "link": "https://localhost/mgmt/tm/ltm/virtual/~Common~my-virtual-server/policies?ver=12.1.2",
- "isSubcollection": True
- },
- "profilesReference": {
- "link": "https://localhost/mgmt/tm/ltm/virtual/~Common~my-virtual-server/profiles?ver=12.1.2",
- "isSubcollection": True,
- "items": [
- {
- "kind": "tm:ltm:virtual:profiles:profilesstate",
- "name": "http",
- "partition": "Common",
- "fullPath": "/Common/http",
- "generation": 54,
- "selfLink": "https://localhost/mgmt/tm/ltm/virtual/~Common~my-virtual-server/profiles/~Common~http?ver=12.1.2",
- "context": "all",
- "nameReference": {
- "link": "https://localhost/mgmt/tm/ltm/profile/http/~Common~http?ver=12.1.2"
- }
- },
- {
- "kind": "tm:ltm:virtual:profiles:profilesstate",
- "name": "serverssl",
- "partition": "Common",
- "fullPath": "/Common/serverssl",
- "generation": 54,
- "selfLink": "https://localhost/mgmt/tm/ltm/virtual/~Common~my-virtual-server/profiles/~Common~serverssl?ver=12.1.2",
- "context": "serverside",
- "nameReference": {
- "link": "https://localhost/mgmt/tm/ltm/profile/server-ssl/~Common~serverssl?ver=12.1.2"
- }
- },
- {
- "kind": "tm:ltm:virtual:profiles:profilesstate",
- "name": "tcp",
- "partition": "Common",
- "fullPath": "/Common/tcp",
- "generation": 54,
- "selfLink": "https://localhost/mgmt/tm/ltm/virtual/~Common~my-virtual-server/profiles/~Common~tcp?ver=12.1.2",
- "context": "all",
- "nameReference": {
- "link": "https://localhost/mgmt/tm/ltm/profile/tcp/~Common~tcp?ver=12.1.2"
- }
- }
- ]
- }
- }
- p = ApiParameters(params=args)
- assert p.name == 'my-virtual-server'
- assert p.partition == 'Common'
- assert p.port == 443
- assert p.destination == '/Common/10.10.10.10:443'
- assert p.snat == {'type': 'automap'}
- assert p.description == 'Test Virtual Server'
- assert 'context' in p.profiles[0]
- assert 'name' in p.profiles[0]
- assert 'fullPath' in p.profiles[0]
- assert p.profiles[0]['context'] == 'all'
- assert p.profiles[0]['name'] == 'http'
- assert p.profiles[0]['fullPath'] == '/Common/http'
- assert '/Common/net1' in p.vlans
-
- def test_module_address_translation_enabled(self):
- args = dict(
- address_translation=True
- )
- p = ModuleParameters(params=args)
- assert p.address_translation == 'enabled'
-
- def test_module_address_translation_disabled(self):
- args = dict(
- address_translation=False
- )
- p = ModuleParameters(params=args)
- assert p.address_translation == 'disabled'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- try:
- self.p1 = patch('library.modules.bigip_virtual_server.modules_provisioned')
- self.m1 = self.p1.start()
- self.m1.return_value = ['ltm', 'gtm', 'asm']
- self.p2 = patch(
- 'library.modules.bigip_virtual_server.Parameters._read_current_clientssl_profiles_from_device'
- )
- self.p3 = patch(
- 'library.modules.bigip_virtual_server.Parameters._read_current_serverssl_profiles_from_device'
- )
- self.p4 = patch(
- 'library.modules.bigip_virtual_server.VirtualServerValidator.check_create'
- )
-
- self.p5 = patch(
- 'library.modules.bigip_virtual_server.VirtualServerValidator.check_update'
- )
-
- self.m2 = self.p2.start()
- self.m3 = self.p3.start()
- self.m4 = self.p4.start()
- self.m5 = self.p5.start()
- self.m2.return_value = ['asda', 'clientssl', 'cs_foobar.star.local']
- self.m3.return_value = ['baz', 'serverssl', 'ss_foobar.star.local']
- self.m4.return_value = Mock(return_value=True)
- self.m5.return_value = Mock(return_value=True)
- except Exception:
- self.p1 = patch('ansible.modules.network.f5.bigip_virtual_server.modules_provisioned')
- self.m1 = self.p1.start()
- self.m1.return_value = ['ltm', 'gtm', 'asm']
- self.p2 = patch(
- 'ansible.modules.network.f5.bigip_virtual_server.Parameters._read_current_clientssl_profiles_from_device'
- )
- self.p3 = patch(
- 'ansible.modules.network.f5.bigip_virtual_server.Parameters._read_current_serverssl_profiles_from_device'
- )
- self.p4 = patch(
- 'ansible.modules.network.f5.bigip_virtual_server.VirtualServerValidator.check_create'
- )
- self.p5 = patch(
- 'ansible.modules.network.f5.bigip_virtual_server.VirtualServerValidator.check_update'
- )
- self.m2 = self.p2.start()
- self.m3 = self.p3.start()
- self.m4 = self.p4.start()
- self.m5 = self.p5.start()
- self.m2.return_value = ['asda', 'clientssl', 'cs_foobar.star.local']
- self.m3.return_value = ['baz', 'serverssl', 'ss_foobar.star.local']
- self.m4.return_value = Mock(return_value=True)
- self.m5.return_value = Mock(return_value=True)
-
- def tearDown(self):
- self.p1.stop()
- self.p2.stop()
- self.p3.stop()
- self.p4.stop()
- self.p5.stop()
-
- def test_create_virtual_server(self, *args):
- set_module_args(dict(
- all_profiles=[
- dict(
- name='http'
- ),
- dict(
- name='clientssl'
- )
- ],
- description="Test Virtual Server",
- destination="10.10.10.10",
- name="my-snat-pool",
- partition="Common",
- port="443",
- snat="Automap",
- state="present",
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
-
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=False)
- mm.create_on_device = Mock(return_value=True)
- results = mm.exec_module()
-
- assert results['changed'] is True
-
- def test_delete_virtual_server(self, *args):
- set_module_args(dict(
- all_profiles=[
- 'http', 'clientssl'
- ],
- description="Test Virtual Server",
- destination="10.10.10.10",
- name="my-snat-pool",
- partition="Common",
- port="443",
- snat="Automap",
- state="absent",
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=False)
-
- results = mm.exec_module()
-
- assert results['changed'] is False
-
- def test_enable_vs_that_is_already_enabled(self, *args):
- set_module_args(dict(
- all_profiles=[
- 'http', 'clientssl'
- ],
- description="Test Virtual Server",
- destination="10.10.10.10",
- name="my-snat-pool",
- partition="Common",
- port="443",
- snat="Automap",
- state="absent",
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- # Configure the parameters that would be returned by querying the
- # remote device
- current = ApiParameters(
- dict(
- agent_status_traps='disabled'
- )
- )
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=False)
- mm.update_on_device = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- results = mm.exec_module()
-
- assert results['changed'] is False
-
- def test_modify_port(self, *args):
- set_module_args(dict(
- name="my-virtual-server",
- partition="Common",
- port="10443",
- state="present",
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- # Configure the parameters that would be returned by querying the
- # remote device
- current = ApiParameters(params=load_fixture('load_ltm_virtual_1.json'))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
- results = mm.exec_module()
-
- assert results['changed'] is True
-
- def test_modify_port_idempotent(self, *args):
- set_module_args(dict(
- name="my-virtual-server",
- partition="Common",
- port="443",
- state="present",
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- # Configure the parameters that would be returned by querying the
- # remote device
- current = ApiParameters(params=load_fixture('load_ltm_virtual_1.json'))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- results = mm.exec_module()
-
- assert results['changed'] is False
-
- def test_modify_vlans_idempotent(self, *args):
- set_module_args(dict(
- name="my-virtual-server",
- partition="Common",
- disabled_vlans=[
- "net1"
- ],
- state="present",
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- # Configure the parameters that would be returned by querying the
- # remote device
- current = ApiParameters(params=load_fixture('load_ltm_virtual_2.json'))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
-
- assert results['changed'] is False
-
- def test_modify_profiles(self, *args):
- set_module_args(dict(
- name="my-virtual-server",
- partition="Common",
- profiles=[
- 'http', 'clientssl'
- ],
- state="present",
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- # Configure the parameters that would be returned by querying the
- # remote device
- current = ApiParameters(params=load_fixture('load_ltm_virtual_2.json'))
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert len(results['profiles']) == 2
- assert 'name' in results['profiles'][0]
- assert 'context' in results['profiles'][0]
- assert results['profiles'][0]['name'] == 'http'
- assert results['profiles'][0]['context'] == 'all'
- assert 'name' in results['profiles'][1]
- assert 'context' in results['profiles'][1]
- assert results['profiles'][1]['name'] == 'clientssl'
- assert results['profiles'][1]['context'] == 'clientside'
-
- def test_update_virtual_server(self, *args):
- set_module_args(dict(
- profiles=[
- dict(
- name='http'
- ),
- dict(
- name='clientssl'
- )
- ],
- description="foo virtual",
- destination="1.1.1.1",
- name="my-virtual-server",
- partition="Common",
- port="8443",
- snat="snat-pool1",
- state="disabled",
- source='1.2.3.4/32',
- irules=[
- 'irule1',
- 'irule2'
- ],
- policies=[
- 'policy1',
- 'policy2'
- ],
- enabled_vlans=[
- 'vlan1',
- 'vlan2'
- ],
- pool='my-pool',
- default_persistence_profile='source_addr',
- fallback_persistence_profile='dest_addr',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- # Configure the parameters that would be returned by querying the
- # remote device
- current = ApiParameters(params=load_fixture('load_ltm_virtual_3.json'))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
- mm.update_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['source'] == '1.2.3.4/32'
- assert results['description'] == 'foo virtual'
- assert results['snat'] == '/Common/snat-pool1'
- assert results['destination'] == '1.1.1.1'
- assert results['port'] == 8443
- assert results['default_persistence_profile'] == '/Common/source_addr'
- assert results['fallback_persistence_profile'] == '/Common/dest_addr'
-
- # policies
- assert len(results['policies']) == 2
- assert '/Common/policy1' in results['policies']
- assert '/Common/policy2' in results['policies']
-
- # irules
- assert len(results['irules']) == 2
- assert '/Common/irule1' in results['irules']
- assert '/Common/irule2' in results['irules']
-
- # vlans
- assert len(results['enabled_vlans']) == 2
- assert '/Common/vlan1' in results['enabled_vlans']
- assert '/Common/vlan2' in results['enabled_vlans']
-
- # profiles
- assert len(results['profiles']) == 2
- assert 'name' in results['profiles'][0]
- assert 'context' in results['profiles'][0]
- assert results['profiles'][0]['name'] == 'http'
- assert results['profiles'][0]['context'] == 'all'
- assert 'name' in results['profiles'][1]
- assert 'context' in results['profiles'][1]
- assert results['profiles'][1]['name'] == 'clientssl'
- assert results['profiles'][1]['context'] == 'clientside'
-
- def test_create_virtual_server_with_address_translation_bool_true(self, *args):
- set_module_args(dict(
- destination="10.10.10.10",
- address_translation=True,
- name="my-snat-pool",
- partition="Common",
- port="443",
- state="present",
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=False)
- mm.create_on_device = Mock(return_value=True)
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['address_translation'] is True
-
- def test_create_virtual_server_with_address_translation_string_yes(self, *args):
- set_module_args(dict(
- destination="10.10.10.10",
- address_translation='yes',
- name="my-snat-pool",
- partition="Common",
- port="443",
- state="present",
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=False)
- mm.create_on_device = Mock(return_value=True)
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['address_translation'] is True
-
- def test_create_virtual_server_with_address_translation_bool_false(self, *args):
- set_module_args(dict(
- destination="10.10.10.10",
- address_translation=False,
- name="my-snat-pool",
- partition="Common",
- port="443",
- state="present",
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=False)
- mm.create_on_device = Mock(return_value=True)
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['address_translation'] is False
-
- def test_create_virtual_server_with_address_translation_string_no(self, *args):
- set_module_args(dict(
- destination="10.10.10.10",
- address_translation='no',
- name="my-snat-pool",
- partition="Common",
- port="443",
- state="present",
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=False)
- mm.create_on_device = Mock(return_value=True)
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['address_translation'] is False
-
- def test_create_virtual_server_with_port_translation_bool_true(self, *args):
- set_module_args(dict(
- destination="10.10.10.10",
- port_translation=True,
- name="my-snat-pool",
- partition="Common",
- port="443",
- state="present",
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=False)
- mm.create_on_device = Mock(return_value=True)
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['port_translation'] is True
-
- def test_create_virtual_server_with_port_translation_string_yes(self, *args):
- set_module_args(dict(
- destination="10.10.10.10",
- port_translation='yes',
- name="my-snat-pool",
- partition="Common",
- port="443",
- state="present",
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=False)
- mm.create_on_device = Mock(return_value=True)
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['port_translation'] is True
-
- def test_create_virtual_server_with_port_translation_bool_false(self, *args):
- set_module_args(dict(
- destination="10.10.10.10",
- port_translation=False,
- name="my-snat-pool",
- partition="Common",
- port="443",
- state="present",
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=False)
- mm.create_on_device = Mock(return_value=True)
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['port_translation'] is False
-
- def test_create_virtual_server_with_port_translation_string_no(self, *args):
- set_module_args(dict(
- destination="10.10.10.10",
- port_translation='no',
- name="my-snat-pool",
- partition="Common",
- port="443",
- state="present",
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=False)
- mm.create_on_device = Mock(return_value=True)
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['port_translation'] is False
diff --git a/test/units/modules/network/f5/test_bigip_vlan.py b/test/units/modules/network/f5/test_bigip_vlan.py
deleted file mode 100644
index 89e421e2f7..0000000000
--- a/test/units/modules/network/f5/test_bigip_vlan.py
+++ /dev/null
@@ -1,344 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_vlan import ApiParameters
- from library.modules.bigip_vlan import ModuleParameters
- from library.modules.bigip_vlan import ModuleManager
- from library.modules.bigip_vlan import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_vlan import ApiParameters
- from ansible.modules.network.f5.bigip_vlan import ModuleParameters
- from ansible.modules.network.f5.bigip_vlan import ModuleManager
- from ansible.modules.network.f5.bigip_vlan import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class BigIpObj(object):
- def __init__(self, **kwargs):
- self.__dict__.update(kwargs)
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='somevlan',
- tag=213,
- description='fakevlan',
- untagged_interfaces=['1.1'],
- )
- p = ModuleParameters(params=args)
-
- assert p.name == 'somevlan'
- assert p.tag == 213
- assert p.description == 'fakevlan'
- assert p.untagged_interfaces == ['1.1']
-
- def test_api_parameters(self):
- args = dict(
- name='somevlan',
- description='fakevlan',
- tag=213
- )
-
- p = ApiParameters(params=args)
-
- assert p.name == 'somevlan'
- assert p.tag == 213
- assert p.description == 'fakevlan'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create_vlan(self, *args):
- set_module_args(dict(
- name='somevlan',
- description='fakevlan',
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.create_on_device = Mock(return_value=True)
- mm.exists = Mock(return_value=False)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['description'] == 'fakevlan'
-
- def test_create_vlan_tagged_interface(self, *args):
- set_module_args(dict(
- name='somevlan',
- tagged_interface=['2.1'],
- tag=213,
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.create_on_device = Mock(return_value=True)
- mm.exists = Mock(return_value=False)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['tagged_interfaces'] == ['2.1']
- assert results['tag'] == 213
-
- def test_create_vlan_untagged_interface(self, *args):
- set_module_args(dict(
- name='somevlan',
- untagged_interface=['2.1'],
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.create_on_device = Mock(return_value=True)
- mm.exists = Mock(return_value=False)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['untagged_interfaces'] == ['2.1']
-
- def test_create_vlan_tagged_interfaces(self, *args):
- set_module_args(dict(
- name='somevlan',
- tagged_interface=['2.1', '1.1'],
- tag=213,
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.create_on_device = Mock(return_value=True)
- mm.exists = Mock(return_value=False)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['tagged_interfaces'] == ['1.1', '2.1']
- assert results['tag'] == 213
-
- def test_create_vlan_untagged_interfaces(self, *args):
- set_module_args(dict(
- name='somevlan',
- untagged_interface=['2.1', '1.1'],
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.create_on_device = Mock(return_value=True)
- mm.exists = Mock(return_value=False)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['untagged_interfaces'] == ['1.1', '2.1']
-
- def test_update_vlan_untag_interface(self, *args):
- set_module_args(dict(
- name='somevlan',
- untagged_interface=['2.1'],
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
-
- current = ApiParameters(params=load_fixture('load_vlan.json'))
- interfaces = load_fixture('load_vlan_interfaces.json')
- current.update({'interfaces': interfaces})
-
- mm.update_on_device = Mock(return_value=True)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['untagged_interfaces'] == ['2.1']
-
- def test_update_vlan_tag_interface(self, *args):
- set_module_args(dict(
- name='somevlan',
- tagged_interface=['2.1'],
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
-
- current = ApiParameters(params=load_fixture('load_vlan.json'))
-
- mm.update_on_device = Mock(return_value=True)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['tagged_interfaces'] == ['2.1']
-
- def test_update_vlan_description(self, *args):
- set_module_args(dict(
- name='somevlan',
- description='changed_that',
- partition='Common',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
-
- current = ApiParameters(params=load_fixture('update_vlan_description.json'))
-
- mm.update_on_device = Mock(return_value=True)
- mm.exists = Mock(return_value=True)
- mm.read_current_from_device = Mock(return_value=current)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['description'] == 'changed_that'
diff --git a/test/units/modules/network/f5/test_bigip_wait.py b/test/units/modules/network/f5/test_bigip_wait.py
deleted file mode 100644
index ca09778f0b..0000000000
--- a/test/units/modules/network/f5/test_bigip_wait.py
+++ /dev/null
@@ -1,128 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigip_wait import Parameters
- from library.modules.bigip_wait import ModuleManager
- from library.modules.bigip_wait import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
- from test.units.compat.mock import patch
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigip_wait import Parameters
- from ansible.modules.network.f5.bigip_wait import ModuleManager
- from ansible.modules.network.f5.bigip_wait import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
- from units.compat.mock import patch
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- delay=3,
- timeout=500,
- sleep=10,
- msg='We timed out during waiting for BIG-IP :-('
- )
-
- p = Parameters(params=args)
- assert p.delay == 3
- assert p.timeout == 500
- assert p.sleep == 10
- assert p.msg == 'We timed out during waiting for BIG-IP :-('
-
- def test_module_string_parameters(self):
- args = dict(
- delay='3',
- timeout='500',
- sleep='10',
- msg='We timed out during waiting for BIG-IP :-('
- )
-
- p = Parameters(params=args)
- assert p.delay == 3
- assert p.timeout == 500
- assert p.sleep == 10
- assert p.msg == 'We timed out during waiting for BIG-IP :-('
-
-
-class TestManager(unittest.TestCase):
- def setUp(self):
- self.spec = ArgumentSpec()
- self.patcher1 = patch('time.sleep')
- self.patcher1.start()
-
- def tearDown(self):
- self.patcher1.stop()
-
- def test_wait_already_available(self, *args):
- set_module_args(dict(
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm._connect_to_device = Mock(return_value=True)
- mm._device_is_rebooting = Mock(return_value=False)
- mm._is_mprov_running_on_device = Mock(return_value=False)
- mm._get_client_connection = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is False
- assert results['elapsed'] == 0
diff --git a/test/units/modules/network/f5/test_bigiq_application_fasthttp.py b/test/units/modules/network/f5/test_bigiq_application_fasthttp.py
deleted file mode 100644
index 6700449450..0000000000
--- a/test/units/modules/network/f5/test_bigiq_application_fasthttp.py
+++ /dev/null
@@ -1,242 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2017, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigiq_application_fasthttp import ModuleParameters
- from library.modules.bigiq_application_fasthttp import ModuleManager
- from library.modules.bigiq_application_fasthttp import ArgumentSpec
- from library.module_utils.network.f5.common import F5ModuleError
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
- from test.units.compat.mock import patch
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigiq_application_fasthttp import ModuleParameters
- from ansible.modules.network.f5.bigiq_application_fasthttp import ModuleManager
- from ansible.modules.network.f5.bigiq_application_fasthttp import ArgumentSpec
- from ansible.module_utils.network.f5.common import F5ModuleError
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
- from units.compat.mock import patch
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- description='my description',
- service_environment='bar',
- servers=[
- dict(
- address='1.2.3.4',
- port=8080
- ),
- dict(
- address='5.6.7.8',
- port=8000
- )
- ],
- inbound_virtual=dict(
- address='2.2.2.2',
- netmask='255.255.255.255',
- port=80
- )
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.config_set_name == 'foo'
- assert p.sub_path == 'foo'
- assert p.http_profile == 'profile_http'
- assert p.service_environment == 'bar'
- assert len(p.servers) == 2
- assert 'address' in p.servers[0]
- assert 'port' in p.servers[0]
- assert 'address' in p.servers[1]
- assert 'port' in p.servers[1]
- assert p.servers[0]['address'] == '1.2.3.4'
- assert p.servers[0]['port'] == 8080
- assert p.servers[1]['address'] == '5.6.7.8'
- assert p.servers[1]['port'] == 8000
- assert 'address' in p.inbound_virtual
- assert 'netmask' in p.inbound_virtual
- assert 'port' in p.inbound_virtual
- assert p.inbound_virtual['address'] == '2.2.2.2'
- assert p.inbound_virtual['netmask'] == '255.255.255.255'
- assert p.inbound_virtual['port'] == 80
-
-
-class TestManager(unittest.TestCase):
- def setUp(self):
- self.spec = ArgumentSpec()
- self.patcher1 = patch('time.sleep')
- self.patcher1.start()
-
- try:
- self.p1 = patch('library.modules.bigiq_application_fasthttp.bigiq_version')
- self.p2 = patch('library.modules.bigiq_application_fasthttp.ModuleParameters.template_reference')
- self.p3 = patch('library.modules.bigiq_application_fasthttp.ModuleParameters.ssg_reference')
- self.p4 = patch('library.modules.bigiq_application_fasthttp.ModuleParameters.default_device_reference')
-
- self.m1 = self.p1.start()
- self.m2 = self.p2.start()
- self.m3 = self.p3.start()
- self.m4 = self.p4.start()
-
- self.m1.return_value = '6.1.0'
- self.m2.return_value = Mock(return_value='https://localhost/mgmt/foobar1')
- self.m3.return_value = Mock(return_value='https://localhost/mgmt/foobar2')
- self.m4.return_value = Mock(return_value='https://localhost/mgmt/foobar3')
-
- except Exception:
- self.p1 = patch('ansible.modules.network.f5.bigiq_application_fasthttp.bigiq_version')
- self.p2 = patch('ansible.modules.network.f5.bigiq_application_fasthttp.ModuleParameters.template_reference')
- self.p3 = patch('ansible.modules.network.f5.bigiq_application_fasthttp.ModuleParameters.ssg_reference')
- self.p4 = patch('ansible.modules.network.f5.bigiq_application_fasthttp.ModuleParameters.default_device_reference')
-
- self.m1 = self.p1.start()
- self.m2 = self.p2.start()
- self.m3 = self.p3.start()
- self.m4 = self.p4.start()
-
- self.m1.return_value = '6.1.0'
- self.m2.return_value = Mock(return_value='https://localhost/mgmt/foobar1')
- self.m3.return_value = Mock(return_value='https://localhost/mgmt/foobar2')
- self.m4.return_value = Mock(return_value='https://localhost/mgmt/foobar3')
-
- def tearDown(self):
- self.patcher1.stop()
- self.p1.stop()
- self.p2.stop()
- self.p3.stop()
- self.p4.stop()
-
- def test_create(self, *args):
- set_module_args(dict(
- name='foo',
- description='my description',
- service_environment='bar',
- servers=[
- dict(
- address='1.2.3.4',
- port=8080
- ),
- dict(
- address='5.6.7.8',
- port=8000
- )
- ],
- inbound_virtual=dict(
- address='2.2.2.2',
- netmask='255.255.255.255',
- port=80
- ),
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.check_bigiq_version = Mock(return_value=True)
- mm.has_no_service_environment = Mock(return_value=False)
- mm.wait_for_apply_template_task = Mock(return_value=True)
-
- mm.create_on_device = Mock(return_value=True)
- mm.exists = Mock(side_effect=[False, True])
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['description'] == 'my description'
-
- def test_bigiq_version_raises(self):
- set_module_args(dict(
- name='foo',
- description='my description',
- service_environment='bar',
- servers=[
- dict(
- address='1.2.3.4',
- port=8080
- ),
- dict(
- address='5.6.7.8',
- port=8000
- )
- ],
- inbound_virtual=dict(
- address='2.2.2.2',
- netmask='255.255.255.255',
- port=80
- ),
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- msg = 'Module supports only BIGIQ version 6.0.x or lower.'
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
-
- with pytest.raises(F5ModuleError) as err:
- mm.exec_module()
- assert str(err.value) == msg
diff --git a/test/units/modules/network/f5/test_bigiq_application_fastl4_tcp.py b/test/units/modules/network/f5/test_bigiq_application_fastl4_tcp.py
deleted file mode 100644
index cd057565d6..0000000000
--- a/test/units/modules/network/f5/test_bigiq_application_fastl4_tcp.py
+++ /dev/null
@@ -1,235 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2017, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigiq_application_fastl4_tcp import ModuleParameters
- from library.modules.bigiq_application_fastl4_tcp import ModuleManager
- from library.modules.bigiq_application_fastl4_tcp import ArgumentSpec
- from library.module_utils.network.f5.common import F5ModuleError
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
- from test.units.compat.mock import patch
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigiq_application_fastl4_tcp import ModuleParameters
- from ansible.modules.network.f5.bigiq_application_fastl4_tcp import ModuleManager
- from ansible.modules.network.f5.bigiq_application_fastl4_tcp import ArgumentSpec
- from ansible.module_utils.network.f5.common import F5ModuleError
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
- from units.compat.mock import patch
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- description='my description',
- service_environment='bar',
- servers=[
- dict(
- address='1.2.3.4',
- port=8080
- ),
- dict(
- address='5.6.7.8',
- port=8000
- )
- ],
- inbound_virtual=dict(
- address='2.2.2.2',
- netmask='255.255.255.255',
- port=80
- )
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.config_set_name == 'foo'
- assert p.sub_path == 'foo'
- assert p.http_profile == 'profile_http'
- assert p.service_environment == 'bar'
- assert len(p.servers) == 2
- assert 'address' in p.servers[0]
- assert 'port' in p.servers[0]
- assert 'address' in p.servers[1]
- assert 'port' in p.servers[1]
- assert p.servers[0]['address'] == '1.2.3.4'
- assert p.servers[0]['port'] == 8080
- assert p.servers[1]['address'] == '5.6.7.8'
- assert p.servers[1]['port'] == 8000
- assert 'address' in p.inbound_virtual
- assert 'netmask' in p.inbound_virtual
- assert 'port' in p.inbound_virtual
- assert p.inbound_virtual['address'] == '2.2.2.2'
- assert p.inbound_virtual['netmask'] == '255.255.255.255'
- assert p.inbound_virtual['port'] == 80
-
-
-class TestManager(unittest.TestCase):
- def setUp(self):
- self.spec = ArgumentSpec()
- self.patcher1 = patch('time.sleep')
- self.patcher1.start()
-
- try:
- self.p1 = patch('library.modules.bigiq_application_fastl4_tcp.bigiq_version')
- self.p2 = patch('library.modules.bigiq_application_fastl4_tcp.ModuleParameters.template_reference')
- self.p3 = patch('library.modules.bigiq_application_fastl4_tcp.ModuleParameters.default_device_reference')
-
- self.m1 = self.p1.start()
- self.m2 = self.p2.start()
- self.m3 = self.p3.start()
-
- self.m1.return_value = '6.1.0'
- self.m2.return_value = Mock(return_value='https://localhost/mgmt/foobar1')
- self.m3.return_value = Mock(return_value='https://localhost/mgmt/foobar3')
-
- except Exception:
- self.p1 = patch('ansible.modules.network.f5.bigiq_application_fastl4_tcp.bigiq_version')
- self.p2 = patch('ansible.modules.network.f5.bigiq_application_fastl4_tcp.ModuleParameters.template_reference')
- self.p3 = patch('ansible.modules.network.f5.bigiq_application_fastl4_tcp.ModuleParameters.default_device_reference')
-
- self.m1 = self.p1.start()
- self.m2 = self.p2.start()
- self.m3 = self.p3.start()
-
- self.m1.return_value = '6.1.0'
- self.m2.return_value = Mock(return_value='https://localhost/mgmt/foobar1')
- self.m3.return_value = Mock(return_value='https://localhost/mgmt/foobar3')
-
- def tearDown(self):
- self.patcher1.stop()
- self.p1.stop()
- self.p2.stop()
- self.p3.stop()
-
- def test_create(self, *args):
- set_module_args(dict(
- name='foo',
- description='my description',
- service_environment='bar',
- servers=[
- dict(
- address='1.2.3.4',
- port=8080
- ),
- dict(
- address='5.6.7.8',
- port=8000
- )
- ],
- inbound_virtual=dict(
- address='2.2.2.2',
- netmask='255.255.255.255',
- port=80
- ),
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.check_bigiq_version = Mock(return_value=True)
- mm.has_no_service_environment = Mock(return_value=False)
- mm.wait_for_apply_template_task = Mock(return_value=True)
-
- mm.create_on_device = Mock(return_value=True)
- mm.exists = Mock(side_effect=[False, True])
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['description'] == 'my description'
-
- def test_bigiq_version_raises(self):
- set_module_args(dict(
- name='foo',
- description='my description',
- service_environment='bar',
- servers=[
- dict(
- address='1.2.3.4',
- port=8080
- ),
- dict(
- address='5.6.7.8',
- port=8000
- )
- ],
- inbound_virtual=dict(
- address='2.2.2.2',
- netmask='255.255.255.255',
- port=80
- ),
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- msg = 'Module supports only BIGIQ version 6.0.x or lower.'
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
-
- with pytest.raises(F5ModuleError) as err:
- mm.exec_module()
- assert str(err.value) == msg
diff --git a/test/units/modules/network/f5/test_bigiq_application_fastl4_udp.py b/test/units/modules/network/f5/test_bigiq_application_fastl4_udp.py
deleted file mode 100644
index 934876b36d..0000000000
--- a/test/units/modules/network/f5/test_bigiq_application_fastl4_udp.py
+++ /dev/null
@@ -1,235 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2017, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigiq_application_fastl4_udp import ModuleParameters
- from library.modules.bigiq_application_fastl4_udp import ModuleManager
- from library.modules.bigiq_application_fastl4_udp import ArgumentSpec
- from library.module_utils.network.f5.common import F5ModuleError
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
- from test.units.compat.mock import patch
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigiq_application_fastl4_udp import ModuleParameters
- from ansible.modules.network.f5.bigiq_application_fastl4_udp import ModuleManager
- from ansible.modules.network.f5.bigiq_application_fastl4_udp import ArgumentSpec
- from ansible.module_utils.network.f5.common import F5ModuleError
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
- from units.compat.mock import patch
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- description='my description',
- service_environment='bar',
- servers=[
- dict(
- address='1.2.3.4',
- port=8080
- ),
- dict(
- address='5.6.7.8',
- port=8000
- )
- ],
- inbound_virtual=dict(
- address='2.2.2.2',
- netmask='255.255.255.255',
- port=80
- )
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.config_set_name == 'foo'
- assert p.sub_path == 'foo'
- assert p.http_profile == 'profile_http'
- assert p.service_environment == 'bar'
- assert len(p.servers) == 2
- assert 'address' in p.servers[0]
- assert 'port' in p.servers[0]
- assert 'address' in p.servers[1]
- assert 'port' in p.servers[1]
- assert p.servers[0]['address'] == '1.2.3.4'
- assert p.servers[0]['port'] == 8080
- assert p.servers[1]['address'] == '5.6.7.8'
- assert p.servers[1]['port'] == 8000
- assert 'address' in p.inbound_virtual
- assert 'netmask' in p.inbound_virtual
- assert 'port' in p.inbound_virtual
- assert p.inbound_virtual['address'] == '2.2.2.2'
- assert p.inbound_virtual['netmask'] == '255.255.255.255'
- assert p.inbound_virtual['port'] == 80
-
-
-class TestManager(unittest.TestCase):
- def setUp(self):
- self.spec = ArgumentSpec()
- self.patcher1 = patch('time.sleep')
- self.patcher1.start()
-
- try:
- self.p1 = patch('library.modules.bigiq_application_fastl4_udp.bigiq_version')
- self.p2 = patch('library.modules.bigiq_application_fastl4_udp.ModuleParameters.template_reference')
- self.p3 = patch('library.modules.bigiq_application_fastl4_udp.ModuleParameters.default_device_reference')
-
- self.m1 = self.p1.start()
- self.m2 = self.p2.start()
- self.m3 = self.p3.start()
-
- self.m1.return_value = '6.1.0'
- self.m2.return_value = Mock(return_value='https://localhost/mgmt/foobar1')
- self.m3.return_value = Mock(return_value='https://localhost/mgmt/foobar3')
-
- except Exception:
- self.p1 = patch('ansible.modules.network.f5.bigiq_application_fastl4_udp.bigiq_version')
- self.p2 = patch('ansible.modules.network.f5.bigiq_application_fastl4_udp.ModuleParameters.template_reference')
- self.p3 = patch('ansible.modules.network.f5.bigiq_application_fastl4_udp.ModuleParameters.default_device_reference')
-
- self.m1 = self.p1.start()
- self.m2 = self.p2.start()
- self.m3 = self.p3.start()
-
- self.m1.return_value = '6.1.0'
- self.m2.return_value = Mock(return_value='https://localhost/mgmt/foobar1')
- self.m3.return_value = Mock(return_value='https://localhost/mgmt/foobar3')
-
- def tearDown(self):
- self.patcher1.stop()
- self.p1.stop()
- self.p2.stop()
- self.p3.stop()
-
- def test_create(self, *args):
- set_module_args(dict(
- name='foo',
- description='my description',
- service_environment='bar',
- servers=[
- dict(
- address='1.2.3.4',
- port=8080
- ),
- dict(
- address='5.6.7.8',
- port=8000
- )
- ],
- inbound_virtual=dict(
- address='2.2.2.2',
- netmask='255.255.255.255',
- port=80
- ),
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.check_bigiq_version = Mock(return_value=True)
- mm.has_no_service_environment = Mock(return_value=False)
- mm.wait_for_apply_template_task = Mock(return_value=True)
-
- mm.create_on_device = Mock(return_value=True)
- mm.exists = Mock(side_effect=[False, True])
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['description'] == 'my description'
-
- def test_bigiq_version_raises(self):
- set_module_args(dict(
- name='foo',
- description='my description',
- service_environment='bar',
- servers=[
- dict(
- address='1.2.3.4',
- port=8080
- ),
- dict(
- address='5.6.7.8',
- port=8000
- )
- ],
- inbound_virtual=dict(
- address='2.2.2.2',
- netmask='255.255.255.255',
- port=80
- ),
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- msg = 'Module supports only BIGIQ version 6.0.x or lower.'
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
-
- with pytest.raises(F5ModuleError) as err:
- mm.exec_module()
- assert str(err.value) == msg
diff --git a/test/units/modules/network/f5/test_bigiq_application_http.py b/test/units/modules/network/f5/test_bigiq_application_http.py
deleted file mode 100644
index 5bb25af2cb..0000000000
--- a/test/units/modules/network/f5/test_bigiq_application_http.py
+++ /dev/null
@@ -1,242 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2017, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigiq_application_http import ModuleParameters
- from library.modules.bigiq_application_http import ModuleManager
- from library.modules.bigiq_application_http import ArgumentSpec
- from library.module_utils.network.f5.common import F5ModuleError
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
- from test.units.compat.mock import patch
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigiq_application_http import ModuleParameters
- from ansible.modules.network.f5.bigiq_application_http import ModuleManager
- from ansible.modules.network.f5.bigiq_application_http import ArgumentSpec
- from ansible.module_utils.network.f5.common import F5ModuleError
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
- from units.compat.mock import patch
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- description='my description',
- service_environment='bar',
- servers=[
- dict(
- address='1.2.3.4',
- port=8080
- ),
- dict(
- address='5.6.7.8',
- port=8000
- )
- ],
- inbound_virtual=dict(
- address='2.2.2.2',
- netmask='255.255.255.255',
- port=80
- )
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.config_set_name == 'foo'
- assert p.sub_path == 'foo'
- assert p.http_profile == 'profile_http'
- assert p.service_environment == 'bar'
- assert len(p.servers) == 2
- assert 'address' in p.servers[0]
- assert 'port' in p.servers[0]
- assert 'address' in p.servers[1]
- assert 'port' in p.servers[1]
- assert p.servers[0]['address'] == '1.2.3.4'
- assert p.servers[0]['port'] == 8080
- assert p.servers[1]['address'] == '5.6.7.8'
- assert p.servers[1]['port'] == 8000
- assert 'address' in p.inbound_virtual
- assert 'netmask' in p.inbound_virtual
- assert 'port' in p.inbound_virtual
- assert p.inbound_virtual['address'] == '2.2.2.2'
- assert p.inbound_virtual['netmask'] == '255.255.255.255'
- assert p.inbound_virtual['port'] == 80
-
-
-class TestManager(unittest.TestCase):
- def setUp(self):
- self.spec = ArgumentSpec()
- self.patcher1 = patch('time.sleep')
- self.patcher1.start()
-
- try:
- self.p1 = patch('library.modules.bigiq_application_http.bigiq_version')
- self.p2 = patch('library.modules.bigiq_application_http.ModuleParameters.template_reference')
- self.p3 = patch('library.modules.bigiq_application_http.ModuleParameters.ssg_reference')
- self.p4 = patch('library.modules.bigiq_application_http.ModuleParameters.default_device_reference')
-
- self.m1 = self.p1.start()
- self.m2 = self.p2.start()
- self.m3 = self.p3.start()
- self.m4 = self.p4.start()
-
- self.m1.return_value = '6.1.0'
- self.m2.return_value = Mock(return_value='https://localhost/mgmt/foobar1')
- self.m3.return_value = Mock(return_value='https://localhost/mgmt/foobar2')
- self.m4.return_value = Mock(return_value='https://localhost/mgmt/foobar3')
-
- except Exception:
- self.p1 = patch('ansible.modules.network.f5.bigiq_application_http.bigiq_version')
- self.p2 = patch('ansible.modules.network.f5.bigiq_application_http.ModuleParameters.template_reference')
- self.p3 = patch('ansible.modules.network.f5.bigiq_application_http.ModuleParameters.ssg_reference')
- self.p4 = patch('ansible.modules.network.f5.bigiq_application_http.ModuleParameters.default_device_reference')
-
- self.m1 = self.p1.start()
- self.m2 = self.p2.start()
- self.m3 = self.p3.start()
- self.m4 = self.p4.start()
-
- self.m1.return_value = '6.1.0'
- self.m2.return_value = Mock(return_value='https://localhost/mgmt/foobar1')
- self.m3.return_value = Mock(return_value='https://localhost/mgmt/foobar2')
- self.m4.return_value = Mock(return_value='https://localhost/mgmt/foobar3')
-
- def tearDown(self):
- self.patcher1.stop()
- self.p1.stop()
- self.p2.stop()
- self.p3.stop()
- self.p4.stop()
-
- def test_create(self, *args):
- set_module_args(dict(
- name='foo',
- description='my description',
- service_environment='bar',
- servers=[
- dict(
- address='1.2.3.4',
- port=8080
- ),
- dict(
- address='5.6.7.8',
- port=8000
- )
- ],
- inbound_virtual=dict(
- address='2.2.2.2',
- netmask='255.255.255.255',
- port=80
- ),
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.check_bigiq_version = Mock(return_value=True)
- mm.has_no_service_environment = Mock(return_value=False)
- mm.wait_for_apply_template_task = Mock(return_value=True)
-
- mm.create_on_device = Mock(return_value=True)
- mm.exists = Mock(side_effect=[False, True])
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['description'] == 'my description'
-
- def test_bigiq_version_raises(self):
- set_module_args(dict(
- name='foo',
- description='my description',
- service_environment='bar',
- servers=[
- dict(
- address='1.2.3.4',
- port=8080
- ),
- dict(
- address='5.6.7.8',
- port=8000
- )
- ],
- inbound_virtual=dict(
- address='2.2.2.2',
- netmask='255.255.255.255',
- port=80
- ),
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- msg = 'Module supports only BIGIQ version 6.0.x or lower.'
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
-
- with pytest.raises(F5ModuleError) as err:
- mm.exec_module()
- assert str(err.value) == msg
diff --git a/test/units/modules/network/f5/test_bigiq_application_https_offload.py b/test/units/modules/network/f5/test_bigiq_application_https_offload.py
deleted file mode 100644
index ebac1d8206..0000000000
--- a/test/units/modules/network/f5/test_bigiq_application_https_offload.py
+++ /dev/null
@@ -1,260 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2017, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigiq_application_https_offload import ModuleParameters
- from library.modules.bigiq_application_https_offload import ModuleManager
- from library.modules.bigiq_application_https_offload import ArgumentSpec
- from library.module_utils.network.f5.common import F5ModuleError
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
- from test.units.compat.mock import patch
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigiq_application_https_offload import ModuleParameters
- from ansible.modules.network.f5.bigiq_application_https_offload import ModuleManager
- from ansible.modules.network.f5.bigiq_application_https_offload import ArgumentSpec
- from ansible.module_utils.network.f5.common import F5ModuleError
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
- from units.compat.mock import patch
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- description='my description',
- service_environment='bar',
- servers=[
- dict(
- address='1.2.3.4',
- port=8080
- ),
- dict(
- address='5.6.7.8',
- port=8000
- )
- ],
- inbound_virtual=dict(
- address='2.2.2.2',
- netmask='255.255.255.255',
- port=80
- ),
- redirect_virtual=dict(
- address='3.3.3.3',
- netmask='255.255.255.255',
- port=80
- )
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.config_set_name == 'foo'
- assert p.sub_path == 'foo'
- assert p.http_profile == 'profile_http'
- assert p.service_environment == 'bar'
- assert len(p.servers) == 2
- assert 'address' in p.servers[0]
- assert 'port' in p.servers[0]
- assert 'address' in p.servers[1]
- assert 'port' in p.servers[1]
- assert p.servers[0]['address'] == '1.2.3.4'
- assert p.servers[0]['port'] == 8080
- assert p.servers[1]['address'] == '5.6.7.8'
- assert p.servers[1]['port'] == 8000
- assert 'address' in p.inbound_virtual
- assert 'netmask' in p.inbound_virtual
- assert 'port' in p.inbound_virtual
- assert p.inbound_virtual['address'] == '2.2.2.2'
- assert p.inbound_virtual['netmask'] == '255.255.255.255'
- assert p.inbound_virtual['port'] == 80
- assert 'address' in p.redirect_virtual
- assert 'netmask' in p.redirect_virtual
- assert 'port' in p.redirect_virtual
- assert p.redirect_virtual['address'] == '3.3.3.3'
- assert p.redirect_virtual['netmask'] == '255.255.255.255'
- assert p.redirect_virtual['port'] == 80
-
-
-class TestManager(unittest.TestCase):
- def setUp(self):
- self.spec = ArgumentSpec()
- self.patcher1 = patch('time.sleep')
- self.patcher1.start()
-
- try:
- self.p1 = patch('library.modules.bigiq_application_https_offload.bigiq_version')
- self.p2 = patch('library.modules.bigiq_application_https_offload.ModuleParameters.template_reference')
- self.p3 = patch('library.modules.bigiq_application_https_offload.ModuleParameters.ssg_reference')
- self.p4 = patch('library.modules.bigiq_application_https_offload.ModuleParameters.default_device_reference')
-
- self.m1 = self.p1.start()
- self.m2 = self.p2.start()
- self.m3 = self.p3.start()
- self.m4 = self.p4.start()
-
- self.m1.return_value = '6.1.0'
- self.m2.return_value = Mock(return_value='https://localhost/mgmt/foobar1')
- self.m3.return_value = Mock(return_value='https://localhost/mgmt/foobar2')
- self.m4.return_value = Mock(return_value='https://localhost/mgmt/foobar3')
-
- except Exception:
- self.p1 = patch('ansible.modules.network.f5.bigiq_application_https_offload.bigiq_version')
- self.p2 = patch('ansible.modules.network.f5.bigiq_application_https_offload.ModuleParameters.template_reference')
- self.p3 = patch('ansible.modules.network.f5.bigiq_application_https_offload.ModuleParameters.ssg_reference')
- self.p4 = patch('ansible.modules.network.f5.bigiq_application_https_offload.ModuleParameters.default_device_reference')
-
- self.m1 = self.p1.start()
- self.m2 = self.p2.start()
- self.m3 = self.p3.start()
- self.m4 = self.p4.start()
-
- self.m1.return_value = '6.1.0'
- self.m2.return_value = Mock(return_value='https://localhost/mgmt/foobar1')
- self.m3.return_value = Mock(return_value='https://localhost/mgmt/foobar2')
- self.m4.return_value = Mock(return_value='https://localhost/mgmt/foobar3')
-
- def tearDown(self):
- self.patcher1.stop()
- self.p1.stop()
- self.p2.stop()
- self.p3.stop()
- self.p4.stop()
-
- def test_create(self, *args):
- set_module_args(dict(
- name='foo',
- description='my description',
- service_environment='bar',
- servers=[
- dict(
- address='1.2.3.4',
- port=8080
- ),
- dict(
- address='5.6.7.8',
- port=8000
- )
- ],
- inbound_virtual=dict(
- address='2.2.2.2',
- netmask='255.255.255.255',
- port=80
- ),
- redirect_virtual=dict(
- address='3.3.3.3',
- netmask='255.255.255.255',
- port=80
- ),
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.check_bigiq_version = Mock(return_value=True)
- mm.has_no_service_environment = Mock(return_value=False)
- mm.wait_for_apply_template_task = Mock(return_value=True)
-
- mm.create_on_device = Mock(return_value=True)
- mm.exists = Mock(side_effect=[False, True])
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['description'] == 'my description'
-
- def test_bigiq_version_raises(self):
- set_module_args(dict(
- name='foo',
- description='my description',
- service_environment='bar',
- servers=[
- dict(
- address='1.2.3.4',
- port=8080
- ),
- dict(
- address='5.6.7.8',
- port=8000
- )
- ],
- inbound_virtual=dict(
- address='2.2.2.2',
- netmask='255.255.255.255',
- port=80
- ),
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive
- )
-
- msg = 'Module supports only BIGIQ version 6.0.x or lower.'
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
-
- with pytest.raises(F5ModuleError) as err:
- mm.exec_module()
- assert str(err.value) == msg
diff --git a/test/units/modules/network/f5/test_bigiq_application_https_waf.py b/test/units/modules/network/f5/test_bigiq_application_https_waf.py
deleted file mode 100644
index 0a6abfdab6..0000000000
--- a/test/units/modules/network/f5/test_bigiq_application_https_waf.py
+++ /dev/null
@@ -1,268 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2017, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigiq_application_https_waf import ModuleParameters
- from library.modules.bigiq_application_https_waf import ModuleManager
- from library.modules.bigiq_application_https_waf import ArgumentSpec
- from library.module_utils.network.f5.common import F5ModuleError
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
- from test.units.compat.mock import patch
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigiq_application_https_waf import ModuleParameters
- from ansible.modules.network.f5.bigiq_application_https_waf import ModuleManager
- from ansible.modules.network.f5.bigiq_application_https_waf import ArgumentSpec
- from ansible.module_utils.network.f5.common import F5ModuleError
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
- from units.compat.mock import patch
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- name='foo',
- description='my description',
- service_environment='bar',
- servers=[
- dict(
- address='1.2.3.4',
- port=8080
- ),
- dict(
- address='5.6.7.8',
- port=8000
- )
- ],
- inbound_virtual=dict(
- address='2.2.2.2',
- netmask='255.255.255.255',
- port=80
- ),
- redirect_virtual=dict(
- address='3.3.3.3',
- netmask='255.255.255.255',
- port=80
- ),
- domain_names=[
- 'foo.baz.com',
- 'bar.baz.com'
- ]
- )
-
- p = ModuleParameters(params=args)
- assert p.name == 'foo'
- assert p.config_set_name == 'foo'
- assert p.sub_path == 'foo'
- assert p.http_profile == 'profile_http'
- assert p.service_environment == 'bar'
- assert len(p.servers) == 2
- assert 'address' in p.servers[0]
- assert 'port' in p.servers[0]
- assert 'address' in p.servers[1]
- assert 'port' in p.servers[1]
- assert p.servers[0]['address'] == '1.2.3.4'
- assert p.servers[0]['port'] == 8080
- assert p.servers[1]['address'] == '5.6.7.8'
- assert p.servers[1]['port'] == 8000
- assert 'address' in p.inbound_virtual
- assert 'netmask' in p.inbound_virtual
- assert 'port' in p.inbound_virtual
- assert p.inbound_virtual['address'] == '2.2.2.2'
- assert p.inbound_virtual['netmask'] == '255.255.255.255'
- assert p.inbound_virtual['port'] == 80
- assert 'address' in p.redirect_virtual
- assert 'netmask' in p.redirect_virtual
- assert 'port' in p.redirect_virtual
- assert p.redirect_virtual['address'] == '3.3.3.3'
- assert p.redirect_virtual['netmask'] == '255.255.255.255'
- assert p.redirect_virtual['port'] == 80
-
-
-class TestManager(unittest.TestCase):
- def setUp(self):
- self.spec = ArgumentSpec()
- self.patcher1 = patch('time.sleep')
- self.patcher1.start()
-
- try:
- self.p1 = patch('library.modules.bigiq_application_https_waf.bigiq_version')
- self.p2 = patch('library.modules.bigiq_application_https_waf.ModuleParameters.template_reference')
- self.p3 = patch('library.modules.bigiq_application_https_waf.ModuleParameters.ssg_reference')
- self.p4 = patch('library.modules.bigiq_application_https_waf.ModuleParameters.default_device_reference')
-
- self.m1 = self.p1.start()
- self.m2 = self.p2.start()
- self.m3 = self.p3.start()
- self.m4 = self.p4.start()
-
- self.m1.return_value = '6.1.0'
- self.m2.return_value = Mock(return_value='https://localhost/mgmt/foobar1')
- self.m3.return_value = Mock(return_value='https://localhost/mgmt/foobar2')
- self.m4.return_value = Mock(return_value='https://localhost/mgmt/foobar3')
-
- except Exception:
- self.p1 = patch('ansible.modules.network.f5.bigiq_application_https_waf.bigiq_version')
- self.p2 = patch('ansible.modules.network.f5.bigiq_application_https_waf.ModuleParameters.template_reference')
- self.p3 = patch('ansible.modules.network.f5.bigiq_application_https_waf.ModuleParameters.ssg_reference')
- self.p4 = patch('ansible.modules.network.f5.bigiq_application_https_waf.ModuleParameters.default_device_reference')
-
- self.m1 = self.p1.start()
- self.m2 = self.p2.start()
- self.m3 = self.p3.start()
- self.m4 = self.p4.start()
-
- self.m1.return_value = '6.1.0'
- self.m2.return_value = Mock(return_value='https://localhost/mgmt/foobar1')
- self.m3.return_value = Mock(return_value='https://localhost/mgmt/foobar2')
- self.m4.return_value = Mock(return_value='https://localhost/mgmt/foobar3')
-
- def tearDown(self):
- self.patcher1.stop()
- self.p1.stop()
- self.p2.stop()
- self.p3.stop()
- self.p4.stop()
-
- def test_create(self, *args):
- set_module_args(dict(
- name='foo',
- description='my description',
- service_environment='bar',
- servers=[
- dict(
- address='1.2.3.4',
- port=8080
- ),
- dict(
- address='5.6.7.8',
- port=8000
- )
- ],
- inbound_virtual=dict(
- address='2.2.2.2',
- netmask='255.255.255.255',
- port=80
- ),
- redirect_virtual=dict(
- address='3.3.3.3',
- netmask='255.255.255.255',
- port=80
- ),
- domain_names=[
- 'foo.baz.com',
- 'bar.baz.com'
- ],
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive
- )
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.check_bigiq_version = Mock(return_value=True)
- mm.has_no_service_environment = Mock(return_value=False)
- mm.wait_for_apply_template_task = Mock(return_value=True)
-
- mm.create_on_device = Mock(return_value=True)
- mm.exists = Mock(side_effect=[False, True])
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['description'] == 'my description'
-
- def test_bigiq_version_raises(self):
- set_module_args(dict(
- name='foo',
- description='my description',
- service_environment='bar',
- servers=[
- dict(
- address='1.2.3.4',
- port=8080
- ),
- dict(
- address='5.6.7.8',
- port=8000
- )
- ],
- inbound_virtual=dict(
- address='2.2.2.2',
- netmask='255.255.255.255',
- port=80
- ),
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- mutually_exclusive=self.spec.mutually_exclusive
- )
-
- msg = 'Module supports only BIGIQ version 6.0.x or lower.'
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
-
- with pytest.raises(F5ModuleError) as err:
- mm.exec_module()
- assert str(err.value) == msg
diff --git a/test/units/modules/network/f5/test_bigiq_device_discovery.py b/test/units/modules/network/f5/test_bigiq_device_discovery.py
deleted file mode 100644
index efcd3769b4..0000000000
--- a/test/units/modules/network/f5/test_bigiq_device_discovery.py
+++ /dev/null
@@ -1,134 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2019, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigiq_device_discovery import ApiParameters
- from library.modules.bigiq_device_discovery import ModuleParameters
- from library.modules.bigiq_device_discovery import ModuleManager
- from library.modules.bigiq_device_discovery import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
- from test.units.compat.mock import patch
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigiq_device_discovery import ApiParameters
- from ansible.modules.network.f5.bigiq_device_discovery import ModuleParameters
- from ansible.modules.network.f5.bigiq_device_discovery import ModuleManager
- from ansible.modules.network.f5.bigiq_device_discovery import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
- from units.compat.mock import patch
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- device_address='192.168.1.1',
- device_username='admin',
- device_password='admin',
- device_port=10443,
- ha_name='bazfoo',
- use_bigiq_sync='yes',
- modules=['asm', 'ltm', 'security_shared']
- )
-
- p = ModuleParameters(params=args)
- assert p.device_address == '192.168.1.1'
- assert p.device_username == 'admin'
- assert p.device_password == 'admin'
- assert p.device_port == 10443
- assert p.ha_name == 'bazfoo'
- assert p.use_bigiq_sync is True
- assert p.modules == ['asm', 'adc_core', 'security_shared']
-
- def test_api_parameters(self):
- args = load_fixture('load_machine_resolver.json')
-
- p = ApiParameters(params=args)
- assert sorted(p.modules) == sorted(['asm', 'adc_core', 'security_shared'])
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
- self.patcher1 = patch('time.sleep')
- self.patcher1.start()
-
- def tearDown(self):
- self.patcher1.stop()
-
- def test_create(self, *args):
- set_module_args(dict(
- device_address='192.168.1.1',
- device_username='admin',
- device_password='admin',
- modules=['asm', 'ltm', 'security_shared'],
- provider=dict(
- password='password',
- server='localhost',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- required_if=self.spec.required_if
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(side_effect=[False, True])
- mm.set_trust_with_device = Mock(return_value=True)
- mm.discover_on_device = Mock(return_value=True)
- mm.import_modules_on_device = Mock(return_value=True)
- mm.check_bigiq_version = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigiq_device_info.py b/test/units/modules/network/f5/test_bigiq_device_info.py
deleted file mode 100644
index 14273dfb38..0000000000
--- a/test/units/modules/network/f5/test_bigiq_device_info.py
+++ /dev/null
@@ -1,106 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2018, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigiq_device_info import Parameters
- from library.modules.bigiq_device_info import SystemInfoFactManager
- from library.modules.bigiq_device_info import ModuleManager
- from library.modules.bigiq_device_info import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigiq_device_info import Parameters
- from ansible.modules.network.f5.bigiq_device_info import SystemInfoFactManager
- from ansible.modules.network.f5.bigiq_device_info import ModuleManager
- from ansible.modules.network.f5.bigiq_device_info import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- gather_subset=['system-info'],
- )
- p = Parameters(params=args)
- assert p.gather_subset == ['system-info']
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_get_facts(self, *args):
- set_module_args(dict(
- gather_subset=['system-info'],
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- fixture1 = load_fixture('load_shared_system_setup_1.json')
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- tm = SystemInfoFactManager(module=module)
- tm.read_collection_from_device = Mock(return_value=fixture1)
-
- # Override methods to force specific logic in the module to happen
- mm = ModuleManager(module=module)
- mm.get_manager = Mock(return_value=tm)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert 'system_info' in results
diff --git a/test/units/modules/network/f5/test_bigiq_regkey_license.py b/test/units/modules/network/f5/test_bigiq_regkey_license.py
deleted file mode 100644
index f83af44de1..0000000000
--- a/test/units/modules/network/f5/test_bigiq_regkey_license.py
+++ /dev/null
@@ -1,125 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2017, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigiq_regkey_license import ModuleParameters
- from library.modules.bigiq_regkey_license import ApiParameters
- from library.modules.bigiq_regkey_license import ModuleManager
- from library.modules.bigiq_regkey_license import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
- from test.units.compat.mock import patch
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigiq_regkey_license import ModuleParameters
- from ansible.modules.network.f5.bigiq_regkey_license import ApiParameters
- from ansible.modules.network.f5.bigiq_regkey_license import ModuleManager
- from ansible.modules.network.f5.bigiq_regkey_license import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
- from units.compat.mock import patch
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- regkey_pool='foo',
- license_key='XXXX-XXXX-XXXX-XXXX-XXXX',
- accept_eula=True,
- description='this is a description'
- )
-
- p = ModuleParameters(params=args)
- assert p.regkey_pool == 'foo'
- assert p.license_key == 'XXXX-XXXX-XXXX-XXXX-XXXX'
- assert p.accept_eula is True
- assert p.description == 'this is a description'
-
- def test_api_parameters(self):
- args = load_fixture('load_regkey_license_key.json')
-
- p = ApiParameters(params=args)
- assert p.description == 'foo bar baz'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
- self.patcher1 = patch('time.sleep')
- self.patcher1.start()
-
- def tearDown(self):
- self.patcher1.stop()
-
- def test_create(self, *args):
- set_module_args(dict(
- regkey_pool='foo',
- license_key='XXXX-XXXX-XXXX-XXXX-XXXX',
- accept_eula=True,
- description='this is a description',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
- assert results['description'] == 'this is a description'
diff --git a/test/units/modules/network/f5/test_bigiq_regkey_license_assignment.py b/test/units/modules/network/f5/test_bigiq_regkey_license_assignment.py
deleted file mode 100644
index 387757a1e0..0000000000
--- a/test/units/modules/network/f5/test_bigiq_regkey_license_assignment.py
+++ /dev/null
@@ -1,141 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2017, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigiq_regkey_license_assignment import ModuleParameters
- from library.modules.bigiq_regkey_license_assignment import ModuleManager
- from library.modules.bigiq_regkey_license_assignment import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
- from test.units.compat.mock import patch
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigiq_regkey_license_assignment import ModuleParameters
- from ansible.modules.network.f5.bigiq_regkey_license_assignment import ModuleManager
- from ansible.modules.network.f5.bigiq_regkey_license_assignment import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
- from units.compat.mock import patch
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters_unmanaged(self):
- args = dict(
- pool='foo-pool',
- key='XXXX-XXXX-XXXX-XXXX-XXXX',
- device='1.1.1.1',
- managed=False,
- device_username='admin',
- device_password='secret',
- device_port='8443'
- )
-
- p = ModuleParameters(params=args)
- assert p.pool == 'foo-pool'
- assert p.key == 'XXXX-XXXX-XXXX-XXXX-XXXX'
- assert p.device == '1.1.1.1'
- assert p.managed is False
- assert p.device_username == 'admin'
- assert p.device_password == 'secret'
- assert p.device_port == 8443
-
- def test_module_parameters_managed(self):
- args = dict(
- pool='foo-pool',
- key='XXXX-XXXX-XXXX-XXXX-XXXX',
- device='1.1.1.1',
- managed=True,
- )
-
- p = ModuleParameters(params=args)
- assert p.pool == 'foo-pool'
- assert p.key == 'XXXX-XXXX-XXXX-XXXX-XXXX'
- assert p.device == '1.1.1.1'
- assert p.managed is True
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
- self.patcher1 = patch('time.sleep')
- self.patcher1.start()
-
- def tearDown(self):
- self.patcher1.stop()
-
- def test_create(self, *args):
- set_module_args(dict(
- pool='foo-pool',
- key='XXXX-XXXX-XXXX-XXXX-XXXX',
- device='1.1.1.1',
- device_username='admin',
- device_password='secret',
- managed='no',
- state='present',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- required_if=self.spec.required_if
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
- mm.wait_for_device_to_be_licensed = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigiq_regkey_pool.py b/test/units/modules/network/f5/test_bigiq_regkey_pool.py
deleted file mode 100644
index 0d368e22f3..0000000000
--- a/test/units/modules/network/f5/test_bigiq_regkey_pool.py
+++ /dev/null
@@ -1,109 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (c) 2017 F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigiq_regkey_pool import ModuleParameters
- from library.modules.bigiq_regkey_pool import ApiParameters
- from library.modules.bigiq_regkey_pool import ModuleManager
- from library.modules.bigiq_regkey_pool import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigiq_regkey_pool import ModuleParameters
- from ansible.modules.network.f5.bigiq_regkey_pool import ApiParameters
- from ansible.modules.network.f5.bigiq_regkey_pool import ModuleManager
- from ansible.modules.network.f5.bigiq_regkey_pool import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- description='this is a description'
- )
-
- p = ModuleParameters(params=args)
- assert p.description == 'this is a description'
-
- def test_api_parameters(self):
- args = load_fixture('load_regkey_license_pool.json')
-
- p = ApiParameters(params=args)
- assert p.description == 'this is a description'
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create(self, *args):
- set_module_args(dict(
- name='foo',
- description='bar baz',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode
- )
-
- # Override methods in the specific type of manager
- mm = ModuleManager(module=module)
- mm.exists = Mock(return_value=False)
- mm.create_on_device = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigiq_utility_license.py b/test/units/modules/network/f5/test_bigiq_utility_license.py
deleted file mode 100644
index 7aea7f081a..0000000000
--- a/test/units/modules/network/f5/test_bigiq_utility_license.py
+++ /dev/null
@@ -1,113 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2017, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigiq_utility_license import ModuleParameters
- from library.modules.bigiq_utility_license import ModuleManager
- from library.modules.bigiq_utility_license import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
- from test.units.compat.mock import patch
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigiq_utility_license import ModuleParameters
- from ansible.modules.network.f5.bigiq_utility_license import ModuleManager
- from ansible.modules.network.f5.bigiq_utility_license import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
- from units.compat.mock import patch
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters(self):
- args = dict(
- license_key='XXXX-XXXX-XXXX-XXXX-XXXX',
- accept_eula=True,
- )
-
- p = ModuleParameters(params=args)
- assert p.license_key == 'XXXX-XXXX-XXXX-XXXX-XXXX'
- assert p.accept_eula is True
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
- self.patcher1 = patch('time.sleep')
- self.patcher1.start()
-
- def tearDown(self):
- self.patcher1.stop()
-
- def test_create(self, *args):
- set_module_args(dict(
- license_key='XXXX-XXXX-XXXX-XXXX-XXXX',
- accept_eula=True,
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- required_if=self.spec.required_if
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
- mm.wait_for_initial_license_activation = Mock(return_value=True)
- mm.wait_for_utility_license_activation = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True
diff --git a/test/units/modules/network/f5/test_bigiq_utility_license_assignment.py b/test/units/modules/network/f5/test_bigiq_utility_license_assignment.py
deleted file mode 100644
index 406c277115..0000000000
--- a/test/units/modules/network/f5/test_bigiq_utility_license_assignment.py
+++ /dev/null
@@ -1,134 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright: (c) 2017, F5 Networks Inc.
-# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-import os
-import json
-import pytest
-import sys
-
-if sys.version_info < (2, 7):
- pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
-
-from ansible.module_utils.basic import AnsibleModule
-
-try:
- from library.modules.bigiq_utility_license_assignment import ModuleParameters
- from library.modules.bigiq_utility_license_assignment import ModuleManager
- from library.modules.bigiq_utility_license_assignment import ArgumentSpec
-
- # In Ansible 2.8, Ansible changed import paths.
- from test.units.compat import unittest
- from test.units.compat.mock import Mock
-
- from test.units.modules.utils import set_module_args
-except ImportError:
- from ansible.modules.network.f5.bigiq_utility_license_assignment import ModuleParameters
- from ansible.modules.network.f5.bigiq_utility_license_assignment import ModuleManager
- from ansible.modules.network.f5.bigiq_utility_license_assignment import ArgumentSpec
-
- # Ansible 2.8 imports
- from units.compat import unittest
- from units.compat.mock import Mock
-
- from units.modules.utils import set_module_args
-
-
-fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
-fixture_data = {}
-
-
-def load_fixture(name):
- path = os.path.join(fixture_path, name)
-
- if path in fixture_data:
- return fixture_data[path]
-
- with open(path) as f:
- data = f.read()
-
- try:
- data = json.loads(data)
- except Exception:
- pass
-
- fixture_data[path] = data
- return data
-
-
-class TestParameters(unittest.TestCase):
- def test_module_parameters_unmanaged(self):
- args = dict(
- offering='asdf',
- key='XXXX-XXXX-XXXX-XXXX-XXXX',
- device='1.1.1.1',
- managed=False,
- device_username='admin',
- device_password='secret',
- device_port='8443'
- )
-
- p = ModuleParameters(params=args)
- assert p.offering == 'asdf'
- assert p.key == 'XXXX-XXXX-XXXX-XXXX-XXXX'
- assert p.device == '1.1.1.1'
- assert p.managed is False
- assert p.device_username == 'admin'
- assert p.device_password == 'secret'
- assert p.device_port == 8443
-
- def test_module_parameters_managed(self):
- args = dict(
- offering='asdf',
- key='XXXX-XXXX-XXXX-XXXX-XXXX',
- device='1.1.1.1',
- managed=True,
- )
-
- p = ModuleParameters(params=args)
- assert p.offering == 'asdf'
- assert p.key == 'XXXX-XXXX-XXXX-XXXX-XXXX'
- assert p.device == '1.1.1.1'
- assert p.managed is True
-
-
-class TestManager(unittest.TestCase):
-
- def setUp(self):
- self.spec = ArgumentSpec()
-
- def test_create(self, *args):
- set_module_args(dict(
- offering='asdf',
- key='XXXX-XXXX-XXXX-XXXX-XXXX',
- device='1.1.1.1',
- device_username='admin',
- device_password='secret',
- managed='no',
- state='present',
- provider=dict(
- server='localhost',
- password='password',
- user='admin'
- )
- ))
-
- module = AnsibleModule(
- argument_spec=self.spec.argument_spec,
- supports_check_mode=self.spec.supports_check_mode,
- required_if=self.spec.required_if
- )
- mm = ModuleManager(module=module)
-
- # Override methods to force specific logic in the module to happen
- mm.exists = Mock(side_effect=[False, True])
- mm.create_on_device = Mock(return_value=True)
- mm.wait_for_device_to_be_licensed = Mock(return_value=True)
-
- results = mm.exec_module()
-
- assert results['changed'] is True